Blockly ist eine freie JavaScript-Bibliothek von Google zum Erstellen blockbasierter, visueller Programmierumgebungen. Die Entwicklung begann 2011 (Neil Fraser), 2012 wurde Blockly als Open Source unter der Apache-Lizenz 2.0 veröffentlicht. Anders als Scratch-Befehle ist Blockly keine eigene Lernsprache, sondern eine Bibliothek: Webentwickler betten sie in ihre Anwendung ein, damit Nutzer Programme aus Blöcken zusammenstecken können, die Blockly anschließend in echten Quellcode übersetzt.

So funktioniert Blockly

Der Editor rendert ineinandergreifende Blöcke im Browser. Jeder Block hat eine Definition (JSON oder JavaScript), die Form, Farbe, Eingabeschlitze und Text beschreibt. Die zentralen Blocktypen:

  • Logik: wenn ... dann ... sonst, Vergleiche (<, =, >), boolesche Operatoren und, oder, nicht.
  • Schleifen: wiederhole n-mal, solange ..., für jedes Element in Liste, zähle mit i von 1 bis 10.
  • Mathematik: Grundrechenarten, Zufallszahl, Minimum/Maximum, mathematische Funktionen.
  • Text: Zeichenkette erstellen, Länge, Teilstring, Großschreibung.
  • Listen: Liste erstellen, Element hinzufügen, Element bei Index.
  • Variablen: Variable anlegen, setze x auf ..., ändere x um ....
  • Funktionen: Funktion definieren, Funktion aufrufen, Rückgabewerte.

Codegeneratoren

Das Herzstück von Blockly sind die Generatoren: Sie übersetzen den Blockbaum in textuelle Sprachen. Standardmäßig werden JavaScript, Python, PHP, Lua, Dart und (über Erweiterungen) weitere Sprachen unterstützt. Zusätzlich lässt sich der Blockbaum als XML serialisieren (<block type="...">) — so können Programme gespeichert, geladen und zwischen Sitzungen übertragen werden.

Bekannte Einsatzgebiete

Blockly steckt in zahlreichen Produkten: Microsoft MakeCode (Editor für den micro:bit und Arcade-Spiele) basiert auf Blockly, ebenso die Programmierkurse von Code.org (Hour of Code) und das Blockly Games-Projekt von Google. Auch die Block-Editoren vieler Bildungs-Roboter (z.B. LEGO Mindstorms-Konzepte und diverse Maker-Boards) nutzen Blockly.

Für den Einstieg in die dahinterliegenden Konzepte empfiehlt sich Scratch-Befehle (fertige Lernumgebung) und JavaScript-Befehle als Zielsprache der Codegenerierung. Wer verstehen möchte, wie aus Blöcken ausführbarer Code wird, findet Grundlagen in Python-Befehle.