Würdet ihr in den Schulen noch FreePascal lehren, wenn ihr ein Fach lehren würdet, bei dem Programmieren das Thema ist?



  • 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...



  • 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.

    Unabhängig von der Sprache: Man muss weder alle Schlüsselwörter erklären, noch eine Sprache zu 100% in der Schule abbilden. Ganz davon abgesehen halte ich C für eine schlechtere Wahl als Pascal, da du bereits recht weit anfangs Stringbehandlung und Zeigerarithmetik erklären musst.

    Das folgende ist nur auf den Flameware Java vs. C# bezogen (Beide sind imho genauso gut/schlecht für irgendwas geeignet):

    DEvent schrieb:

    Ausserdem kann man wenigstens ein Java 1 Programm mit der JSE 1.6 ausfuehren, im Gegensatz zu net 2.0 und 3.0.

    Stimmt, darum habe ich wohl inzwischen wer weiß wieviele Paralellinstallationen von Java auf dem Rechner, bei .Net brauche ich 2 (1.1 für 1.0/1.1 sowie 3.5 für 2.0/3.0/3.5). Davon abgesehen ist es egal das Version 1.0 nicht mit neueren läuft: Du wirst eine Sprache und Version lehren nicht mehrere.

    DEvent schrieb:

    Dazu kommt das man die profisionellen Tools in Java alle kostenlos bekommt, aber fuer die C# profisionellen Tools eine menge Geld MS hinblettern muss.

    1. Finde ich Visual C# Express eine überaus professionelle Umgebung (kostenlos).
    (Alleine schon von der Dokumentation kommt kaum eine andere Umgebung heran, wenn auch die Bedienung der MSDN nicht optimal ist).
    2. Gibt es auch für C#/.Net Nicht-MS Alternativen

    DEvent schrieb:

    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.

    So, Mono mag zwar "nur" auf den Stand von .Net 2.0 und ich glaube C# 3.0 sein, aber nichts desto trotz stimmt deine Aussage nicht.

    Du musst MS nicht mögen, dennoch muss man nicht alles in falsches Licht rücken.

    DEvent schrieb:

    Dazu bietet C eine der einfachsten und saubersten Syntax ueberhaupt.

    Wenn ich noch Kontakt zu unseren 30 Azubis hätte, würde ich dir das durch Aussagen von Lernenden wiederlegen.

    Zugegeben: persönliche Geschmäcker wird man viele finden, von den 30 waren nur die Mehrheit der C-Syntax abgeneigt (wobei der Vergleich damals nur zwischen C und C++ bzw. Java bestand).

    cu André



  • Es kommt drauf an ob der Lehrer eher Programmierung oder programmieren beibringen will: Für die allgemeinen Prinzipien der Prgrammierung (= Theorie) sind imho Lehrsprachen angebracht, also Sprachen die ursprünglich für genau den Zweck entwickelt wurden. Dazu gehören Pascal, Eiffel und Prolog.
    Wenns darum geht den Schülern ein praktisches Werkzeug an die Hand zu geben, sind andere Sprachen angebracht, je nach Anwendungsgebiet z.B. Python, Java und andere eher einsteigerfreundliche Sprachen.



  • pumuckl schrieb:

    für genau den Zweck entwickelt wurden. Dazu gehören Pascal, Eiffel und Prolog.

    vergiss Logo nicht. hab ich neulich in einem elften schuljahr angetroffen.



  • dynamische Typisierung reißt für Anfänger einige Hürden weg.

    Die meisten Elftklässler kennen als einzigen abstrakten Kalkül die
    Schulmathematik mit Ausdrücken von der Art

    x = x +sqrt(y^2-1)
    y = f(x)
    

    und da erfordert eine dynamische typisierte Sprache wie Python erheblich
    weniger Aufwand beim Umdenken - schließlich steht python für das
    "principle of least surprise".

    L = [ x, "hallo", x+3 ]
    

    ist nun einmal einfacher zu schreiben und zu verstehen als das
    C++-Äquivalent (das ich hier aus Platzgründen nicht hinschreibe :D)

    Abgesehen davon ist OO-Denken heutzutage und wohl auch in
    Zukunft wichtig genug, daß man es von Anfang an lernt und nicht
    später dazulernt. Umlernen ist immer schwierig und python ist
    ein guter Kompromiß aus modernen Konzepten und Einfachheit.

    Aus diesen Gründen halte ich hier mal die Fahne "für Anfänger: python"
    hoch.



  • OOP halte ich für den Anfang total unwichtig.



  • was die Plattform angeht, könnte man doch ein "kiosk"-System auf llnux-Basis benutzen.

    Gerade im Schulbereich sollte man so lange wie möglich nicht-proprietär bleiben, finde ich.



  • u_ser-l schrieb:

    Die meisten Elftklässler kennen als einzigen abstrakten Kalkül die
    Schulmathematik mit Ausdrücken von der Art

    x = x +sqrt(y^2-1)
    y = f(x)
    

    das spricht alles für pascal. ausser dass man für = := schreiben muss, unterscheidet pascal zwischen funktionen (kann man für das f(x) nehmen) und prozeduren (für unterprogramme). der datentyp 'real' passt auch gut zur rechnerei im matheunterricht dieser jahrgänge.

    Tim schrieb:

    OOP halte ich für den Anfang total unwichtig.

    irgendwie hast du ja recht. in dem fall sollte man auf Java verzichten, denn das erste was man da sieht ist 'class'.
    🙂


Anmelden zum Antworten