Eine Programmiersprache, die wie Deutsch klingt.
Klarsatz ist ein bewusst begrenztes Sprachdesign-Experiment mit einem klaren pädagogischen Ziel: Programmieranfänger sollen algorithmisches Denken lernen, ohne gleichzeitig eine fremdsprachliche Programmiersyntax entschlüsseln zu müssen. Die Frage dahinter: Wie weit kann man eine formale Sprache an deutsche Satzstrukturen annähern, ohne ihre Eindeutigkeit aufzugeben?
Zwei Sätze zur Abgrenzung, damit die Erwartung stimmt:
Klarsatz ist keine natürliche Sprache. Es ist eine Programmiersprache, deren Syntax sich an
deutscher Alltagssprache orientiert: feste Satzmuster, die sich vorlesen lassen. Sag Hallo.
versteht sie nicht — Zeige "Hallo". schon.
Und sie will keine Zielsprache sein. Am ehesten ist Klarsatz eine didaktische Notation für das Erlernen von Programmierdenken: eine Schreibweise, in der man Variablen, Bedingungen, Schleifen und Funktionen zum ersten Mal sieht, ohne gleichzeitig eine Fremdsprache zu lernen. Danach zieht man weiter — der Knopf Als Python übersetzt jedes eigene Programm.
Frage "Wie heißt du? " und merke die Antwort als Name.
Wenn Name gleich "" ist:
Zeige "Hallo, Unbekannter!".
Sonst:
Zeige "Hallo, " und Name und "!".
Ende.
Klarsatz schreibt man in ganzen Sätzen, mit Punkt am Ende. Es gibt keine geschweiften Klammern,
kein ;, kein == und keine englischen Schlüsselwörter — dafür Artikel, die überlesen werden,
und Fehlermeldungen, die auf Deutsch sagen, was zu tun ist.
A programming language whose syntax is written in plain German — keywords, error messages, documentation and all. Pure Python 3, no dependencies, runs in the browser via Pyodide.
→ Spielwiese im Browser — nichts zu installieren. Der Interpreter läuft als WebAssembly in einem Web-Worker, ohne Server und ohne Zugriff auf die Festplatte. 31 Beispielprogramme sind zum Hineinladen hinterlegt, vom Zahlenraten bis zum grafischen Textadventure.
Du willst programmieren lernen? Das Tutorial führt in elf Lektionen vom ersten Satz bis zum eigenen Programm — und zeigt dir am Ende dasselbe Programm in Python (auch als Webseite). Es lehrt nicht Befehle, sondern das Muster vorhersagen → ausprobieren → verändern, hat eine eigene Lektion übers Fehlerlesen und endet mit einem Projekt ohne Musterlösung.
Danach gibt es einen zweiten Kurs: Zeichnen in acht Lektionen, vom ersten Strich bis zum bewegten Bild (auch als Webseite).
Dazu zwölf Übungsaufgaben, die sich selbst prüfen. Geprüft wird nicht auf
wortgleiche Ausgabe, sondern auf das Wesentliche: Dein Programm wird mit festen Antworten
ausgeführt, und dann wird nachgesehen, ob die Zahl vorkommt, ob überhaupt gefragt wird, ob eine
Schleife benutzt wurde. Im Browser auf der Aufgabenseite,
auf der Kommandozeile mit klarsatz --aufgabe 3 meine_loesung.klar.
Nichts darin ist abgetippt. Ein Test führt jedes Beispiel aus und vergleicht Ausgaben, Fehlermeldungen und die Python-Übersetzung mit dem, was im Text steht — beim Grafikkurs sogar die Bilder selbst: Anzahl der Striche, Farben, und ob eine Figur geschlossen ist.
Dazu gibt es die Projektseite mit Dokumentation.
Klarsatz ist eine Lernsprache. Sie nimmt eine einzige Hürde weg — die fremde Schreibweise — und lässt alles andere am Programmieren unangetastet. Das macht sie für manche Leute sehr gut und für andere überflüssig. Ehrlich eingeschätzt:
| Für wen | Einschätzung | Warum |
|---|---|---|
| Anfänger ab etwa 10 Jahren, deutschsprachig | Gut geeignet | Der Quelltext ist der erklärende Satz. Es gibt nichts zu übersetzen, bevor man denken kann. |
| Schule und Kurse: der allererste Einstieg | Gut geeignet | Elf Lektionen, Lernstufen, Spielwiese im Browser — nichts zu installieren, nichts einzurichten. |
| Erwachsene ohne Englischkenntnisse | Gut geeignet | Befehle, Fehlermeldungen und die ganze Doku sind deutsch. |
| Wer danach Python lernen will | Gut geeignet | Der Knopf Als Python übersetzt jedes eigene Programm — dieselben Ideen, andere Schreibweise. |
| Wer schnell ein Bild sehen will | Gut geeignet | Stift, Farben und Schleifen ergeben in fünf Zeilen ein Vieleck. |
| Hobby: kleine Rechnungen und Spielereien für sich selbst | Bedingt geeignet | Reicht für Listen, Tabellen, Dateien und Text — aber ohne fremde Bibliotheken. |
| Kinder, die noch nicht sicher lesen (unter etwa 8) | Weniger geeignet | Klarsatz wird getippt und gelesen. Zum Klicken und Ziehen ist Scratch das bessere Werkzeug. |
| Wer Englisch kann und sofort Python will | Weniger geeignet | Dann ist der Umweg keiner. Klarsatz spart genau die Hürde, die es bei dir nicht gibt. |
| Erfahrene Programmierer als Zweitsprache | Weniger geeignet | Hier gibt es nichts Neues zu lernen — außer aus Neugier, wie eine deutsche Syntax sich anfühlt. |
| Programme über ein paar hundert Zeilen | Weniger geeignet | Es gibt keine Module, keine Pakete und keinen Namensraum über die Datei hinaus. |
| Webseiten, Apps, Datenauswertung, KI | Weniger geeignet | Dafür fehlt alles: Netzwerk, Bibliotheken, Ökosystem. Das ist Absicht, siehe Sicherheit. |
Die kurze Fassung: Klarsatz ist die erste Sprache, nicht die einzige. Wer damit programmieren gelernt hat, soll weiterziehen — dafür gibt es den Knopf Als Python.
Voraussetzung: Python 3.10 oder neuer. Keine weiteren Abhängigkeiten — nur die Standardbibliothek.
git clone https://github.com/wolfiru/klarsatz.git
cd klarsatz
python3 -m klarsatz programme/03_taschenrechner.klar # ein Programm ausführen
python3 -m klarsatz # interaktive Konsole
python3 -m klarsatz --pruefe meins.klar # Fehler finden, ohne auszuführen
python3 -m klarsatz --formatiere --ersetzen meins.klar # einheitlich einrücken
python3 -m klarsatz --nach-python meins.klar # als lesbares Python ausgeben
python3 -m klarsatz --helpMit pip install -e . heißt der Befehl danach einfach klarsatz.
| Rechnen und Entscheiden | Wiederholen |
|---|---|
|
|
| Eigene Aufgaben | Eigene Dinge |
|
|
Dazu: Listen und Tabellen, Textwerkzeuge, Zufall, Dateien, Winkelfunktionen, Datum und Uhrzeit,
Fehlerbehandlung mit Versuche … Bei Fehler, und eine Schildkrötengrafik:
Nimm die Leinwand 400 mal 400.
Nimm die Farbe "gold".
Wiederhole 4 Mal:
Gehe 120 Schritte vor.
Drehe dich um 90 Grad nach rechts.
Ende.
Beschrifte "Ein Quadrat".
Nimm die Leinwand … legt einen festen Rahmen fest, statt den Ausschnitt an das Gezeichnete
anzupassen — nötig für alles, was sich bewegt. Beschrifte … schreibt an die Stelle des Stifts.
Die vollständige Sprachbeschreibung steht in docs/SPRACHE.md.
In programme/ liegen zweiundzwanzig lauffähige Programme, nach Schwierigkeit geordnet — vorne genügen
Eingabe und Rechnen, hinten kommen Tabellen, Dateien, Rekursion und Zeichnen zusammen:
01_zahlenraten_du_raetst |
08_zahlenraten_computer_raet |
15_baum (rekursiv gezeichnet) |
03_taschenrechner |
11_galgenmaennchen |
16_uhr (tickt wirklich) |
05_primzahlen |
13_spirale |
18_todo_liste (mit Datei) |
07_schere_stein_papier |
14_wellen (Sinus und Kosinus) |
20_grafisches_adventure |
21_spiel_des_lebens (Conway) |
22_routenplaner (Dijkstra) |
Alle mit Kurzbeschreibung in docs/PROGRAMME.md. Jedes Programm wird von
der Testsuite mit einem simulierten Spieler durchgespielt, damit die Beispiele nie veralten.
Weil Klarsatz im Browser läuft und Anfänger damit experimentieren, ist der Interpreter auf
Schadensbegrenzung gebaut: Grenzen für Schritte, Zeit, Speicher und Ausgabe; Dateizugriff nur im
Arbeitsordner (im Browser gar nicht); kein eval, kein exec, kein Nachladen, und ein
Klarsatz-Programm erreicht nie ein Python-Objekt. Ein Python-Traceback dringt nie nach außen —
jeder Fehler endet als deutsche Meldung.
Damit das nicht bloß behauptet ist, gibt es einen Fuzz-Test: Er zerhackt die Beispielprogramme zufällig und verfüttert die Trümmer an Interpreter, Prüfer, Formatierer und Python-Übersetzer. Erlaubt ist nur eine freundliche deutsche Fehlermeldung — jede Python-Ausnahme und jeder Hänger gilt als Fund. Er prüft auch sich selbst: Untergeschobene Fehler müssen auffallen.
Eine geprüfte Sandbox ist das trotzdem nicht, und der Fuzz-Test ist ein Beleg, kein Beweis. Was
abgesichert ist und was nicht, steht ehrlich in docs/SICHERHEIT.md.
| Ordner | Inhalt |
|---|---|
klarsatz/ |
das Paket: Lexer, Parser, Interpreter, Prüfer, Formatierer, Konsole, Web-Schnittstelle, Python-Übersetzer |
programme/ |
zweiundzwanzig Beispielprogramme |
beispiele/ |
kleine Sprachbeispiele, je ein Thema |
docs/ |
die beiden Kurse, Sprachreferenz, Programmübersicht, Sicherheit |
playground/ |
die Spielwiese für den Browser (Editor, Pyodide-Worker) |
editor/ |
VS-Code-Erweiterung, TextMate-Grammatik |
webseite/ |
die Seiten von ruthner.at/klarsatz: seiten/ und assets/ von Hand, kapitel/ als Quelle der Doku-Kapitel |
tools/ |
Generatoren und Werkzeuge für Webseite und Archiv |
tests/ |
462 Tests |
Der Weg durch den Code in einem Satz: Quelltext → lexer.py (Wörter, Artikel werden überlesen) →
parser.py (Satzmuster werden zu einem Baum) → interpreter.py (Baum ausführen). Die
Hervorhebung für VS Code, Pygments und den Browser stammt aus einer Regelliste
(sprachdaten.py) — ein Test vergleicht alle drei Token für Token.
python3 -m unittest discover -s tests -t .
KLARSATZ_KEIN_BROWSER=1 python3 -m unittest discover -s tests -t . # ohne ChromiumOptional für die vollständige Abdeckung: pip install pygments playwright && playwright install chromium.
Fehlen sie, werden die betroffenen Tests übersprungen statt zu scheitern.
Fehlermeldungen, Ideen und Verbesserungen sind willkommen — siehe
CONTRIBUTING.md. Alles im Projekt ist auf Deutsch: Code, Kommentare,
Dokumentation, Commit-Texte.
MIT — benutzen, ändern und weitergeben ausdrücklich erwünscht, solange der Urheberhinweis erhalten
bleibt. Ohne Gewähr: Klarsatz ist ein Lern- und Hobbyprojekt von
Wolfgang Ruthner. Einzelheiten in LICENSE.