Scratch ist eine der beliebtesten visuellen Programmierumgebungen für Anfänger und Kinder weltweit. Die einfache Bedienbarkeit und das blockbasierte System ermöglichen einen niederschwelligen Einstieg in die Welt der Programmierung. Doch gerade wegen dieser Einfachheit bietet Scratch keine direkte Unterstützung für leistungsfähige Programmiersprachen wie C, die vor allem in der System- und Anwendungsentwicklung zur Anwendung kommen. Hier setzt ein innovativer Proof of Concept an, der die Ausführung von C-Code direkt in Scratch ermöglicht. Dabei werden moderne Webtechnologien wie Emscripten und die Erweiterungsmöglichkeiten von Turbowarp genutzt, um eine Brücke zwischen der Low-Level-Programmierung und der visuellen Oberfläche von Scratch zu schlagen.
Der Kern dieses Projekts basiert auf der Kompilierung von herkömmlichem C-Code in JavaScript mithilfe von Emscripten. Emscripten ist ein leistungsstarker Compiler, der C- und C++-Code in optimiertes JavaScript übersetzt, sodass solche Programme im Webbrowser ausgeführt werden können. Normalerweise wird WebAssembly (WASM) als Ziel verwendet, um bestmögliche Performance zu erzielen. In diesem Fall wird aus bestimmten technischen Gründen, wie der Deaktivierung von CORS (Cross-Origin Resource Sharing), der gesamte Code in eine einzige JavaScript-Datei gebündelt, ohne die Vorteile von WebAssembly zu nutzen. Dadurch entstehen zwar Einschränkungen, dennoch wird die Ausführung von traditionellem C-Code im Scratch-Umfeld ermöglicht.
Da der reguläre Scratch-Editor keine nativen Erweiterungen dieser Art unterstützt, kommt Turbowarp ins Spiel. Turbowarp ist eine alternative Scratch-Entwicklungsumgebung, die weitreichende Anpassungen und das Hinzufügen von benutzerdefinierten Erweiterungen erlaubt. Das Projekt erstellt auf diese Weise eine Art Add-on, welches den kompilierten JavaScript-Code aus dem C-Quelltext aufnimmt und als eine neue Scratch-Funktion zur Verfügung stellt. Dadurch kann der Nutzer aus dem Scratch-Projekt direkt C-Funktionen ausführen lassen, was bisher in der Standard-Scratch-Welt undenkbar war. Technisch gesehen funktioniert die Integration so, dass nach erfolgreicher Kompilierung ein Webserver gestartet wird, der über eine URL eine JavaScript-Datei mit der Funktion bereitstellt.
Beim Öffnen des Turbowarp-Editors mit dieser Erweiterung schaltet sich die eigens erstellte C-Funktion in den blockbasierten Ablauf von Scratch ein und kann wie jede andere Funktion verwendet werden. Beispielsweise werden in der Demo einfache Berechnungen der Fibonacci-Folge implementiert – einmal nativ in Scratch, einmal in JavaScript und einmal im kompilieren C-Code. So lassen sich direkte Vergleiche hinsichtlich Performance und Umsetzbarkeit anstellen. Trotz aller Innovationen bleibt der Proof of Concept in seiner Aussage klar: Er ist weder als vollwertige Lösung noch als alltagstauglich zu verstehen. Die Performance ist überraschend, da die Scratch-eigene Funktion für die Fibonacci-Berechnung deutlich schneller ist als die implementierten C- oder JavaScript-Varianten.
Ein möglicher Grund hierfür ist der Overhead durch das Aufrufen von Funktionen aus einer externen Turbowarp-Erweiterung. Außerdem ist der Verzicht auf WebAssembly in dieser Variante ein bedeutender Nachteil für die Geschwindigkeit. Für Entwickler und Experimentierfreudige liefert der Ansatz dennoch wertvolle Einblicke und eröffnet neue Wege, wie traditionelle Programmiersprachen mit visuellen Umgebungen verbunden werden können. Die Voraussetzungen für die Nutzung sind transparente. Um die C-Integration erfolgreich auszuprobieren, benötigt man eine Umgebung mit installiertem Emscripten, Python und weiteren Entwicklungswerkzeugen wie Make.
Die Umsetzung wurde hauptsächlich auf Linux-Systemen getestet, sollte aber auch unter Windows mit Hilfe von WSL2 (Windows Subsystem for Linux) oder MSYS2 laufen. Nach einmaligem Buildprozess steht der Server zur Verfügung, der die erstellte Erweiterung bereitstellt und den Nutzer zum Experimentieren einlädt. Aus didaktischer Sicht ergeben sich spannende Möglichkeiten. Die Verbindung von C-Code mit Scratch könnte vor allem an Schulen oder in Programmier-Workshops einen neuen Lehransatz bieten. Schüler können auf der einen Seite ihre visuelle Programmierkenntnisse ausbauen und auf der anderen Seite schrittweise an komplexere und performantere Sprachen herangeführt werden.
Dabei bleibt das gewohnte visuelle Umfeld erhalten, was die Einstiegshürde für komplexe Programmierlogik senkt. Ebenso interessant ist die generelle Idee, beliebige Sprachen über JavaScript-kompilierte Erweiterungen in Scratch-artige Systeme einzubinden. Da Emscripten nicht ausschließlich C unterstützt, sondern auch C++ und andere Sprachen, könnten ähnliche Projekte leicht auf weitere Programmiersprachen ausgeweitet werden. Dies eröffnet ein großes Potential zum Experimentieren, Forschen und auch für die Entwicklung von leistungsfähigen Bildungswerkzeugen. Allerdings bleiben technische Herausforderungen.
Die fehlende Unterstützung von WebAssembly schränkt die Leistungsfähigkeit ein. Das Bündeln des gesamten Codes in eine JavaScript-Datei ist aufgrund von deaktiviertem CORS notwendig, erschwert jedoch die Modularität und Wartbarkeit des Codes. Zudem bleibt die Komplexität des Setups für Anfänger hoch, da vor dem Einbinden der Erweiterung diverse Werkzeuge installiert und richtig konfiguriert werden müssen. Standardnutzer des Scratch-Editors werden daher vorerst kaum von dieser Lösung profitieren. Zusammengefasst zeigt das Projekt eindrucksvoll, auf welche Weise modernste Webtools genutzt werden können, um Traditionalitäten in der Programmierung aufzubrechen.
Die Symbiose aus C und Scratch auf Basis von Emscripten und Turbowarp stellt einen mutigen Schritt dar, die Grenzen zwischen visueller und textbasierter Programmierung zu verwischen. Zwar handelt es sich hierbei um einen experimentellen Ansatz mit eingeschränkter praktischer Anwendbarkeit, doch der Gedanke trägt Früchte und inspiriert möglicherweise weitere Entwicklungen in der Lehre sowie im Bereich der Webtechnologien. In Zukunft könnte eine stabile Integration von WebAssembly, besseres Handling von Erweiterungen direkt im Scratch-Editor oder die Entwicklung eigener Low-Level-Scripting-Erweiterungen diese Technologie alltagstauglich machen. Zudem sind Ideen denkbar, bei denen Schüler nicht nur fertigen C-Code einbinden, sondern interaktiv zwischen visuellen Scratch-Blöcken und C-Textcode wechseln können. So könnten Hybride Lernumgebungen entstehen, die das Verstehen von Programmlogik auf mehreren Ebenen fördern.
Das gezeigte Projekt ist ein faszinierender erster Schritt, Digitalisierung, Programmierung und Bildung weiter miteinander zu verbinden. Mit der kontinuierlichen Entwicklung von Webstandards und Compilertechnologie ist es nur eine Frage der Zeit, bis solche Integrationen eine breitere Anwendung und Anerkennung finden. Für Entwickler, Pädagogen und technikbegeisterte Lernende lohnt sich die genaue Beobachtung solcher Ansätze, die die Zukunft niedrigschwelliger Programmierbildung mit leistungsstarken Tools kombinieren.