Computer-Ag am WvS Blog der Computer-AG am Werner von Siemens Gymnasium Berlin

21. März 2025

21.3.2025

Filed under: Allgemein,Tagesberichte,Termine,Tisch — admin @ 15:57

Morten ist da.

7. März 2025

7.3.2025

Filed under: Allgemein,Tagesberichte,Termine,Tisch — admin @ 16:45

Morten und Angelo sind da. Jakob auch. Es geht auch um Snap!. Und Markov chain zur Textgenerierung.

S.a. den Vergleich von Claude (AI):

Hier sind die wesentlichen Unterschiede zwischen Scratch und Snap!:

Herkunft und Zielgruppe:

  • Scratch wurde vom MIT Media Lab entwickelt und richtet sich primär an Kinder und Programmieranfänger.
  • Snap! (ehemals BYOB – „Build Your Own Blocks“) wurde von der UC Berkeley entwickelt und zielt auf fortgeschrittenere Konzepte ab, eignet sich auch für ältere Lernende.

Fortgeschrittene Funktionen in Snap!:

  1. Benutzerdefinierte Blöcke mit Parametern – Komplexere Funktionen mit Eingabewerten und Rückgabewerten
  2. First-Class-Funktionen – Funktionen können wie Daten behandelt werden
  3. First-Class-Listen – Unterstützt verschachtelte Listen (Listen in Listen)
  4. Rekursion – Ermöglicht echte rekursive Funktionsaufrufe
  5. Klonen von Objekten zur Laufzeit – Flexiblere Objektmanipulation
  6. Höhere Ordnungsfunktionen – Unterstützt funktionale Programmierkonzepte wie map, filter, etc.
  7. Lambda-Ausdrücke – Anonyme Funktionen können erstellt werden

Pädagogischer Ansatz:

  • Scratch konzentriert sich auf einfachen Einstieg und kreative Projekte.
  • Snap! wurde entwickelt, um tiefere Informatikkonzepte zu vermitteln und kann als Brücke zu textbasierten Programmiersprachen dienen.

Kompatibilität:

  • Snap! kann die meisten Scratch-Projekte importieren und ausführen.
  • Snap! bietet mehr Flexibilität für komplexere Algorithmen und Datenstrukturen.

Beide teilen die blockorientierte visuelle Programmierung und eignen sich gut für den Bildungsbereich, aber Snap! bietet mehr Möglichkeiten für fortgeschrittene Programmierkonzepte.

Und:

Angelo sieht wahrscheinlich Ähnlichkeiten zwischen Snap! und Smalltalk in mehreren Bereichen:

  1. Objektorientierter Ansatz – Beide Systeme basieren stark auf objektorientierter Programmierung. In Snap! arbeitet man mit Sprites als Objekte, ähnlich wie in Smalltalk alles ein Objekt ist.
  2. Live-Programmierumgebung – Sowohl Smalltalk als auch Snap! bieten eine interaktive Umgebung, in der man Code schreiben und sofort ausführen kann, ohne separaten Kompilierungsprozess.
  3. First-Class-Funktionen – Snap! behandelt Funktionen als First-Class-Objekte, die gespeichert, weitergegeben und manipuliert werden können – ein Konzept, das auch in Smalltalk wichtig ist.
  4. Alles-ist-ein-Objekt-Philosophie – In Snap! können Sprites, Skripte und sogar Blöcke als Objekte behandelt werden, ähnlich wie in Smalltalk.
  5. Metaprogrammierung – Die Fähigkeit, Programme zu schreiben, die andere Programme erzeugen oder manipulieren, ist in beiden Systemen möglich.
  6. Benutzerdefinierte Blöcke – In Snap! kann man eigene Blöcke definieren, was an Smalltalks Methoden-Definition erinnert.
  7. Dynamische Typisierung – Beide Systeme verwenden dynamische Typisierung ohne vorherige Typdeklarationen.

Snap! wurde zwar nicht direkt in Smalltalk implementiert, übernimmt aber viele philosophische und konzeptionelle Elemente, die Smalltalk zu einer einflussreichen Sprache gemacht haben, insbesondere im Bildungsbereich.

S.a. Video von Jens Möning dazu.

Hier noch ein anderer Textgenerator mit der Markov-Chain.

Nächste Mal normal.