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



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



  • Ben04 schrieb:

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

    Na Gott sei Dank!



  • Tim schrieb:

    OOP halte ich für den Anfang total unwichtig.

    fricky schrieb:

    irgendwie hast du ja recht.

    Finde ich auch.

    Die meisten Elftklässler kennen als einzigen abstrakten Kalkül die
    Schulmathematik

    Als einzigen nicht-ambiguitiven.

    Scheme in die Schulen!



  • Ben04 schrieb:

    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,

    Eben nicht eben, du hast den Text falsch verstanden.

    Du hat gesagt es gäbe keine Anschaffungskosten für eine gute C# IDE.
    Und ich habe dir wiedersprochen, da Windows dazu immer das wäre, was
    unter die Anschaffungskosten für C# fällt.
    Daher kann C# nicht das Ziel sein, wenn es Windows vorraussetzt.

    also darf es auch was anderes als Linux sein.

    Natürlich, z.b. einen Mac oder FreeBSD.

    Aber gerade deswegen muß die gewählte Schulprogrammiersprache ja unter all diesen Betriebssystemen verfügbar sein.
    Und das ist bei C# nicht der Fall.
    Java schon eher.
    Freepascal auch.
    Und C sowieso.

    Was kann jeder Schüler ohne Probleme zu Hause installieren um die Hausaufgaben zu machen? Bestimmt nicht Linux.

    Das ist glatt gelogen.
    Eine moderne Linux Distribution wie Ubuntu kann jeder Depp installieren.

    Was aber nicht jeder installieren kann ist Windows, denn Windows kostet Geld.

    Nicht jeder traut sich das zu

    Es gibt auch Rechner bei denen Linux vorinstalliert ist.

    und nicht jeder hat eine freie Partition oder Festplatte.

    Na wenn man einen Computer neu kauft, dann hat man
    immer eine freie Partition oder eben keine Festplatte, aber wer einen Computer ohne Festplatte kauft der muß eh wissen was er tut.

    Alles wofür es keinen out-of-the-box-installer für Windows gibt ist von vorn herein disqualifiziert.

    Also sowohl für Java als auch für FreePascal gibt es für Windows einen out-of-the-box-installer.
    Und für C/C++ gibt es ebenfalls entsprechende OOTB Installer, aber hier kommt es halt drauf an was man will.
    Wer will, der kann ja auch mit Visual Studio Express für C++ anfangen.
    Das wäre ja jetzt nicht das Problem, solange die Programmiersprache frei ist.

    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!

    Na das spricht ja nicht gerade für C# wenn man so viel können muß, nur um Hello World schreiben zu können.

    Bei C geht das in 4-5 Zeilen.



  • obwohl mir ein hypothetischer Schüler, der mit einer paradigmen-reinen Sprache wie
    Smalltalk oder Scheme in die Programmierung einstiege, schon ein wenig leid täte.

    Wenn er dann - Jahre später vielleicht - auf Sprachen wie java oder C++ umsteigen
    muß 😮



  • C#? Never! schrieb:

    also darf es auch was anderes als Linux sein.

    Natürlich, z.b. einen Mac oder FreeBSD.

    Die werden schon was finden was auch darauf läuft. Es ist ja nicht so, dass die so wie du von vorn herein sagen, dass das darauf nicht geht...

    C#? Never! schrieb:

    Was kann jeder Schüler ohne Probleme zu Hause installieren um die Hausaufgaben zu machen? Bestimmt nicht Linux.

    Das ist glatt gelogen.
    Eine moderne Linux Distribution wie Ubuntu kann jeder Depp installieren.

    Man sieht, dass du noch nie mit Deppen gearbeitet hast. Richtige Deppen kriegen gar kein Betriebssystem installiert, das muss vorinstalliert kommen.

    C#? Never! schrieb:

    und nicht jeder hat eine freie Partition oder Festplatte.

    Na wenn man einen Computer neu kauft, dann hat man
    immer eine freie Partition oder eben keine Festplatte, aber wer einen Computer ohne Festplatte kauft der muß eh wissen was er tut.

    Super Argumentation! Windows, was quasi auf 95% der Rechner um die es hier geht eh schon drauf ist, ist zu teuer aber ein neuer Rechner mit vorinstalliertem Linux ist ok.

    C#? Never! schrieb:

    Na das spricht ja nicht gerade für C# wenn man so viel können muß, nur um Hello World schreiben zu können.

    Bei C geht das in 4-5 Zeilen.

    Dass du das jetzt ernst gemeint hast, kaufe ich dir nicht ab. Troll! :p



  • Scheme wäre doch nicht schlecht für den Einstieg, da es wirklich klein ist und man schnell Sachen erreichen kann (mit PLT Scheme kann man in kurzer Zeit kleine Spielchen basteln). Außerdem kann man ohne Probleme und äußerst sauber die Leute auch an höhere Konzepte herantragen (ob es nun OOP, funktionale Programmierung oder wer weiß was ist).

    Aber ich würde in den 3 Jahren wohl auch ein paar andere Programmiersprachen vorstellen. Zumindest ein kleiner schöner Assembler wäre doch recht nett (also kein x86er Zeugs. Vielleicht MMIX oder wie das heißt), damit versteht man Computer vielleicht ein bisschen besser.

    paradigmen-reinen Sprache

    Was soll das sein?



  • Aber ich würde in den 3 Jahren wohl auch ein paar andere Programmiersprachen vorstellen.

    Man kann ja auch mehrere Sprachen streifen und vergleichen.
    Wichtig finde ich nur, daß man eine halbwegs einfache Sprache hat, mit
    der man sich halbwegs auskennt; damit man eben auch ernsthaft programmieren
    kann.

    Habe neulich einen ziemlich durchwachsenen Python-Code nach Scheme portiert:
    Es gibt für fast alles eine einfache Ausdrucksweise, meistens sogar ohne call/cc.
    In die andere Richtung wäre das schon schwieriger...



  • rüdiger schrieb:

    paradigmen-reinen Sprache

    Was soll das sein?

    ja, habe mich unklar ausgedrückt.
    Ich meinte damit Smalltalk als reine OO-Sprache. Ich weiß, bei Scheme kann man auch
    imperative Konstrukte nutzen. Trotzdem glaube ich, daß ein Anfänger, der mit
    smalltalk oder scheme gelernt hat, enttäuscht sein könnte, wenn er auf andere
    Sprachen mit komplizierter Syntax usw. umsteigt.



  • Ich glaube Lua wäre gut geeignet.



  • Vielleicht. Für den Einstieg würde ich auf jeden Fall etwas sehr einfaches wählen, da die Leute sonst nicht nachkommen und Programme schreiben, die sie nicht einmal verstehen (Java: 'Warum class ? Warum public static void main(String[] args) ? Warum nicht einfach println("Hallo, Welt!"); ?' ;)) und da scheint mir Pascal in seiner Urform gar nicht mal so abwegig. Allerdings ist es eben schon so, dass die Sprache und ihre nächsten Verwandten sehr selten geworden ist.

    Besser scheint mir da C, und ich meine das reine C. Es ist für den Einsteiger mit Sicherheit ein harter Brocken, und man müsste sehr langsam vorwärts machen damit die Leute auch nach kommen. Anhand von C kann man dann gut alle Grundkonzepte (z.B. Zeiger! 👍 👍 👍 Viele Sprachen verstecken diese vor dem Programmierer, in C sind sie jedoch schön explizit. Implementier in Java eine doppelt verkettete Liste und die Leute werden auch nach Jahren noch fragen, warum das funktioniert, wenn sie Referenzen/Zeiger/Handles oder wie man es nun auch immer nennen mag nicht verstehen) vermitteln, die dann in anderen Sprachen von Nutzen sein werden. Weiterhin ist die C Sprachfamilie lebendig (siehe C++, C#, Java, ...); ein Umstieg besteht zu grossen Teilen aus einem Dazulernen und nicht aus einem Umlernen.

    Allgemein finde ich es eine sehr schwierige Frage, was man denn nun lehren sollte. Persönlich denke ich sowieso, dass die meisten guten Programmierer nicht erst an den Schulen und Universitäten "gemacht" werden. QuickBASIC mit 8 Jahren anyone? 😃



  • damit versteht man Computer vielleicht ein bisschen besser versteht.

    <pedantic>Registermaschinen</pedantic>

    Trotzdem glaube ich, daß ein Anfänger, der mit
    smalltalk oder scheme gelernt hat, enttäuscht sein könnte, wenn er auf andere
    Sprachen mit komplizierter Syntax usw. umsteigt.

    Dann läßt er's eben bleiben... 🙄



  • Als wenn man schon bereit ist C zu nehmen, dann bietet sich ja wohl D am ehsten an.

    Gruss
    Flamers Brennstoff.



  • flamer schrieb:

    damit versteht man Computer vielleicht ein bisschen besser versteht.

    <pedantic>Registermaschinen</pedantic>

    <pedantic++>endliche Automaten<pedantic++>



  • asc schrieb:

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

    Erzähl mal. Bildest du Leute in OOP aus? Woran merkst du, dass Vorkenntnisse in, wie du es nennst, "strukturierter" Programmierung hinderlich sind? Oder merkst man umgekehrt, dass diejenigen, die solche Vorkenntnise nicht hatten, am Ende wesentlich besseres OO-Verständnis haben?

    Würde mich einfach mal interessieren.


Anmelden zum Antworten