Die bessere Programmiersprache für den Informatikunterricht?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Hallo zusammen,
wie vielleicht einige wissen, bin ich Lehrer an einem Gymnasium und quasi Quereinsteiger im Fach Informatik, also mit Sicherheit noch lernfähig (und willig ;))
Eine Veranstaltung zum neuen Lehrplan hat mich aber dazu bewogen meine Gedanken/Erfahrungen mal aufzuschreiben, wie die momentane Situation aussieht:

http://blog.pohlers-web.de/python-die-b ... nterricht/

Auch wenn ich wenig Chancen auf Erfolg sehe, plane ich mich an die Landesregierung zu wenden und zumindest mal Python in die Diskussion zu bringen. Hier bräuchte ich eure Hilfe, da ihr mit Sicherheit noch mehr konstruktive Argumente für den Einsatz von Python habt.

Ich würde mich sehr über konstruktive Kritik freuen, entweder hier oder in den Kommentaren im Blog.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Fairerweise sollte man natürlich ein paar Punkte ansprechen:
Gemeinsamkeiten(plattformunabhängig) und Unterschiede()
Unterschiede der Paradigmen: Java OOP, Python vieles aus unterschiedlichen Richtungen(OOP, Funktional)
Konzepte einfach mal gängige Beispiel gegenüberstellen und zu zeigen welcher Code klarer/verständlicher ist. In der Schule waren das immer Sortieralgorithmen, Zeiger etc.
Python 2er, 3er Problematik, deine Codebeispiele vermischen das auch(int(raw_input()))
Flache Lernkurve bei Python, schnelles testen über IDLE.
Ich würde noch die Entwicklungsumgebungen ansprechen. Java ohne IDE macht heute keiner mehr(Hardwareintensiv). Python kommt ganz gut ohne aus.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@EmaNymton: Die Aussage Java sei rein objektorientiert ist ein bisschen irreführend. In gewisser Weise ist Python ”objektorientierter” weil mehr ”Dinge” als in Java in Python Objekte sind. Zum Beispiel auch das was in Java die ”primitiven” Typen sind, also Zahlen Beispielsweise und Packages, Module, Funktionen, Klassen, und Methoden sind in Python auch alles Objekte und in Java, sofern vorhanden, nicht. In Python ist alles was man an einen Namen binden kann, also jeder Wert, ein Objekt.

Das Java-„Hallo Welt”-Beispiel ist kein Stück objektorientierter als das Python-Gegenstück. Man muss halt nur mehr Aufwand beim Aufschreiben dieses rein imperativen Codes aufwenden.

Das eine Sprache rein objektorientiert ist ist, hat übrigens nicht zwingend zur Folge das jedes Programm eine oder mehrere Klassen braucht. Es heisst nicht zufällig *objekt*orientiert und nicht *klassen*orientiert. Es gibt objektorientierte Programmiersprachen die tatsächlich nur Objekte kennen und kein explizites Klassenkonstrukt. Historisches Beispiel ist Self, und ein etwas modernerer ein Vertreter dieser Sprachen ist Io. Und damit es nicht ganz so exotisch wird: JavaScript kann man auch dazu zählen.

Mal das „Hallo Welt” in einer komplett objektorientierten Programmiersprache ohne Klassen und ohne imperative Syntax (was sich letztendlich ziemlich funktional ”anfühlt”):

Code: Alles auswählen

"Hallo Welt" println
Den Benutzer nach einer Zahl fragen ist geringfügig auswändiger, aber IMHO ganz gut lesbar:

Code: Alles auswählen

"Bitte gib eine Zahl ein: " print
zahl := File standardInput readLine asNumber
Datenkapselung würde ich nicht mit Zugriffsschutz gleich setzen. Der kann das Kapseln erzwingen, aber wenn man interna als solche kennzeichnet, per Konvention mit einem führenden Unterstrich, dann ist die Kapselung im Grunde gleich. Bei Datenattributen schreibt man in Java Getter und Setter nicht wegen der Kapselung, denn die hebt man mit diesen Methoden ja faktisch auf, sondern weil man sicherstellen will, dass Client-Code nicht geändert werden muss wenn man aus einem einfachen Datenattribut etwas berechnetes macht. Das muss man bei Python nicht machen, weil es dort `property()` gibt und man diese Umstellung jederzeit machen kann, ohne das sich die API der Klasse ändert.

Bei der Sache mit dem „Stift” frage ich mich gerade ob Du das `turtle`-Modul in der Standardbibliothek kennst‽ Das kann man auch in Python mit Bordmitteln und ohne Klassen machen. Aber auch mit mehreren `Turtle`-Exemplaren wenn man möchte. Könntest Du auf jeden Fall als Argument anführen für Kollegen die auf traditionelle LOGO-/Turtlegrafik nicht verzichten wollen.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Du hast den Punkt bereits angesprochen. Python ist wesentlich Fassetten reicher. Multiparadigmatisch, 2.x, 3.x Unterschied.
In Java hingegen gibt es nur eine Richtung. Man kann nicht großartig auswählen wie man etwas tun möchte.

Eine Klasse aus 25 Schüler, die Python lernen, werden recht viele unterschiedliche Ansätze für eine Problemstellung umsetzen.
In Java ist der Radius wie etwas umgesetzt werden kann begrenzter.

Daraus folgt eine einfachere Benotung und Korrektur der Arbeiten, einheitliche Vorgehensweise, die primär für die Prüfung wichtig ist.
Java ist, soweit ich informiert bin, auch im Informatikstudiengang die bevorzugte Sprache. Also ist auch hier der Ansatz bereits vor dem Studiengang mit der Sprache vertraut zu werden nicht verkehrt.

Meiner Meinung nach eine optimale Wahl eine Standardsprache festzulegen und sich für Java zu entscheiden.
BlackJack

@Dami123: Also ich habe im Studium Java-Quelltext von Mitstudenten gesehen der sah nicht so aus als wenn es nur eine Richtung gibt wie man etwas schreiben kann. Man kann sich da wunderbar in Klassen- und Interface-Hierarchien verheddern als Anfänger, und sehr komische Konstrukte basteln.

Die meisten Schüler, habe ich jedenfalls von hier den Eindruck, werden nichts verwenden was nicht im Unterricht vorkam, und sich manchmal mit Händen und Füssen dagegen wehren wenn man ihnen einen einfacheren Weg vorschlägt, weil der nicht im Unterricht vorkam. Wenn Du denen in Python nur ``while`` beibringst, wird der Grossteil von sich aus keine ``for``-Schleife anfassen, selbst wenn sie sie verstehen und den Vorteil sehen. „Aber das hatten wir im Unterricht noch nicht…” :roll: Das da wirklich Paradigmenwildwuchs von den Schülern kommt, ist also eher unwahrscheinlich.

Die einfachere Korrektur und Benotung sollte nicht wichtiger sein als die Schüler zum selbstständigen Nachdenken und entwickeln von *eigenen* Lösungen anzuregen. Das was Du da beschreibst klingt irgendwie nach halb auswendig lernen von Standardwegen/Musterlösungen, damit der Lehrer es möglichst leicht hat.

Die meisten Informatikstudenten werden traditionell im ersten Semester erst einmal mit einer funktionalen Sprache beglückt. So etwas wie Haskell, Lisp, oder Scheme. Und dann kommt im zweiten Semester je nach Uni für OOP wohl am häufigsten Java, C#, oder C++. An ”meiner” Uni haben sie seit einiger Zeit Python zwischen Haskell und Java als Übergang geschoben. Parallel kommt in den hardwarenäheren Fächern „Rechnerarchitektur” o.ä. meistens irgend eine Art von Maschinensprache zum Einsatz. Wir hatten damals den MIPS-Befehlssatz und heute machen sie glaube ich mit dem virtuellen Mix-Kram von Knuth ihre Übungen. Welche Sprachen dann noch so kommen hängt stark von der Fächerwahl und den Dozenten ab. Richtung Betriebssysteme und Mikroprozessoren wird man ziemlich wahrscheinlich mit C in Kontakt kommen (Maustreiber für Minix schreiben, Sensoren auslesen, DMAs für Datenein-/ausgabe programmieren), das Frontend zum Projekt in der Datenbankvorlesung war in PHP, für ein Proseminar musste ich mich in ein Projekt aus C- und Tcl-Quelltext einarbeiten, und so weiter.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@Dami123: Mal ganz unabhängig von der Programmiersprache oder dem Fach: Du findest es wirklich erstrebenswert, dass kreative Lösungen oder andere Ansätze unterbunden werden, damit Klausuren leichter benotet werden können? Ist der Unterricht eigentlich an die Kinder gerichtet oder sollen Lehrer nur noch beschäftigt werden?
Das Leben ist wie ein Tennisball.
Benutzeravatar
HarteWare
User
Beiträge: 69
Registriert: Samstag 23. Februar 2013, 21:16
Wohnort: localhost

Bin grad noch heut morgen über das hier gestolpert, musste an den Thread denken, dacht ich poste es mal:

"requires less time, less lines of code, and less concepts to be taught to reach a given goal. […]
Finally programming in Python is fun! Fun and frequent success breed confidence and interest in
the student, who is then better placed to continue learning to program."
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Nicht damit der Lehrer es möglichst leicht hat und auch nicht um die Kreativität des Einzelnen möglichst ungebraucht zu lassen, sondern um einen gewissen Standard zu verwenden.
Ein Rahmenwerk nachdem vorgegangen wird. Und Java eignet sich meiner Meinung nach eben für Standard relativ gut.

Mit diesem Standard weiß man von Anfang an was von einen erwartet wird und können muss. Die Lehrer was sie unterrichten und können müssen. Schüler die von Anfang an wissen, das ihre Zukunft in naturwissenschaftlichen Fächer liegt, müssen sich nicht die Mühe machen mehr als den erwarteten Standard zu lernen.
Das hilft den Schülern wie den Lehrern z.B. durch standardisiertere Klausuren, die eben einfacherer zu korrigieren.

Das ein Standard die Kreativität hemmt wohl kaum. Kreativität ergibt sich aus der Aufgabenstellung.
BlackJack

@Dami123: Du verwendest ziemlich oft das Wort Standard ohne das mal zu konkretisieren. Was bedeutet das? *Warum* eignet sich Java besser als Python?

Warum kann man ein Rahmenwerk nach dem vorgegangen wird in Python nicht genau so gut umsetzen? Oder sogar besser? Zum Beispiel weil die Syntax einfacher ist, und man nicht gleich mit so viel Boilerplate anfangen muss wenn man die imperativen Grundlagen erklärt, wie man das bei Java machen muss. Man hat eine interaktive Shell in der man live Sachen ausprobieren und eigene Funktionen testen kann. Python-Quelltext lässt sich ohne fette IDE mit Unmengen an Funktionen und Menüs schreiben wo man als Benutzer zumindest mal ausloten muss wo die Menüs und Tastaturkürzel sind, die man tatsächlich braucht.

Und was ist mit den Schülern die sich selbst nicht in so einem Studium sehen? Muss man die unbedingt mit Java erschrecken? Insbesondere wenn ihnen Python Spass machen würde, und sie vielleicht am Ende doch ganz froh sind Programmieren gelernt zu haben, statt sich irgendwie durch den Informatikunterricht gequält zu haben.

Das Informatikstudenten deutlich mehr Sprachen als Java lernen müssen habe ich ja schon dargelegt. Je nach Uni ist Java nicht zwingend *die* Sprache mit der OOP gelehrt wird. Und wenn man nicht nur auf Informatiker sondern Naturwissenschaftler allgemein abzielt, ist die Wahrscheinlichkeit mit Java konfrontiert zu werden, nochmal deutlich kleiner. Da würde dann vielleicht R oder Matlab in der Schule mehr Sinn machen. Diese Sprachen sind aber nochmal deutlich unschöner und auch nicht so universell, wie man das gerne hätte. Bei Naturwissenschaft allgemein steigt die Wahrscheinlichkeit mit Python in Kontakt zu kommen dagegen nochmal, denn Scipy, Numpy & Co kommen ganz gut an, wie es aussieht.

Was die „standardisierten Klausuren” angeht: Ich würde auf einem Blatt Papiert ja lieber Python-Quelltext schreiben und auch korrigieren, als das mit Java-Quelltext tun zu müssen. Bei Algorithmen kommt es schliesslich darauf an die Idee rüber zu bringen, und da ist Python deutlich näher an dem Pseudocode dran, der seit deutlich längerer Zeit in Büchern über Algorithmen verwendet wird, als Java das ist.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

@BlackJack: Danke nochmal für die Klarstellung bzgl. Datenkapselung. Das wurde uns damals beim Kurs eben so "verkauft", dass wenn ein Zugriff auf die Attribute eines Objekts erfolgen soll, dieser unter der Kontrolle des Programmieres liegt, z.B. um ungültige Wertzuweisungen zu vermeiden. Das habe ich bisher unreflektiert übernommen. Deswegen hatte ich immer den Eindruck, Java "bevormundet" eher den Programmierer als Python, wenn es um Zugriff auf Attribute eines Objekts geht, gerade wenn die get oder set-Methode nur aus einer Zeile besteht, also gar keine Berechnung oder Prüfung durchgeführt wird, was im Anfängerunterricht ja eher die Regel ist.
Im Hinblick auf die API ist das einleuchtend. Kann man das so formulieren, dass man in Java quasi prophylaktisch den Zugriff auf die Attribute regelt und das in Python bei Bedarf über property() nachgeschoben werden kann?

Das turtle-Modul kenne ich und nutze es auch in Klasse 8. Dort ist es meiner Meinung nach auch für Schüler in diesem Alter motvierend, zu Beginn der Oberstufe finden es viele aber albern, Figuren zu zeichnen. Das ist aber auf jeden Fall ein guter Hinweis für Kollegen, die ihren Einstieg in der Einführungsphase weiterhin grafisch orientiert machen möchten!

@darktrym: Danke für deine Auflistung, die meisten deiner Punkte habe ich im meinem Blogeintrag ja schon angesprochen oder fandest du es zu kurz gefasst?

@HarteWare: Danke für das Zitat, habe dann auch die zugehörige Seite dazu gefunden ;)
http://www.ariel.com.au/a/teaching-programming.html
Ansonsten fand ich folgende Seite auch noch ganz lesenswert:
http://pythonconquerstheuniverse.wordpr ... omparison/
und werde da bestimmt noch das ein oder andere Beispiel mit aufnehmen.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

BlackJack hat geschrieben: Was die „standardisierten Klausuren” angeht: Ich würde auf einem Blatt Papiert ja lieber Python-Quelltext schreiben und auch korrigieren, als das mit Java-Quelltext tun zu müssen. Bei Algorithmen kommt es schliesslich darauf an die Idee rüber zu bringen, und da ist Python deutlich näher an dem Pseudocode dran, der seit deutlich längerer Zeit in Büchern über Algorithmen verwendet wird, als Java das ist.
Das kann ich bestätigen. Korrigieren von Python-Quellcode ist deutlich angenehmer als Java. Wäre noch ein weiteres Argument für Python, wobei ich mich wie gesagt noch am meisten mit Pseudo-Code anfreunden könnte, dann ist man in der Wahl der Sprache sowieso frei.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Da ich gestern Nacht gleich voll ins Offtopic abgedriftet bin: Den Text finde ich gut und er Spricht meiner Meinung nach die wichtigsten Punkte an.
EmaNymton hat geschrieben:Im Hinblick auf die API ist das einleuchtend. Kann man das so formulieren, dass man in Java quasi prophylaktisch den Zugriff auf die Attribute regelt und das in Python bei Bedarf über property() nachgeschoben werden kann?
Ja, ganz genau so ist es.

@Dami123: Du vermutest hier wohl einen Standard, den es in der Praxis and Universitäten überhaupt nicht gibt. In meinem ganzen Studium hatte ich vier Übungen in denen ich Java verwenden musste. Ansonsten gab es da einen breiten Mix über Assembler, C, C++, Haskell, Prolog, Shell-Skripte, VHDL, Pascal und Delphi. In meinem Bekanntenkreis sehe ich auch nicht, dass das irgendwie anders ist. Das Institut legt keine Sprache fest, diese ergeben sich üblicherweise aus der Vorlesung, bei Funktionaler Programmierung bietet sich zum Beispiel Haskell an, oder hängt von der zur Vorlesung gehörenden Arbeitsgruppe ab.

Daher sollte es Ziel der Schule sein Konzepte zu vermitteln und nicht das Lernen einer Programmiersprache. Und das geht meiner Meinung nach mit Python deutlich besser als mit Java.
Das Leben ist wie ein Tennisball.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Anspruch, der Informatikuntericht in der Schule wäre für ein Informatikstudium essentiell, ist aus meiner Sicht eine maßlose Selbstüberschätzung. Genauso wie es beim Mathematikunterricht, den Naturwissenschaften und jedem anderen Fach auch ist. Schulen sind immer noch allgemeinbildend und sollten gerade deshalb demjenigen, der nicht Informatik studiert zeigen, wie Programmieren geht. Dafür eine Programmiersprache zu nehmen, die nur im akademischen und business-appliance Bereich nennenswerte Verbreitung hat, ist damit zumindest sehr zu hinterfragen.
Noch mehr schockiert mich die Aussage, dass spezielle Javaklassen für den Schulunterricht unbedingt nötig sind, damit Java in der kürze der Zeit erlernbar wird. Das zieht meiner Meinung nach gleich mehrere Probleme nach sich: 1. es werden Insellösungen gelernt, die aus der eigentlichen Sprache eine Subsprache mit Framework macht. 2. kreative Schüler werden schnell an die Grenzen dieser Klassen stoßen und fragen, warum dies oder jenes nicht möglich ist und als einzige Lösung hören "ihr müßt alles bisherig Gelernte wieder vergessen und von Anfang an einen anderen Weg gehen". 3. da der Nutzerkreis sehr klein ist, ist die Entwicklung sehr aufwendig, und wahrscheinlich werden viele Bugs erst durch Schüler gefunden, die dadurch demotiviert und frustriert werden. 4. es gibt viele Insellösungen, die sich alle in ihrem Konzept, ihrer Mächtigkeit und ihrer Bedienung unterscheiden.
Durch meine eigene Erfahrung im Programmieruntericht von Schülern und Studenten weiß ich, wie nervend es ist, als Anfänger nach fehlenden Semikolons und Klammern suchen zu müssen. Da ich noch nie Python in diesem Rahmen unterrichtet habe, kann ich nur vermuten, dass Einrückungen gerade für Anfänger leichter verständlich sind.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Ein Standard ist genauso in Python umsetzbar, das hab ich auch nicht verneint.

Wie oben gesagt ist Java meiner Meinung nach besser geeignet. Jedoch hab ich keine große Pro/Kontra Liste erstellt, mit der ich diesem Ergebnis Standhaftigkeit verleihen kann.
Meine Meinung bezieht sich auf Abwägungen, die für mich persönlich am aussagekräftigsten sind. Wenn ich jedoch jeden Vergleich zwischen den Sprachen auseinanderpflücke und gegenüberstelle, macht Python klar das Rennen. Doch belastet mich auch die gelegentlich auftretende irrationale Sturheit mancher im Schulsystem tätigen Beamten. Wenn die Mehrheit der jetzt tätigen Informatiklehrer keine Zeile in Python geschrieben hat, dann kann man jede Diskussion von Anfang an vergessen. "Warum sollten wir unsere ganzen Lehrer umschulen lassen, das kostet Ressourcen die wir nicht ausgeben möchten, wenn das jetzige System doch wunderbar funktioniert."
Es gibt 5x mal Javaprogrammierer als in Python. Doch Python ist wesentlich einfacher zu erlernen.
Rein logisch ist Python die geeignetere Sprache um Schülern das Programmieren näher zu bringen. Doch leider ist Logik nicht die einzige Variable.

Weitreichendere Prüfungen in Informatik könnten hier eine Option sein. So, dass das jeweilige Bundesland den Support von verschiedenen Programmiersprachen anbietet. Die Lehrer hätten damit mehr Auswahl welche Sprache sie den Schülern beibringen möchten.
Ist jedenfalls Interessant an einer derartigen Diskussion beizutragen, denn meiner Meinung nach steigt seit geraumer Zeit das Interesse der Politik am Thema Informatik, bis ein mehr oder weniger großer Stein ins Rollen kommt.
BlackJack

@Dami123: Wenn man danach geht was die Mehrheit der Lehrer schreiben kann, dann wären wir wohl immer noch bei Pascal. :-) Und ich fürchte nicht wenige die heute Java-*Syntax* für ihren Unterricht verwenden, schreiben in Wirklichkeit nur verkleidete Pascal-Programme. Selbst in Python hatten wir hier ja schon Fälle von ”Python”-Quelltext aus Schulunterricht der auf den ersten Blick als Pascal erkennbar war.

Alles was für Python spricht, bezieht sich ja auch nicht nur auf Schüler, sondern auch auf Lehrer die entweder um- oder neu lernen müssen. Auch die können Python einfacher lernen und schneller, mehr, interessante Sachen mit der Sprache anstellen, im Vergleich zu Java. Bei Lehrern die neben Informatik auch Mathematik oder Physik oder ein anderes naturwissenschaftliches Fach unterrichten, kann ich mir bei Python auch eher vorstellen dass sie es dafür ebenfalls einsetzen können. Zum Beispiel in Form von Sage Notebooks.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Ja, durch die relativ einfache Syntax bietet Python auch den Naturwissenschaftler Wege ihre eigenen Interessen zu automatisieren. Doch Java ist derzeit als Standard angelegt und wird wohl nicht ohne Eigeninitiative von den Lehrern geändert. Zumindest meiner Erfahrung nach ist die Lehrerschaft nicht gerade sehr motiviert auf eigene Faust neue Wege einzuschlagen. Könnte sich aber ändern, wenn neue Nachzügler kommen und die alten Hasen ihren Posten verlassen.
Seit einiger Zeit steigt auch die Open-Hardware neben der Open-Software auf. Boards, Chips und auch schon ganze Laptops, die werden bald auch ihren Teil in Form von Unterrichtsmitteln finden.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Nur kurz zur Info, wenn es jemanden interessiert ;)

Ich habe von "höherer Stelle" ein paar Rückmeldungen erhalten, leider alle wie erwartet :/
Tenor: Wir können ihre Argumente gut nachvollziehen jedoch ist die Entscheidung zu Java gefallen. Mein Kompromiss mit dem Pseudo-Code wäre wie das Erlernen einer zweiten Programmiersprache und den Schülern nicht zumutbar.

aktueller Stand der Dinge ist: Ich darf Python zwar im Unterricht einsetzen, jedoch müssen die Schüler im schriftlichen Abitur Java-Quelltext lesen können (schreiben ist noch nicht mal verlangt!) und die zur Verfügung gestellten Klassen kennen.
Das ist für mich im Moment eine Zwickmühle, da ich ja primär die Schüler gut auf's Abitur vorbereiten will, ihnen aber auch das Fach Informatik interessant näher bringen will. Eine Idee unserer Fachkonferenz war es, die Schüler, die es wirklich als Abi-Fach nehmen, in einem Crash-Kurs kurz vor dem Abitur mit Java vertraut zu machen. Wir sprechen hier über maximal 1-2 Schüler pro Jahrgang und diese sind meistens sehr interessiert/motiviert, so dass man das ggf. auch außerhalb des regulären Unterrichts machen könnte. Die meisten nehmen das Fach bei uns sowieso als 4.Fach, wo ich Java nicht verwenden muss (ergibt bei einer mündlichen Prüfung von 20 Minuten ja auch wenig Sinn).

Eine Antwort auf eine Mail von mir im Hinblick auf die Verwendung von Pseudo-Code an eine noch "höhere Stelle" steht noch aus, aber ich habe wenig Hoffnung, dass ich dort etwas anderes zu hören bekomme :/

Wenn noch jemand eine grandiose Idee hat, wie man das Problem sonst lösen kann, ich bin für jeden konstruktiven Vorschlag offen/dankbar.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du könntest doch den umgekehrten Weg gehen und den interessierten Schülern zeigen, dass die Welt nicht nur aus Java besteht ;-)

Das Problem wird sein, dass Du im Zweifel Ärger mit allen möglichen Leuten bekommst, die das Abitur als reines Noten-Portfolio begreifen und eben nicht fürs Leben lernen, sondern für den NC oder den Golf von der Omi zum ABI. Diese werden Dich verteufeln, wenn Du nicht das für sie offensichtliche (also Java) lehrst. Sie werden auch kein Verständnis dafür aufbringen, dass Du mehr als reine Syntax vermitteln willst.

Klingt traurig, erscheint mir aber als wahrscheinlich (ich bin ein doppeltes Gymnasiallehrer-Kind; ich weiß leider nur zu gut, wie beschränkt und engstirnig viele Eltern und auch Schüler sind).

Sieh es tröstend: Dank Java8 kann man nun ja auch funktional angehauchte Programmierung mit Java zeigen :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Lemi89
User
Beiträge: 4
Registriert: Samstag 16. März 2013, 21:30

Hallo EmaNymton,

ich bin hier gerade über deinen Post gestolpert und dachte ich gebe dir eventuell mal etwas feedback wie wir bei uns in der Arbeitsgruppe Python benutzen und warum wir Java nicht bzw. es knall hart ignorieren.

Kurz zu unserer AG, wir forschen im Bereich der Biophysik mittels molekular Dynamik, müssen also massenhaft Daten durch unsere CPU's und vor allem die IO jagen (es sind öfters mal ein paar hundert GB). Früher war dieses Feld sehr FORTRAN lastig und auch heute existieren Unmengen an altem FORTRAN code (mit Vorliebe noch FORTRAN77), weswegen ich mir das mittlerweile auch schmerzlich beibringen musste (immerhin ist F95 Python erstaunlich ähnlich).

Ich habe vor ca. 1 1/4 Jahren mit Python angefangen zu programmieren und zwar als kompletter Anfänger. Hatte Programmieren weder in der Schule noch während meines Bachelor Studiums. Damals habe ich erst probiert mir Perl beizubringen, da das einer meiner Vorgänger benutzt hat und naja... heute kann mehr oder weniger niemand mehr seinen Quelltext lesen. Das hat mich dann auch sehr gestört weswegen ich mir dann wieder etwas anderes gesucht habe. Ich bin dann über die Community auf Python gekommen, da es zum einen gerade doch recht gehyped wird und zum anderen viele in unserem Bereich seit einiger Zeit in Python programmieren, weswegen eine Reihe exzellenter Librarys verfügbar ist.

Ich konnte relativ schnell das machen, was ich noch heute jeden Tag brauche, Daten einlesen, crunchen, plotten .... das ganze ging ohne IDE sondern schlichtweg mit dem Text Editor von statten. Mittlerweile bin ich zwar auf PyCharm umgestiegen (die es übrigens in einer free version gibt und excellent ist) trotzdem bräuchte ich in 90% der Fälle keine IDE selbst für große Projekte, wo es dann mal schnell ein paar tausend Zeilen Code werden. Mich selber hat immer motiviert, das alles sehr schnell ging und das ich vor allem dank IPython und Co schnell und einfach Code testen und benutzen konnte.

Mittlerweile muss jeder der bei uns anfängt Python lernen, lediglich meine Chefin weigert sich noch etwas, aber wenn man 30 Jahre lang F77 programmiert darf man das auch. Immerhin hat sie es jetzt doch endlich eingesehen spätestens nachdem ich ihr SymPy gezeigt hatte.

Python war immer schnell genug für alle Aufgaben und dank Numpy und co spart man sich viel Zeit. In den letzten Jahren habe ich auch Kurse in C und dem an den Unis bei Ingenieure sehr getypten Matlab gehabt und muss sagen, keine Sprache konnte mir bisher das bieten was mir Python bietet. Python ist schnell genug und dank Cython und f2py hatten wir noch nie Performance Probleme. Gerade dieses interagieren mit anderen Sprachen macht Python sehr mächtig wie ich finde, da es einem erlaubt, das beste zu kombinieren und sehr schnell und vor allem einfach glue code zu produzieren, welche meist 80-95% eine Projekts ausmacht.

Bzgl. den IDE Sachen möchte ich auch anfügen, das Programmieren mit IDE sehr viele Nachteile am Anfang hat. IDE's nehmen einem sehr sehr viel ab und man gewöhnt sich schnell an auf seine IDE zu vertrauen hinsichtlich Formatierung und Co. Ich finde es aber viel wichtiger per Hand lernen zu müssen, wie man guten Code schreibt. Noch heute bringe ich unseren studies Python ohne IDE bei und von Anfang an achte ich auf sauberen code. Erst nach 1-3 tagen wenn die Grundlagen sitzen, lasse ich sie an die IDE wobei für BA-Arbeiten viele dann bei IPython bleiben und hier sehr schönen Code produzieren.

Ich glaube also, dass es gut ist, wen du deinen Schülern Python beibringst, zum einen werden Sie später sicherlich was davon haben wenn sie mal in die NW's gehen und zum anderen ist vieles in Python viel einfach verständlich. Ein Beispiel ist Parallel Programmierung, welche ich heute viel wichtiger finde als OOP (ehrlich gesagt ist in den NW heute noch sicherlich 80% des codes prozedual und nicht OO), da es einen motiviert seinen Gehirnschmalz anzustrengen. Außerdem ist OOP sehr abstrakt wie ich finde und wenn man es nicht wirklich gut erklärt bekommt, steht man schnell da und versteht nur noch Bahnhof. Ein Beispiel ist hier eine gute Bekannte, welche von R kommt und jetzt Java lernen musste. OOP hat sie erst dank Python verstanden und selbst das hat ewig gebraucht. Selbst ich habe so meine Problemen mit OOP vor allem wenn man mal von dem Standard Krims Krams weg muss, wird es sehr schnell sehr wirr.

Ich verstehe auch nicht, warum GUI's im Lehrplan stehen, immerhin gibt es wesentlich wichtigeres und vor allem hat man schneller Erfolge. Ich fände es viel sinnvoller nach den ersten Gehversuchen mit Ratespielen und Co. einfach mal Datensätze einzulesen und zu verarbeiten. Das hilft dann auch bei anderen Schülerprojekten und man sieht eher warum Programmieren sinvoll ist. Ich meine was habe ich davon wenn ich irgend ein mehr oder weniger zinnfreies GUI programmiere? Viel anschaulicher ist doch, ich habe z.B. meine Kontoauszüge und will wissen wie meine monatlichen Ausgabe und Einnahmen sind. Bei sowas sieht man viel eher den Sinn, ist z.B. meine Meinung. Außerdem haben Terminals etwas sehr meditatives 8)

Allerdings wirst du leider um JAVA nicht rumkommen dafür sorgt ja schon das Land (leider).
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Klingt traurig, erscheint mir aber als wahrscheinlich (ich bin ein doppeltes Gymnasiallehrer-Kind; ich weiß leider nur zu gut, wie beschränkt und engstirnig viele Eltern und auch Schüler sind).
@Hyperion: Ich weiß genau, was du meinst ;) Aber: Die SchülerInnen, die nächstes Jahr in die Einführungsphase kommen (also erst in 3 Jahren Abitur machen), würden von mir auf die Problematik schon bei der Wahl des Faches hingewiesen werden (da wir dort auch schon mögliche Abiturfächer eintragen) und wären somit vorher informiert, auf was sie sich einlassen. Ich habe die Erfahrung gemacht, dass die Probleme dann gegen Null gehen, wenn man frühzeitig auf problematische Umstände hinweist. Ich möchte eigentlich nicht zurück zu Java, was mit Sicherheit auch stark mit meiner eigenen Motivation zusammenhängt und ich merke selbst, dass die Unterrichtsqualität damit stark korreliert ;)
Wenn von oben Java strikt vorgegeben würde, sieht das anders aus. Das ist aber im Moment nicht der Fall.

@Lemi89: Danke für dein ausführliche Rückmeldung. Darf ich deinen Beitrag verwenden, wenn es noch zu weiteren Gesprächen kommen sollte?
Antworten