Zum Inhalt springen

Einführung

Morphic Blocks ist eine TypeScript-Bibliothek, die auf Google Blockly aufbaut. Sie stellt ein einziges Block-Modell in mehreren Modes dar — entwicklerdefinierten visuellen Repräsentationen desselben Programms — und unterstützt so den schrittweisen Übergang zwischen block- und textbasierter Programmierung, oder zwischen beliebigen von dir definierten Repräsentationen.

Es handelt sich um eine einbettbare Bibliothek, nicht um eine App: Du bringst deine eigene Oberfläche, dein Styling und dein Layout mit. Morphic Blocks liefert das Block-Modell, das Mode-System und unstilisierte Views, die du beliebig einbinden kannst.

Dasselbe Programm, in verschiedenen Modes dargestellt:

iconic mode → Icon + Titel (kompakt visuell)
lexical mode → natürlichsprachlicher Block ("print ▢")
syntactic mode → Block in Code-Syntax ("console.log( ▢ );")
code modes → Texteditor-Ansicht (Codespace ersetzt den Workspace)

Darunter liegt stets genau ein Blockly-Block-Modell. Modes ändern nur, wie es dargestellt wird — ein Mode-Wechsel rendert die Blöcke neu; das Programm selbst bleibt unberührt.

  1. Du lieferst Definitionen (JSON): Jeder Block deklariert benannte Elements — seine visuellen Bestandteile (ein Icon, einen Titel, ein Block-Template, ein Code-Template, …).
  2. Du lieferst Behaviors (JS/TS): eine Funktion pro Block-Typ, die ausführbaren Code erzeugt.
  3. Du lieferst CSS: ein Stylesheet pro Mode.
  4. Du deklarierst die Views (Workspaces, Codespaces), bindest die Engine in ihre Container ein und wählst ein Preset: den Mode der Toolbox und das Code-Element, das jeder View zeigt.
  5. Ein Wechsel von Presets zur Laufzeit rendert jeden View aus demselben Modell neu.

Der wichtigste motivierende Anwendungsfall ist der schrittweise Übergang von Block zu Text: Visuelle Hilfestellungen treten nach und nach zurück, während Lernende sicherer werden. Weil Modes Inhalt von Darstellung entkoppeln, unterstützt dieselbe Architektur viele weitere Anwendungen — allein durch neue Modes, Elements und CSS:

  • Lokalisierung — dieselben Blöcke mit natürlichsprachlichen Beschriftungen je Mode (Englisch, Deutsch, Spanisch, …).
  • Barrierefreiheit — Modes für hohen Kontrast, große Schrift, Legasthenie-freundliche oder für Screenreader optimierte Darstellung.
  • Altersgerechte Darstellung — icon-zentrierte Modes für junge Lernende, ausführlicher Text für ältere.
  • Vergleichende Programmierdidaktik — dasselbe Programm in Python-, Java- und C++-Syntax nebeneinander.
  • Experten- vs. Anfänger-Ansichten — kompakte Darstellung für Experten, beschreibende für Einsteiger.
  • Domänenspezifische visuelle Sprachen — eigene Modes für Musik, Robotik, Data Science, Game Design.
  • Dokumentationsangereicherte Blöcke — Beschreibungen, Beispiele oder Begründungen neben den Blöcken.