Programmiersprachen für die Schule: welche scheinen am sinnvollsten?
-
Noch etwas:
Anderer Vorschlag schrieb:
Und das man für die Schule keine im professionellen Umfeld eingesetzte Programmiersprache benötigt, haben wir hier im Laufe des Threads ja schon geklärt, daher ist D hier kein Problem.
Was jetzt nicht bedeuten soll, dass D im Kern für die professionelle Softwareentwicklung ungeeignet wäre.
Das ist es nämlich nicht, es fehlt halt an den 3rd Party Librarys, Tools und Compilern, aber die Sprache an sich wäre für die professionelle Entwicklung durchaus geeignet, ganz im Gegenteil zu Sprachen wie z.B. Basic.
-
Anderer Vorschlag schrieb:
Wenn du deine Mitarbeiter aus Schülern rekrutierst, dann bist du schlichtweg selber schuld.
wo soll ich die sonst hernehmen
so viele studenten, die spaß an einer kleinen klitsche haben und sich nicht von großen bürogebäuden in zentraler lage angezogen fühlen gibt es nicht!
@edit: noch dazu dürfen die sich bewerben und werden nicht rekrutiert. wir sind ja nicht beim militär, wo nicht mal pubertierende jugendliche freiwillig hingehen.
-
zwutz schrieb:
hustbaer schrieb:
Ich behaupte mal dass das was dort gelehrt wird relativ wenig mit Mathe zu tun hat. Die lernen (zugegebenermassen halbwegs anspruchsvolles) Rechnen, ob man das als Mathematik bezeichnen kann weiss ich nicht.
Da auch "(halbwegs anspruchsvolles) Rechnen" ein Teil der Mathematik ist: ja, warum nicht?
Gut, OK.
Und als "Höhere Mathe" (Zitat "Mathe ist wichtiger")?
mMn. eindeutig nicht.
-
"Programmieren" lernt man in der Schule auch nicht, aber für einen Großteil der späteren Anforderungen wird auch einfaches "skripten/coden" reichen. Ist doch genau wiebei der Mathematik: Das bisschen Dummfug was man im späteren Leben mal brauchen könnte, das wird einem mitgegeben, und für den Rest muss man sich dann aktiv entscheiden.
-
nachtfeuer schrieb:
Und python? Wäre ich Lehrer, ich würde meinen SchülerInnen im Unterricht und auch generell schlichtweg verbieten, auch nur irgendwas mit python zu machen.
Das aus dem Munde eines Basic-Befürworters klingt bestenfalls uninformiert. Butter bei die Fische: wieviele Zeilen Python hast Du schon geschrieben?
-
Haben in der Schule C, Java und PHP gelernt.
Am sinnvollsten fand ich C. Dort hatten wir auch keinen ditaktisch super Lehrer. Er schrieb zwar void main und hatte auch sonst ein paar Dinge nicht ganz so perfekt gemacht, aber heee, er konnte die Dinge super erklären und vor allem hat er uns die Grundkonzekpte zum Erstellen eines Programms nähergebracht: Verzweigungen, Schleifen, Variablen, Konsolen IO, File IO, einfache Sortierverfahren, Arrays,...
Hat aber nur eine Handvoll der Leute kapiert, die anderen haben sich halt irgendwie durchgemogelt. Mir hat es aber sehr geholfen damals.Java wäre ja eigentlich auch keine schlechte Idee, Problem war bei uns nur dass unser Lehrer keinen Plan von Java hatte. Er versuchte uns OOP näherzubringen, aber im Nachhinein muss ich sagen dass er wohl echt keinen Plan hatte. In der letzten Stunde des Fachs sein Kommentar zu einer Frage die er nicht beantworten konnte: "Ja, lassen wir es, ich bin kein Java Programmierer, und ihr seid auch keine Java Programmierer".
PHP fand ich hingegen wieder sehr spannend! Da hatte man sofort Ergebnisse. Und die Sprache ist auch recht tolerant gegenüber schlampiger Programmierung.
PHP hat noch die größte Begeisterung im "Publikum" ausgelöst, und ich denke, darum geht es: Den Leuten einen Einblick in ein Fachgebiet zu geben. Und wenn man bunte Websites programmiert, so ist das sicher ein motivierender Einstieg in die Thematik.Was solls. Letztendlich bin ich der einzige der heute in der SW Entwicklung arbeitet. In der Uni haben wir auch einiges gelernt. Aber das meiste Wissen hab ich mir selber beigebracht. Von daher finde ich es in der Schule vor allem wichtig, dass man die Leute begeistert. Wer dann programmieren will, muss sowieso noch einiges selber lernen.
Meine Wertung: C > PHP > Java
Die Wertung der anderen in der Klasse: PHP > C > JavaP.S.: Ich denke, wenn meine Schulkollegen damals meinen Gehaltszettel von heute sehen würden, wäre bei gewissen Leuten die Begeisterung fürs Programmieren doch etwas größer gewesen
-
sry, hab natürlich "...Dort hatten wir auch einen ditaktisch super Lehrer..." gemeint.
-
nghjghjgh schrieb:
PHP fand ich hingegen wieder sehr spannend! Da hatte man sofort Ergebnisse. Und die Sprache ist auch recht tolerant gegenüber schlampiger Programmierung.
Zu tolerant für meinen Geschmack:
$zinssatz = 1.03; $summe = 1205; $jahre = 4; $aufschlagsumme = 204.3; // einmalig $berechneterwert = $zinssatz * $summe * $jahre; .... %berechenterwert += $aufschlagsumme; echo "Das Ergebnis lautet" + $berechneterwert;
Das Programm enthält einen Fehler der als Beispiel zeigen soll,
wie leicht es möglich ist, in einem etwas komplexeren Programmcode
Stunden für die Bugsuche zu verschwenden.Bei diesen 11 Zeilen mag er noch leicht zu finden sein, bei komplexeren Programmen wird's zur Tortur.
Da liebe ich unter den Scriptsprachen eher Python (oder richtige Programmiersprachen wie C, C++ usw.), wer den Fehler findet, der wird wissen warum.
Eines habe ich bei PHP jedenfalls gelernt.
Wenn man in PHP programmiert, dann sollte man entweder eine gute IDE oder einen sehr guten umfangreichen Editor verwenden, welcher eine ganz bestimmte Funktionalität haben sollte, die ich hier erstmal nicht nennen werde, aber sofort ersichtlich und klar ist, wenn man den Bug findet.PHP hat noch ein paar weitere schwere Mängel, da wäre noch einer, den ich hier noch gerne anführen würde, aber das liegt jetzt schon ein paar Jahre zurück, dass ich das letzte mal in PHP programmiert habe und ich kann mich nicht mehr an diesen erinnern, außer das er die Bugsuche ebenfalls erschwerte.
Aber wer ein paar Stunden mit PHP programmiert, sollte selbst darauf kommen.
Ansonsten eben mithilfe von google.Von daher finde ich es in der Schule vor allem wichtig, dass man die Leute begeistert. Wer dann programmieren will, muss sowieso noch einiges selber lernen.
Deswegen plädiere ich für D an den Schulen.
Meine Wertung: C > PHP > Java
Die Wertung der anderen in der Klasse: PHP > C > JavaJava ist alleine deswegen schon für Schulen ungeeignet, weil es vom Nutzer erwartet, dass dieser den Code schön formal in eine bestimmte Form preßt, denn Java ist hier nicht sehr tolerant und wirft gerne Exceptions mit denen ein Anfänger meist nicht umgehen kann.
Desweiteren muss erstmal nen Haufen OOP und formalen Overhead gelernt werden, um damit erste Erfolge feiern zu können.C ist da für die ersten Schritte wesentlich anspruchsloser und IMO intuitiver zu lernen.
Erst im fortgeschrittenen Stadium wird's mit Java einfacher und bequemer als mit C.P.S.: Ich denke, wenn meine Schulkollegen damals meinen Gehaltszettel von heute sehen würden, wäre bei gewissen Leuten die Begeisterung fürs Programmieren doch etwas größer gewesen
Wenn's nur ums Geld verdienen geht, dann gibt es wesentlich bessere Studiengänge in denen man mehr Geld für weniger Aufwand und anspruchslosere Arbeit bei gleichzeitig höherer sozialer Anerkennung verdienen kann, als Informatik.
Wenn's also dumm läuft, dann hast du genau so einen ehemaligen Schulkollegen, bei dem du dann vor Neid erblassen wirst.
Was lernen wir daraus?
Informatik studiert man aus Leidenschaft und nicht wegen den Verdienstmöglichkeiten.
-
nghjghjgh schrieb:
P.S.: Ich denke, wenn meine Schulkollegen damals meinen Gehaltszettel von heute sehen würden, wäre bei gewissen Leuten die Begeisterung fürs Programmieren doch etwas größer gewesen
Ich weiß nicht... Wenn ich so dran denke, dass grad die Leute, die in der Schule die ganzen Jahre wesentlich schlechter waren als ich dann zu einem Großteil BWL studiert haben und jetzt wohl zum Teil deutlich mehr verdienen als ich und in irgenwelchen "wichtigen" Managerpositionen sind, muss ich mich schon fragen, wer im Endeffekt schlauer war.
-
Es geht ja nicht darum, die perfekte Sprache den Schülern zu zeugen, sondern eine einfache Sprache, in der man gewisse Grundkonzepte ohne viel Overhead zeigen kann. Und genau dafür ist PHP gut geeignet. Und da das Web heute allgegenwertig ist, schadet etwas PHP und HTML sowieso keinem.
Dass PHP seine Macken hat glaub ich dir schon, aber es ist eben verdammt einfach!Eventuell wäre auch Basic geeignet, kenn ich nur von Excel Makros und fand die Sprache ziemlich simpel.
Zu D kann ich nichts sagen, da ich es noch nie verwendet habe.Wenn's nur ums Geld verdienen geht, dann gibt es wesentlich bessere Studiengänge in denen man mehr Geld für weniger Aufwand und anspruchslosere Arbeit bei gleichzeitig höherer sozialer Anerkennung verdienen kann, als Informatik.
Wenn's also dumm läuft, dann hast du genau so einen ehemaligen Schulkollegen, bei dem du dann vor Neid erblassen wirst.
Was lernen wir daraus?
Informatik studiert man aus Leidenschaft und nicht wegen den Verdienstmöglichkeiten.Na klar wirds auch Leute geben die mehr verdienen, aber ich bin mir ganz sicher dass ich im oberen Viertel liege.
Man kann also als Informatiker oder Ingenieur nicht wirklich jammern über schlechte Bezahlung. Die BWLer die ich kenne verdienen jedenfalls alle weniger als ich. Ist also nicht so dass man BWL macht und der Spitzenverdiener ist. Man muss schon auch gut und leidenschaftlich im Beruf sein. Über das gut lässt sich streiten, aber zumindest leidenschaftlich bin ich in meinem Beruf!
Natürlich gibts BWLer die mehr verdienen als Techniker, aber ich denke im Schnitt ist man als Techniker schon besser dran.Die soziale Anerkennung ist mit egal, es geht nur darum, was ich vom Programmieren halte, und ich finde diesen Job sehr kreativ und fordernd, ich würde niemals mit einem der Banker oder Anwälte tauschen wollen.
P.S.: Klär mich doch bitte über das PHP Beispiel auf, würd mich interessieren was da los ist!
-
nghjghjgh schrieb:
Es geht ja nicht darum, die perfekte Sprache den Schülern zu zeugen, sondern eine einfache Sprache, in der man gewisse Grundkonzepte ohne viel Overhead zeigen kann. Und genau dafür ist PHP gut geeignet.
Nein.
PHP zeigt wie man es nicht machen soll.Die Sprache ist inkonsistent und die Library ist noch inkonsistenter.
Die Leute schauen sich ja ab wie etwas funktioniert anhand der Tools die sie haben. Und wenn die Tools inkonsistent sind, dann werden die Leute das auch werden.
Und man muss zum lernen zwingend eine Sprache mit starker Typisierung nehmen.
Python ist da IMHO ideal. Es erfuellt alle Anforderungen und ist als Bonus auch noch Praxisrelevant.
Die Anforderungen sind:
Starke Typisierung
Saubere und Konsistente Syntax
Wenig BoilerplateWelche Anforderung denkt ihr sind sonst noch wichtig?
-
Python ist da IMHO ideal.
Ich halte Python noch immer fuer ein verkapptes Scheme. Ich mag es nicht, genauso mag ich D nicht. Aber das soll jeder halten wie er will.
Ich habe damals mit Logo (Schildroete zeichnet Figuren), pbasic (Sternchen fliegen uber den Bildschirm), Pascal (Roboter muss aus Labyrinth finden) angefangen. Das sind keine Sprachen sondern ganze Frameworks, die ein engen Bereich abstecken. Im Falle von Logo bzw. Roboter ist es eine DSL.
Wichtig fuer eine Einsteigersprache:
- minimal bzw. nicht zu viel
- auf bekannte Konzepte aufbauen (tja das ist wohl unter anderem Mathe)
- "kindgerechte" Literatur
-
Sollte die Frage nicht eher heißen: Wie kann man junge Leute für das Thema begeistern?
Deine Punkte sind aus der Sicht eines Informatikers. Ob junge Leute was im Informatik Unterricht lernen, hängt garantiert nicht davon ab, ob die Sprache stark oder schwach typisiert ist. Hauptsache sie ist einfach und zeigt ohne viel Overhead wie Programmieren funktioniert, und sollte noch dazu möglichst schnell zu Erfolgserlebnissen führen.
-
nghjghjgh schrieb:
Ob junge Leute was im Informatik Unterricht lernen, hängt garantiert nicht davon ab, ob die Sprache stark oder schwach typisiert ist.
Schule ist so oder so ungeeignet den Leuten etwas beizubringen. Das funktioniert Konzeptbedingt nicht.
-
Shade Of Mine schrieb:
Python ist da IMHO ideal. Es erfuellt alle Anforderungen und ist als Bonus auch noch Praxisrelevant.
Die Anforderungen sind:
Starke Typisierungreden wir da von der selben, oder gibt es python in unterschiedlichen ausführungen?
-
nghjghjgh schrieb:
P.S.: Klär mich doch bitte über das PHP Beispiel auf, würd mich interessieren was da los ist!
Okay, also erstmal ist das völlig gültiger PHP Code und genau da liegt das Problem.
Aber schauen wir uns mal den gleichen Code an, wie er in C99 aussehen würde, dann fällt es sofort auf:
double zinssatz = 1.03; double summe = 1205.0; double jahre = 4.0; double aufschlagsumme = 204.3; // einmalig double berechneterwert = zinssatz * summe * jahre; .... berechenterwert += aufschlagsumme; printf("Das Ergebnis lautet %2.f\n", berechneterwert);
Denn der Compiler würde dann z.B. melden:
xxx.c:9:1: error: 'berechenterwert' undeclared (first use in this function)Die Variable berechenterwert gibt es nicht, sie hat nur einen Buchstabendreher drin, gemeint war nämlich die Variable berechneterwert.
Aber PHP schluckt das runter, denn für PHP ist das einfach eine neue Variable neben der bestehenden, es ist gültiger Code und PHP tut deswegen so, als wäre alles in Ordnung und als Benutzer kann man dann Fehler dieser Art suchen.
Insbesondere Anfänger dürfte das schwer zu schaffen machen, denn auf die richtige Variablenschreibweise achtet man erst dann ganz gezielt, wenn man schon einmal genau in diese Mine getreten ist und Stundenlang damit Zeit verbrachte, einen Bug zu finden, der die ganze Zeit vor den Augen war, aber schlichtweg übersehen wurde.So etwas kann einem in C, C++ oder Java nicht passieren, denn jede Variable, die verwendet werden soll, muss zuvor auch deklariert werden.
In PHP fehlt also schlichtweg der Zwang vor der Benutzung einer Variable ein Schlüsselwort wie z.B. def oder var zu Definition der Variablen davorzuschreiben.
Und das ist ein Fehler, den die PHP Erfinder verbockt haben, sie hätten ihre dynamische Typisierung ja durchaus beibehalten können, aber ein Schlüsseltwort zur Definition hätten sie schon vorschreiben können.
Dann hätte das z.B. so aussehen können:def x1 = 3.3 x2 = x1 + 3; // ERROR x2 does not exist
Das ist also ein schwerer Schnitzer unter vielen in PHP.
Und warum man nun einen ganz besonders guten Editor für PHP braucht, der auch eine ganz bestimmte Funktion haben sollte, darauf komme ich jetzt:
Schreibt man mit Editoren wie gedit oder notepad PHP Code, dann kann einem obiges sehr leicht passieren.
Anders sieht es allerdings bei Editoren aus, die einem die im Code verwendeten Variablen in einer Liste in der Seitenleiste anzeigt.Dann findet man solche Buchstabendreher sehr schnell, denn wenn dann "$berechneterwert" scheinbar zweimal in der Liste auftaucht, dann schaut man schon genauer hin und mit guten Editoren kann man dann auch gleich an die entsprechende Position springen, wo diese Variable falsch bezeichnet wurde und den Fehler schnell korrigieren.
Deswegen sollte man auf einen ordentlichen Editor achten, wenn man in PHP programmiert.
-
Shade Of Mine schrieb:
Python ist da IMHO ideal. Es erfuellt alle Anforderungen und ist als Bonus auch noch Praxisrelevant.
Die Anforderungen sind:
Starke Typisierung
Saubere und Konsistente Syntax
Wenig BoilerplateWelche Anforderung denkt ihr sind sonst noch wichtig?
Ich halte es durchaus für lohnenswert, wenn man weiß, wie Datenwerte im Speicher abgelegt werden.
Deswegen sollte man z.B. wissen, dass eine einfache Liste neben dem eigentlichen Datenwert pro Listeneintrag auch noch eine Adresse enthält, die auf den nächsten Listeneintrag zeigt.
Deswegen sollte es schon eine Programmiersprache sein, die den Zugriff auf die direkten Adressen erlaubt und somit auch Zeiger anbietet.
Man bekommt dadurch also eine bessere Vorstellung der Interna und versteht auch was es sich z.B. mit einem Char Array auf sich hat.
Natürlich könnte man sich jetzt darüber streiten ob das überhaupt wichtig für Schüler ist, die außerhalb des Info Unterrichst sowieso nie wieder progammieren werden, aber wenn Informatik in der Schule bedeuten soll, den Computer auch von einer halbwegs brauchbaren Low Level Ebene zu verstehen, dann wird man um Zeiger nicht herumkommen.
An den Unis ist inzwischen, wie hier schon einer angemerkt hat, Java die typische Lehrsprache und das der Hintergrund über Zeiger & Adressen fehlt kann dann schon ein Problem in Java werden, wenn man nicht wirklich weiß, wie Listen intern funktionieren.
Wer aber C/C++ oder D lernt, der weiß das.
-
.oO schrieb:
Shade Of Mine schrieb:
Python ist da IMHO ideal. Es erfuellt alle Anforderungen und ist als Bonus auch noch Praxisrelevant.
Die Anforderungen sind:
Starke Typisierungreden wir da von der selben, oder gibt es python in unterschiedlichen ausführungen?
Python besitzt zwar eine relativ starke Typisierung, allerdings wird dies für den Programmierer nicht ersichtlich (Variablen sind nur typlose Referenzen auf Objekte); Duck-Typing wird verwendet.
-
danke für die PHP Erklärung. Na mein letztes mal ist schon lange her ... also mit PHP mein ich
Aber solche Fehler sind wirklich blöd zum Finden!Wenn ich sowas sehe, bin ich über den strengen C++ Compiler ja wieder sehr dankbar.
Nagut, genug diskutiert, ich geh schlafen.
-
Anderer Vorschlag schrieb:
Deswegen sollte man auf einen ordentlichen Editor achten, wenn man in PHP programmiert.
Ein guter Editor sagt dir, dass du eine Variable vor ihrer Initialisierung verwendets.
Anderer Vorschlag schrieb:
Ich halte es durchaus für lohnenswert, wenn man weiß, wie Datenwerte im Speicher abgelegt werden.
Wozu?
Man bekommt dadurch also eine bessere Vorstellung der Interna und versteht auch was es sich z.B. mit einem Char Array auf sich hat.
Und wenn man nie in seinem leben C++ anfasst, dann ist dieses Wissen unnuetz.
Und selbst in C++ ist es nicht wichtigDen Computer zu verstehen hat mit Programmierung nichts zu tun. Deshalb sind Einfuehrungen in die Programmierung die gleich mal mit Bitshift anfangen komplett fur die Katze.
Es geht beim Programmieren darum, abstrakte Konzepte zu Code zu bringen. Zeigermanipulation ist da vollkommen uninteressant. Ich habe jetzt schon einigen Leuten diverse Sprachen beigebracht - und das wichtigste fuer das Verstaendnis war immer die Abstraktion.
Erstmal ist eine Liste ein ding, in das man dinger steckt und wieder rausholen kann. Weil es einfach oft notwendig ist, eine Sammlung von Dingern zu haben. Wie das funktioniert, ist extrem lange vollkommen uninteressant. Es ist einfach ein Werkzeug.
So Sachen wie die richtige Datenstruktur zu waehlen (sprich: linked list, array, tree,...) ist etwas, dass man sich erst ueberlegt wenn man grundlegend Programmieren kann.