1 Punkte von GN⁺ 6 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • In einem 12-teiligen Programmierkurs für Mittel- und Oberstufenschüler wurde Forth, eine 1970 erschienene stapelbasierte konkatenative Sprache, gewählt, um sich eher auf Grundkonzepte als auf Syntax zu konzentrieren.
  • Nach dem direkten Nachvollziehen von Last-in-First-out-Strukturen und Operationen mit Papptellern wechselten die Schüler an den Computer, damit sie die Funktionsweise des Forth-Interpreters praktisch verinnerlichen konnten.
  • Als Abschlussaufgabe wurden in Easy Forth, das keine Installation erfordert, Bilder, Animationen oder Spiele erstellt; die Schüler änderten etwa Regeln und Farben von Snake oder vollendeten pixelgenaue Arbeiten.
  • Forth hat zwar nur wenig Syntaxballast, doch Anfänger mussten früh mit Low-Level-Strukturen wie dem Stack arbeiten; für Einführungskurse wäre Scratch mit seinem unmittelbaren visuellen Feedback womöglich besser geeignet gewesen.
  • Wichtiger als eine bestimmte Sprache ist eine Umgebung, in der man Ergebnisse schnell sehen und selbstständig erkunden kann; je größer das Risiko wird, durch LLM-Abhängigkeit Fähigkeiten nicht zu lernen oder nicht zu erhalten, desto nötiger ist menschenzentrierte Bildung.

Warum Forth gewählt wurde

  • Statt Python oder Scratch wurde mit Forth eine stapelbasierte konkatenative Sprache gewählt, um einen eher ungewöhnlichen Bildungsweg zu erproben.
  • In der begrenzten Unterrichtszeit sollte die Belastung durch Syntaxvermittlung vermieden werden, um Grundkonzepte behandeln zu können.
    • Python liest sich für Menschen mit Programmiererfahrung wie Pseudocode, war für Einsteiger aber weiterhin schwer zu verstehen.
  • Zur Auswahl standen Forth und Haskell.
    • Forth war attraktiv, weil Befehle in der Reihenfolge ihrer Niederschrift ausgeführt werden und man, sobald man den Stack versteht, Programme schreiben kann.
    • Haskell passte gut zu den aus der Mathematik bekannten Konzepten von Variablen und Funktionen und konnte so die Verwirrung vermeiden, die durch die übliche Vorstellung von Variablen als Boxen für Werte entsteht.
  • Für Forth gaben letztlich zwei Gründe den Ausschlag.
    • Es ließ sich leicht in eine angepasste Lernumgebung integrieren.
    • Für die abschließende Vorführung im Klassenraum wurde prozedurale Programmierung als leichter verständlich eingeschätzt als funktionale Programmierung.
  • Mit einer wenig bekannten Sprache konnten auch Schüler mit Vorerfahrung etwas Neues lernen, ohne dass Anfänger sich ausgeschlossen fühlen mussten.

Entwurf eines 12-stündigen Lehrplans

  • Der Unterricht fand einmal pro Woche jeweils eine Stunde lang statt, insgesamt 12 Mal; es wurde nicht erwartet, dass außerhalb des Unterrichts viel an Aufgaben gearbeitet würde.
  • Das Endziel war, in der Forth-Umgebung selbst eines von drei Dingen zu erstellen: ein Bild, eine Animation oder ein Spiel.
    • Auch nach Abschluss des Kurses sollte ein sichtbares und aufbewahrbares Ergebnis bleiben.
    • Es sollte vermieden werden, dass man zwar viel Technisches gelernt hat, am Ende aber das Gefühl bleibt, nichts in der Hand zu haben.
  • Da die Schüler unterschiedliche Betriebssysteme nutzten und auf manchen Geräten keine Fremdsoftware installiert werden konnte, musste Code ohne zusätzlichen Download oder Installation auf ihren eigenen Rechnern ausführbar sein.
  • Zunächst war geplant, Forth direkt in Rust zu implementieren und per WASM in die Kurs-Website einzubetten, doch das Beheben von Bugs dauerte länger als erwartet, sodass der Plan geändert wurde.
  • Nick Morgans Easy Forth wurde als Lehrplan und Interpreter zugleich übernommen; Folien, Unterrichtsplan und eine Kopie von Easy Forth wurden in einem Online-Portal bereitgestellt.

Unterricht, der bei den Grundlagen des Computers beginnt

  • In der ersten Stunde ging es zunächst um die Geschichte des Computings und darum, was ein Computer überhaupt ist.
  • Es wurden verschiedene Geräte einschließlich eines Abakus gezeigt und gefragt, ob es sich um Computer handelt; danach wurde ein Computer als „alles, was Zahlen berechnet“ definiert.
    • Nach dieser Definition kann fast alles ein Computer sein, wie die Schüler feststellten, sogar sie selbst.
  • Nachdem das bisherige Verständnis vom Umfang des Begriffs Computer erweitert worden war, wurden Forth, reale Einsatzgebiete und Embedded-Anwendungen vorgestellt.
  • Easy Forth setzt voraus, dass Leser bereits mindestens eine Programmiersprache und die Stack-Datenstruktur kennen, doch den Schülern fehlte dieses Wissen, sodass zusätzliche Erklärungen nötig waren.

Den Daten-Stack mit Papptellern verstehen

  • Bevor Computer benutzt wurden, wurde der Daten-Stack als Grundlage von Forth mit Papptellern visualisiert.
  • Durch Leerzeichen getrennte Zahlen gelangen in der Reihenfolge der Eingabe auf den Stack.
    • Gibt man 1 2 3 ein und dann mit . . . aus, erscheint wegen des zuletzt eingelegten Elements zuerst 3 2 1.
    • Der Stack ist eine Last-in-First-out-Struktur, die vor allem mit push, also dem Ablegen oben, und pop, also dem Entnehmen von oben, arbeitet.
  • Jeder Schüler bekam Pappteller und führte Forth-Operationen direkt selbst aus.
    • Beim Pushen von Zahlen wurde die Zahl auf einen Teller geschrieben und oben aufgelegt.
    • Beim Addieren wurden die obersten zwei Teller genommen, addiert und ein neuer Teller mit dem Ergebnis oben abgelegt.
    • 8 6 + ist die Operation, zwei Werte hineinzulegen, sie zu addieren und 14 auf den Stack zu legen.
    • 2 3 * legt das Produkt der beiden Werte, also 6, auf den Stack.
  • Durch das Wiederholen verschiedener Operationen übernahmen die Schüler selbst die Rolle des Forth-Interpreters.
    • Nachdem sie verstanden hatten, dass der Computer diese Arbeit automatisiert, wechselten sie zum tatsächlichen Gerät.

Praktische Übungen mit Easy Forth und Abschlussarbeiten

  • Woche für Woche wurden anhand des Easy-Forth-Kurses Konzepte erklärt, Übungsaufgaben bearbeitet und Fragen beantwortet; der gesamte Ablauf verlief ohne besondere Probleme.
  • Um innerhalb von 12 Stunden zu einem fertigen Ergebnis zu kommen und das Gelernte zu zeigen, wurde das Grafik-Framework von Easy Forth für das Abschlussprojekt genutzt.
    • Es sollte möglich sein, ein Bild, eine Animation oder ein Spiel zu erstellen.
    • Da die Zeit für ein völlig neues Spiel knapp werden konnte, wurde empfohlen, das integrierte Snake-Spiel zu verändern und so zu einem originellen Ergebnis zu kommen.
  • Der Easy-Forth-Playground-Code wurde auf eine eigene Seite ausgelagert und so erweitert, dass auf einer Seite der Code und auf der anderen ein großer Grafikbereich angezeigt wurde.
  • In der letzten Stunde entdeckten die Schüler schnell, dass schon kleine Änderungen am Snake-Code Regeln und Farben verändern konnten.
    • Für umfangreiches Refactoring reichte das Niveau zwar noch nicht, aber sie waren mit Forth bereits so vertraut, dass sie ohne Scheu erkunden und Änderungen vornehmen konnten.
  • Es wurde gezeigt, wie man mit der eingebauten Grafik Objekte zeichnet und neue Wörter definiert, um Formen wie Linien einfach zu zeichnen.
    • Alle Schüler entschieden sich für eigene Arbeiten, die meisten erstellten Bilder auf Pixelebene.
  • Auch nach Kursende blieb die Umgebung noch eine Zeit lang online, damit die Schüler bei Interesse weiter experimentieren und lernen konnten.

Einschätzung nach dem Forth-Unterricht

  • Forth war als Bildungssprache interessant, aber ob es die beste Wahl war, blieb unklar.
  • Zwar gibt es keine schwierige Syntax, doch Anfänger mussten über Systemelemente direkt nachdenken, die viele Programmierer normalerweise hinter Abstraktionen verbergen.
    • Der Stack ist zwar eine grundlegende Datenstruktur der Informatik, muss aber nicht zwingend ganz am Anfang der Ausbildung stehen.
  • Die Möglichkeit, Code als Folge von Wörtern zu schreiben, war stark; auch konkatenative Sprachen mit höherwertigen Bausteinen könnten im Unterricht nützlich sein.
    • Sprachen wie Factor oder auch völlig andere Ansätze kommen als Kandidaten infrage.
  • Würde noch einmal gewählt, könnte ein Medium in Betracht gezogen werden, das sich stärker auf klare und unmittelbare visuelle Rückmeldung als auf innere Strukturen konzentriert.
    • Scratch kann Kontrollfluss, Variablen und Funktionen ohne Low-Level-Details vermitteln und Sprites leicht in Bewegung setzen.
  • Die konkrete Programmiersprache ist an sich nicht so wichtig; selbst in einem kurzen Kurs konnten die Schüler Forth wirksam lernen.
    • Je nach Schüler kann ein anderes Paradigma besser passen, weshalb sich der Lernprozess schwer perfekt feinjustieren lässt.
    • Wichtig ist eine Umgebung, in der man Ergebnisse schnell und wiederholt überprüfen und selbstgesteuert erkunden kann.
  • Die Schüler gewannen eine Low-Level-Einstiegserfahrung, in der sie grundlegende Datenstrukturen der Informatik tiefgreifend verstehen konnten.
    • Auch für die Lehrperson war es eine Gelegenheit, die Didaktik auf ähnliche Weise zu verbessern wie das wiederholte Lernen, das von den Schülern verlangt wurde.

Menschenzentriertes Lernen im Zeitalter der LLMs

  • Je stärker Programmierung von probabilistischer Automatisierung geprägt wird, desto wichtiger wird es, Menschen weiterhin beizubringen, selbst zu programmieren.
  • Selbst Menschen, die bereits programmieren können, könnten bei Abhängigkeit von LLMs Fähigkeiten verlieren; wer von Anfang an nicht selbst lernt, könnte diese Fähigkeiten womöglich gar nicht erst ausbilden.
  • Auch Menschen, die neue Fähigkeiten erlernen wollen, greifen zunehmend auf LLMs statt auf renommierte Materialien zurück.
  • Es müssen menschenzentrierte Umgebungen geschaffen werden, in denen alle Menschen unabhängig von ihrem Hintergrund, besonders aber Kinder, Fähigkeiten wie Programmieren lernen können.
  • Menschen mit unterschiedlichen Hintergründen sollten Zeit und Energie investieren, um Wissen zu teilen, und es sollte auch vermittelt werden, wie man sich zusätzliches Wissen sicher beschafft.
  • Auch wer kein professioneller Lehrer ist, sollte lernen, wie man unterrichtet, und Räume schaffen, in denen Wissen frei zwischen Menschen fließen kann.

1 Kommentare

 
GN⁺ 6 시간 전
Lobste.rs-Kommentare
  • Wenn man Kinder und Jugendliche mit nicht-mainstreamigen Computing-Werkzeugen und -Sprachen in Berührung bringt, ist das effektiv, um ihnen die Breite des Computing-Bereichs und verschiedene Ansätze zur Problemlösung zu vermitteln
  • Ich mag Forth sehr, aber für den Unterricht ist es vielleicht nicht die beste Wahl. Trotzdem ist es für Programmierer wichtig, verschiedene Programmierparadigmen kennenzulernen
    Easy Forth scheint gutes Material zu sein, und ich empfehle allen Programmierern, nur 10 Minuten zu investieren, um Forth auszuprobieren. Es ist eine Sprache, die sehr einfach zu lernen ist, zugleich vertraut wirkt und das eigene Denken erschüttert; außerdem lässt sie sich leicht implementieren, wenn man schnell von Grund auf eine High-Level-Sprache bauen muss
    • Das meiste an Forth ist einfach, aber Elemente wie DOES> sind es nicht
      Die Implementierung von Forth hat Spaß gemacht, aber je mehr Code ich schrieb, desto weniger mochte ich es. Wegen Rausch-Wörtern wie DUP, ROT und SWAP ist der Ablauf schwer nachzuverfolgen, und es fördert auch die Verwendung globaler Variablen, die ich nicht bevorzuge
  • Nehmen wir an, ich lerne gern interessante Programmiersprachen: Ein Freund hat mir Forth empfohlen, und ich habe tatsächlich vor, es zu lernen
  • Falls die aktuelle Seite nicht erreichbar ist, kann man das folgende Archiv nutzen
    https://archive.ph/0ZOVa
    • Tatsächlich war die Seite nicht offline, sondern wurde vom ISP blockiert