Würdet ihr in den Schulen noch FreePascal lehren, wenn ihr ein Fach lehren würdet, bei dem Programmieren das Thema ist?
-
Das Fach würde in der 11., 12. und 13. Klasse angeboten werden.
Wobei das Fach nur in der 11. Klasse Pflicht für alle Schüler wäre.Würdet ihr hierzu ,wie früher, als Programmiersprache Pascal in Form von FreePascal wählen oder würdet ihr hier eher Java, C++ oder gar C nehmen?
Zu beachten ist hierbai, daß viele Schüler zu Beginn keinerlei Programmierkenntnisse haben.
Auch sind zumindest in der 11. Klasse Schüler dabei, die eigentlich an diesem Fach keinerlei großes Interesse zeigen.
D.h. halbwegs ordentlich loslegen kann man erst ab der 12. Klasse.Dies ist bei der obigen Frage zu berücksichtigen,
wenn die Schüler in der 11. Klasse von dem Kurs mit der gewählten Programmiersprache etwas haben wollen.
-
Wenn es für die 11. Klasse Pflicht ist, würde ich python nehmen.
Für Fortgeschrittene dann C++ oder eine reine OO-Sprache wie Smalltalk.
Wenn es um Berufsvorbereitung geht, sollte man wegen der weiten Verbreitung wohl auch java
lehren.Meine Meinung.
-
pascal (und auch basic) finde ich gut geeignet, für neulinge ohne jede vorkenntnis. pascal hat noch den vorteil, dass in vielen informatik-lehrbüchern codebeispiele in pascal zu finden sind (sedgewick, wirth und so). java könnte auch noch gehen (wenn man leicht verständlich oop lernen will). c und c++ sind definitiv nix für absolute einsteiger. nummer 1 ist zu sehr low-level, nummer 2 ist low-levelig und dazu noch sehr abstrakt.
-
Programmieren@Schule schrieb:
Das Fach würde in der 11., 12. und 13. Klasse angeboten werden.
Wobei das Fach nur in der 11. Klasse Pflicht für alle Schüler wäre.Ich bin persönlich kein Fan von Programmieren als Pflichtkurs (Es sei den die Schule hat von sich aus schon einen IT-Schwerpunkt). Anders sieht es mit grundlegenden PC-Kenntnissen und zumindestens allgemeinem Verständnis von ein paar wichtigen Programmen (z.B. Textverarbeitung & Tabellenkalkulation) aus. Wobei man hier auch schon einige Schüler langweilen kann.
Programmieren@Schule schrieb:
Würdet ihr hierzu ,wie früher, als Programmiersprache Pascal in Form von FreePascal wählen oder würdet ihr hier eher Java, C++ oder gar C nehmen?
Auch wenn zum Lernen des Programmierens die Sprache relativ egal ist, würde ich grundsätzlich etwas wählen, das zumindest noch ein wenig in der Praxis üblich ist (stößt meist eher auf Interesse).
Programmieren@Schule schrieb:
Zu beachten ist hierbai, daß viele Schüler zu Beginn keinerlei Programmierkenntnisse haben.
Auch sind zumindest in der 11. Klasse Schüler dabei, die eigentlich an diesem Fach keinerlei großes Interesse zeigen.Was dazu führen wird das der Unterricht in der 11 wohl eher zur Face wird. Ich nehme mal an Rechnerkenntnisse sind unter Umständen auch nicht gegeben.
Programmieren@Schule schrieb:
D.h. halbwegs ordentlich loslegen kann man erst ab der 12. Klasse.
Dies ist bei der obigen Frage zu berücksichtigen,
wenn die Schüler in der 11. Klasse von dem Kurs mit der gewählten Programmiersprache etwas haben wollen.Ich persönlich würde erst einmal hinterfragen was das Ziel der Veranstaltung sein sollte. Ist es ein Grundlegendes Verständnis für Logik? Soll wirklich eine Programmiersprache als solches in Vordergrund stehen (und was für Themen sollen alles angesprochen werden, beispielsweise sollte man bei C/C++ GUI mindestens am Anfang außen vor lassen).
Wenn es eher Logik, allgemeine Programmabläufe sind, würde ich tendenziell eher zu einer Sprache auf dem Niveau von Java/C# und ähnlichen aufbauen. Da hier viele Hürden durch Vereinfachungen außen vor gelassen werden und man schneller auch etwas "sieht".
Wenn es auch um das Verständnis der Interna des Rechners geht, würde ich eher zu den Sprachen greifen, die Hardwarenäher sind (z.B. C/C++). Wobei ich dann eher C++ nehmen würde, und im 11 Schuljahr möglichst nur die allgemeinen Themen ansprechen würde um nicht die zu überfordern, die dieses Thema eher gezwungener angehen (so würde ich im 11 Jahr erstmal allgemeine Logik, Schleifen, Fallunterscheidungen verwenden, auf Zeigerspielereien weitgehend verzichten und zunächst std::string für Texte wählen), und erst im 12. Schuljahr auch näher an die Interna gehen (Zeiger etc.).
cu André
-
PASCAL und oder ein BASIC-Dialekt (nicht Visual Basic!) halte ich für angebracht. Denn die Schüler machen ja kein Vollzeit-Programmieren, sondern vielleicht vieller 2 Stunden in der Woche. Sie sollen ja auch sicherlich nicht zu Programmierern ausgebildet werden? Sondern nur damit in Berührung kommen und das Denken dafür erhalten. Viele werden wahrscheinlich das erste Mal überhaupt einen Befehl an den Computer abgeben, auch wenn sie zu Hause einen PC nutzen.
Wobei ich sagen muß, das ich evtl. für einen Einstieg sogar die ersten Unterrichtstunden LOGO einsetzen würde. Selbst PASCAL oder BASIC würde ich für viele Schüler als zu krass empfinden. Denn nur weil jemand zu Hause Word oder IE benutzt, muß das nicht heißen, das man wirklich einen Computer versteht. LOGO so die ersten 4 Stunden als Einstieg, und dann PASCAL oder BASIC.
Python, Java, C++ u.a. halte ich für völlig daneben. Die meisten werden danach nie wieder im Beruf einen Computer programmieren (einen PC-Arbeitsplatz, aber sicherlich nicht tiefer).
-
Im Gegensatz zu den anderen halte ich C dafuer doch geigneter als sogar Java. Aber ohne Speicherverwaltung.
Ein Hello-World-Programm ist in C weitaus einfach zu programmieren als in Java. OOP Konzepte sind auch zu abstrakt fuer Anfanger und in Java, C#, usw. ist OOP pflicht. Dann ist C praxisrelevant, man hat in der Berufsschule, Fachhochschule oder Uni sicherlich irgendwann mal C. C bietet alle noetigen Kontrollstrukturen und Schleifen, wie If-While-Do-For und man kann lernen was Funktionen sind. Die Standardbibliothek ist weitaus einfach zu Benutzen als in C++, Java oder C# und bietet fuer alle normalen Probleme alles was man braucht. Die Typen sind auch einfach zu lernen und sind intuitiv.
In einen fortgeschrittenen Kurs kann man dann auch die Speicherverwaltung mittels malloc(), free() usw. lehren. Wenn man dann spaeter auch GUI Programmierung auf den Plan hat, dann sollte man doch Java nehmen.
Also wenn man die komplexen Sachen, wie Speicherverwaltung, Typcasting und die kryptische Syntax aussen vor laesst, dann ist C sehr einfach zu lernen, auch fuer Anfaenger. IMHO wesentlich einfacher als Java, C++ oder C#.
Was Pascal betrifft, ich finde Pascal ist einfach nicht mehr aktuell und in Pascal kann man alles das machen was man C machen kann. Also wenn man vielleicht der Meinung ist die kryptische Syntax von C seinen Schuelern nicht antun zu koennen, dann waere Pascal besser als C. Wenn man aber eine praxisrelevante Sprache vermitteln will, dann ist C vorzuziehen.
-
Java würd ich nicht nehmen.. das kennen einige bereits vom Hörensagen und dann schlaten sie komplett ab, wenn das Interesse eh fehlt. Vor allem, wenn das Gehörte Wörter wie "langsam" beinhaltet. Da wäre C oder C++ ja noch besser (was aber aufgrund der anfangs recht mühsam ansteigenden Lernkurve eh nicht zu empfehlen ist. Und wenn man nicht sofort ein aufploppendes Fenster "proggen" kann, ist es eh langweilig
Evtl C# nehmen. Man sieht damit schnell Ergebnisse und die, die ein wenig mehr darin interessiert sind können sich zuhause ganz einfach Visual Studio ausm Netz laden und die Übungen aus der Schule wiederholen.
Bei Sprachen wie Smalltalk o.ä. findet man nicht so schnell brauchbare Compiler/IDEs und der Anreiz, sich zuhause damit zu beschäftigen sinkt gegen Null. Es sei denn, man gibt ihnen auf CD ein auf Windows-Systemen lauffähiges Komplettpaket mit. Auch sowas wird gerne angenommen.
Dazu noch ein paar simple Aufgaben, mit denen jeder was anfangen kann und schon dürfte das Interesse in der Gruppe ein wenig steigen.
-
ich fand logo immer cool.
das hatten wir allerdings in der 7. Klasse.Am geeignetsten erscheint mir irgendwas, wo man mit wenig programmieraufwand große effekte erzielt (wie eben bei logo), weil das das interesse fördert.
-
Processing ist dafür wahrscheinlich nicht mal so ungeeignet.
Ist eine agespeckte Jaaversion mit der man computergrafic machen kann.
http://processing.org/
-
Ich denke schon, dass Pascal sehr gut geeignet ist für den Schulunterricht, oder allgemein als erste Programmiersprache. Sie ist streng strukturiert und der Umgang mit den Typen ist sehr klar und sauber.
Auch die strenge Trennung zwischen Funktionen (Rückgabewert, möglichst keine Nebenwirkungen) und Prozeduren (kein Rückgabewert, mit Nebenwirkungen) hilft dabei den Code sauberer zu halten und vermeidet typische Anfängerfehler wie beispielsweise mathematische Funktionen mit Textausgaben zu versehen.
Delphi oder FreePsacal bieten ja auch viele Erweiterungen an, für Objektorientierte Programmierung, Exception-Handling, Generics und Ähnlichem, bieten aber auch über die IDE (Delphi oder Lazarus) Möglichkeiten schnell GUI-Anwendungen zu erstellen, was für Schüler natürlich sehr interessant ist.
Zudem bin ich der Meinung, dass die Auswahl an Programmiersprachen für die Abiturprüfung arg eingeschränkt ist. Ich habe mal was von Pascal, Delphi und Java gehört, kann aber von Bundesland zu Bundesland anders sein. Bei Java stört der Zwang alles mit Klassen und Objekten auszudrücken. Mit einer modernen Pascal-Variante, wie eben FreePascal, kann man gut von einfachen Konsolenanwendungen bis hin zu Objektorientierter Programmierung und GUI-basierten Programmen arbeiten und eine große Komponentenbibliothek fehlt auch nicht.
Python finde ich sehr schön, aber nicht als Erstsprache für jemanden, der eventuell später weitere Sprachen lernen will. Der Umstieg von einer klassischen Programmiersprache auf eine Skriptsprache ist meiner Meinung nach wesentlich einfacher als umgekehrt.
C ist für Anfänger einfach zu "gefährlich", weil man vor vielen vermeintlichen Fehlern nicht gewarnt wird, nach dem Compiler-Motto: "Der wird schon wissen, was er tut, ich halte mich da raus." Anfänger wissen eben meistens nicht was sie tun und wenn sie etwas falsches tun, wird der Pascal-Compiler sie eher darauf hinweisen.
-
DEvent schrieb:
OOP Konzepte sind auch zu abstrakt fuer Anfanger
Das Stimmt nicht. Wenn man keinerlei Programmiervorkenntnisse hat, können die Grundlagen von OOP sogar durchaus leichter verständlich erklärt werden (Kommt aber auch darauf an wie man das ganze angeht, ich habe z.B. die Programmierung als solche erst nach der Vermittlung der OO-Grundlagen vermittelt). Es geht jetzt nicht darum ob man dann noch ansätze der strukturierten Programmierung mit vermitteln muss, sondern um das reine Grundverständnis.
Schwieriger ist es dann, wenn man schon in einer strukturierten Programmierweise denkt.
cu André
-
zwutz schrieb:
Java würd ich nicht nehmen.. das kennen einige bereits vom Hörensagen und dann schlaten sie komplett ab, wenn das Interesse eh fehlt. Vor allem, wenn das Gehörte Wörter wie "langsam" beinhaltet. Da wäre C oder C++ ja noch besser (was aber aufgrund der anfangs recht mühsam ansteigenden Lernkurve eh nicht zu empfehlen ist. Und wenn man nicht sofort ein aufploppendes Fenster "proggen" kann, ist es eh langweilig
Klar, die Mehrheit der Schüler weiß das Java langsam sein soll. Und sie wissen, das C oder C++ total besser sind. Neee, ist klar.
Sorry, aber die Mehrheit der Schüler weiß bestimmt nicht mal was eine Plattform oder Programmiersprache ist! Nur weil heute jeder Schüler einen ultra-coolen Klingelton auf dem Handy abspielen kann, sind sie noch lange keine Technikkenner!
Geht doch mal raus aus eurer Rolle des Programmierers und des C++-Forums-Teilnehmers! Es gibt auch noch andere Menschen, die absolut nicht wissen, was eine Programmiersprache ist. Die können sich zwar Klingeltöne runter laden, und bei GMX einloggen, aber das war es auch schon!
Ich weiß nicht, ob man denen bei 2 Stunden-Info-Unterricht solche Sachen wie Java, C#, C oder C++ antun muß... ich bezweifel es stark.
Und was das Praxisnah angeht: ich wette 90% der Schüler im Info-Unterricht werden danach nie wieder was mit Computer-Technik zu tun haben. Die werden wahrscheinlich einen PC-Arbeitsplatz bekommen, mehr auch nicht.
Man sollte deshalb an die 90% der Schüler denken, und nicht an die max. 10% die später Informatik-Ausbildung oder -Studium haben werden.
Programmieren an der Allgemeinbildenden Schule halte ich für gut, aber man sollte alle Schüler einbringen und ihnen eine Chance geben, das sie es auch verstehen können. Und das wird mit komplexen Umgebungen nicht funktionieren. Allgemeinbildende Schule sagt es schon: "allgemein" und nicht Spezialisieren!
Wer später was mit Programmieren zu tun haben wird, wird es praxisnah in seiner speziellen Ausbildung lernen können.
Weiterhin halte ich es für besser, wenn man den Schülern neben allgemeiner Programmierung auch Wissen vermittelt, bzgl. Gefahren in Sozialen Netzwerken, Datenschutz u.ä. Darauf sollte man Schüler eher vorbereiten, da dieses wirklich heute so ziemlich jeden Schüler betreffen würde.
Von C, C++, Java usw. hat so gut wie niemand etwas.
-
Programmieren@Schule schrieb:
Würdet ihr hierzu ,wie früher, als Programmiersprache Pascal in Form von FreePascal wählen
auf keinen fall. meiner erfahrung nach gehen ausschließlich lehrer in die pascal-ecke, die von tuten und blasen keinen schimmer haben, die seit der pascal-zeit gar nichts dazugelernt haben.
-
volkard schrieb:
Programmieren@Schule schrieb:
Würdet ihr hierzu ,wie früher, als Programmiersprache Pascal in Form von FreePascal wählen
auf keinen fall. meiner erfahrung nach gehen ausschließlich lehrer in die pascal-ecke, die von tuten und blasen keinen schimmer haben, die seit der pascal-zeit gar nichts dazugelernt haben.
Und, hat sich das heute geändert?
-
Ich würde wahrscheinlich C# nehmen. Keine Anschaffungskosten und trotzdem eine sehr gute IDE. Es gibt eine sehr große Bibliothek welche ziemlich aus einem Guss zu sein scheint, ordentlich dokumentiert ist. C# hat kaum syntaktische Altlasten. Je nach dem was ich unterrichten sollte, würde ich aber noch einen Wrapper um die .net Funktionen schreiben der einen Großteil der Komplexität versteckt.
PS: Ist es in FreePascal möglich eine Sortierfunktion zu schreiben, welche Arrays sortiert und in irgendeiner weise auf Länge des Arrays, Typ der sortiert wird und Vergleichsfunktion parametrisiert ist?
-
Ben04 schrieb:
Ich würde wahrscheinlich C# nehmen. Keine Anschaffungskosten und trotzdem eine sehr gute IDE.
Quatsch.
Windows fällt immer unter die Anschaffungskosten, das gilt sowohl für die Schüler als auch für die Schule und in deutschen Schulen besteht Lehrmittelfreiheit.
Daher darf es keinen Zwang geben, Windows zu kaufen nur damit man C# als Schüler lernen kann.
Auch sind die Folgekosten nicht zu verachten.
Wer von Programmieren keine Ahnung hat, der wird später in der Firma dann einen Windowsrechner fordern und in C# programmieren, weil er in der Schule nur das gelernt hat.
Das hilft höchsten dem Monopol aus Redmond aber weder der Firma noch dem Schüler.Die ganuzen Visual Basic Altlasten die in Firmen geschrieben wurden sind schon heute mehr als schlimm genug wenn es darum geht die IT der ganzen Firma aus Kostengründen auf eine andere Plattform zu migrieren.
Diejenigen, die ne ganze Visual Basic Sammlung haben können das meistens nämlich genau deswegen nicht.Und wer da C# nimmt, der macht es nicht viel besser.
Und wer jetzt Mono schreit, dem sollte klar sein, daß Microsoft mehr als genug C# Bücher schreibt, die den Code mit den propritären Funktionen aus .Net verdongeln und solche Bücher sind es, die die Schüler dann kaufen werden.
Die Folge davon ist also, daß es keine plattformunabhängigen C# Code von diesen Ex Schülern geben wird.C# zu wählen ist also absolut fahrlässig und man kann das eigentlich nur dann
guten Gewissens tun, wenn man Microsoft Aktionär ist.
-
Ben04 schrieb:
Ich würde wahrscheinlich C# nehmen. Keine Anschaffungskosten und trotzdem eine sehr gute IDE. Es gibt eine sehr große Bibliothek welche ziemlich aus einem Guss zu sein scheint, ordentlich dokumentiert ist. C# hat kaum syntaktische Altlasten. Je nach dem was ich unterrichten sollte, würde ich aber noch einen Wrapper um die .net Funktionen schreiben der einen Großteil der Komplexität versteckt.
Dann viel Spass den Schuelern zu erklaeren was Delegeates, was manages/unmaganes Code ist, was der Unterschied zwischen Class/Struct/Interface/Namespace/Enum ist, was Operatorueberladung, Funktionsuberladung, was Exceptions, Generics, virtuelle Funktionen und Properties sind. Sicherlich habe ich noch einiges vergessen aus den 80 Schluesselwoertern (zum Vergleich, Java hat nur 50 und C 40). C# mixt doch alles von C++ und Java zusammen, so das blos keiner aus beiden Lagern ungluecklich ist.
Java bietet eine saubere Syntax die sich auf das wesentliche beschraenkt, dazu eine API um die man keinen Wrapper schreiben muss um die Komplexitaet zu verstecken und es sind gleich 2 IDEs frei verfuegbar, Eclipse und Netbeans. Ausserdem kann man wenigstens ein Java 1 Programm mit der JSE 1.6 ausfuehren, im Gegensatz zu net 2.0 und 3.0. Dazu kommt das man die profisionellen Tools in Java alle kostenlos bekommt, aber fuer die C# profisionellen Tools eine menge Geld MS hinblettern muss. Zuletzt sei natuerlich gesagt das die Java SE Opensource und dadruch fuer alle Systeme, wie Mac, Linux, Solaris und Windows verfuegbar ist, waerend in der nahen Zukunft C# und .NET nur auf Windows laufen wird.
Oder man nimmt gleich C und erspart sind den ganzen Bloedsinn und lehrt die Schuehler das was sie brauchen: Programmieren an einer richtigen praxisorientierten Sprache, deren Tools alle frei und fuer alle Plattformen erhaeltlich sind. Dazu bietet C eine der einfachsten und saubersten Syntax ueberhaupt.
-
DEvent schrieb:
Oder man nimmt gleich C und erspart sind den ganzen Bloedsinn und lehrt die Schuehler das was sie brauchen: Programmieren an einer richtigen praxisorientierten Sprache, deren Tools alle frei und fuer alle Plattformen erhaeltlich sind. Dazu bietet C eine der einfachsten und saubersten Syntax ueberhaupt.
Wobei D natürlich noch einfacher und auch robuster als C wäre.
Denn D bietet nicht nur eine saubere einfache Syntax, sondern auch noch eine
schöne API mit allem wichtigen was man so braucht.
-
DEvent schrieb:
Dazu bietet C eine der einfachsten und saubersten Syntax ueberhaupt
die c-syntax ist für einsteiger gewöhnungsbedürftig, aber sauber ist sie schon. das ist wohl mit ein grund, warum so viele sprachen auf der c-syntax aufbauen. übrigens heisst die mehrzahl 'syntaxen', man glaubt es kaum.
-
C#? Never! schrieb:
Ben04 schrieb:
Ich würde wahrscheinlich C# nehmen. Keine Anschaffungskosten und trotzdem eine sehr gute IDE.
Quatsch.
Windows fällt immer unter die Anschaffungskosten, das gilt sowohl für die Schüler als auch für die Schule und in deutschen Schulen besteht Lehrmittelfreiheit.Eben, also darf es auch was anderes als Linux sein. Was kann jeder Schüler ohne Probleme zu Hause installieren um die Hausaufgaben zu machen? Bestimmt nicht Linux. Nicht jeder traut sich das zu und nicht jeder hat eine freie Partition oder Festplatte. Alles wofür es keinen out-of-the-box-installer für Windows gibt ist von vorn herein disqualifiziert.
DEvent schrieb:
Dann viel Spass den Schuelern zu erklaeren was Delegeates, was manages/unmaganes Code ist, was der Unterschied zwischen Class/Struct/Interface/Namespace/Enum ist, was Operatorueberladung, Funktionsuberladung, was Exceptions, Generics, virtuelle Funktionen und Properties sind. Sicherlich habe ich noch einiges vergessen aus den 80 Schluesselwoertern (zum Vergleich, Java hat nur 50 und C 40).
Natürlich hast du das! Du kennst die Sprache doch nicht, also musst du was vergessen haben! Zum Beispiel: Type Interference, Lambda Ausdrücke, annonyme Klassen, LINQ, Codegenerierung zur Laufzeit, Extension methods, Objekt und Collection Initializer...und all das muss man können um ein Hello World! Programm zu schreiben!
DEvent schrieb:
C# mixt doch alles von C++ und Java zusammen, so das blos keiner aus beiden Lagern ungluecklich ist.
Hmm also LINQ hat keiner von beiden...