Wo Klarsatz steht
Eine schematische Karte zwischen Logo, Robot Karol, Scratch und Python — ohne Werturteil, mit Quellen.
>
Ein Sprachexperiment · Version 0.11.2
Klarsatz ist eine deutschsprachige Programmiersprache zum Programmieren lernen: Die Befehle sind ganze deutsche Sätze. Sie läuft ohne Installation im Browser. Du lernst Variablen, Bedingungen und Schleifen — und führst dein erstes Programm später als Python weiter. Dahinter steckt die Frage, wie nah eine formale Sprache an deutsche Sätze heranrücken kann, ohne ihre Eindeutigkeit zu verlieren.
Dasselbe Programm zweimal: einmal in Python, einmal in Klarsatz. Die Konzepte sind identisch: eine Schleife, drei Bedingungen, eine Ausgabe. Verschieden ist nur, wie viel man vorher wissen muss, um die linke Spalte zu lesen.
Python
for i in range(1, 30 + 1):
if (i % 15 == 0):
print('FizzBuzz')
elif (i % 3 == 0):
print('Fizz')
elif (i % 5 == 0):
print('Buzz')
else:
print(i)
Klarsatz
Zähle von 1 bis 30 mit i:
Wenn i durch 15 teilbar ist, zeige "FizzBuzz".
Sonst wenn i durch 3 teilbar ist, zeige "Fizz".
Sonst wenn i durch 5 teilbar ist, zeige "Buzz".
Sonst zeige i.
Ende.
Der Quelltext ist die Erklärung.In der Python-Fassung muss man erst lernen, was range, % und elif bedeuten. In der Klarsatz-Fassung steht es da. Was die Sprache sonst noch kann, steht weiter unten.
Klarsatz versucht nicht, das Programmieren einfacher zu machen. Es versucht, zwei Lernprobleme zeitlich auseinanderzuziehen: erst das Denken in Schritten — und dann, in Python, die fremde Schreibweise samt englischer Fachbegriffe. Die Annahme dahinter ist, dass beides zusammen für den Anfang zu viel ist.
Kein Download, kein Konto, kein Seitenwechsel. Drück auf Ausführen — Klarsatz wird geladen und das Programm läuft hier, in dieser Seite.
Merke 5 als Zahl. Erhöhe die Zahl um 3. Zeige "Fünf plus drei ist " und Zahl und ".".
Das ist die Spielwiese — sie läuft jetzt hier, in dieser Seite. Du bist nirgendwo hingewechselt. Ändere den Text im Editor und drück wieder auf Ausführen. Über dem Editor kannst du unter 31 Beispielen wählen — und der Knopf Als Python zeigt dasselbe Programm in Python, Zeile für Zeile. Mit mehr Platz weitermachen →
Klarsatz ist eine kontrollierte natürliche Sprache. Der Fachbegriff klingt sperrig, sagt aber genau, worum es geht: Die Sprache soll klingen wie Deutsch — und darf trotzdem nicht so vieldeutig sein wie Deutsch. Sie darf deutsch aussehen. Sie darf nicht deutsch raten.
Natürlichkeit
Zeige die Summe. Merke dir die 5 als Zahl. Zeige mir bitte "Hallo".
Wer den Satz laut vorliest, hat den Befehl schon erklärt. Artikel und Höflichkeitswörter werden überlesen, Groß‑/Kleinschreibung ist egal, Umlaute darf man als ae/oe/ue schreiben.
Kontrolle
Wenn Punkte mindestens 10 sind:
Zeige "Geschafft!".
Ende.
Jeder Satz muss auf ein festes Muster passen. Der Punkt am Ende ist Pflicht, gleich ist Pflicht, jeder Block braucht sein Ende. — und Sag Hallo. versteht Klarsatz nicht, so klar der Satz für uns auch ist.
Die Kontrolle ist kein Rückschritt gegenüber der Natürlichkeit — sie ist ihre Bedingung. Das Stichwort heißt Eindeutigkeit: Ein Parser, der aus echtem Deutsch erraten müsste, was gemeint ist, wäre unberechenbar — und Raten ist das Letzte, was ein Programm tun soll. Die Kunst liegt darin, den Spielraum innerhalb der Muster so groß zu machen, dass sich der Zwang nicht wie Zwang anfühlt.
Der Kurs fragt dich in jeder Lektion zuerst, was wohl herauskommt — dann probierst du es aus, dann veränderst du es. Wer nur liest, lernt Vokabeln. Wer vorhersagt, lernt Programmieren.
Eine ganze Lektion macht absichtlich Programme kaputt und liest die Meldungen. Denn Klarsatz schimpft nicht, es hilft:
Stell die Spielwiese auf die Stufe, bei der du gerade bist — dann kennt Klarsatz auch nur so viel. Wer zu früh nach einem Wort greift, liest:
Sieben Stufen, vom Zeigen bis zum Zeichnen.
Dazu ein Knopf Prüfen, der ein Programm durchliest, ohne es auszuführen — er findet Tippfehler, bevor sie jemanden aufhalten.
Ein zweiter Kurs in acht Lektionen — und es ist nicht etwa ein anderes Thema: Es sind dieselben Schleifen und Bedingungen wie im ersten Kurs — hier kann man ihnen beim Arbeiten zusehen.
Der Weg: Vielecke und die Regel dahinter, Farben und Strichstärke, Muster aus zwei ineinanderliegenden Schleifen, Zufall, eigene Bausteine — und am Schluss eine Anzeige, die sich bewegt.
Das Bild daneben ist kein Symbol. Es ist das, was dieses Programm malt:
Nimm die Farbe "gold".
Wiederhole 12 Mal:
Wiederhole 4 Mal:
Gehe 70 Schritte vor.
Drehe dich um 90 Grad nach rechts.
Ende.
Drehe dich um 30 Grad nach rechts.
Ende.
Bis hierher ging es darum, was Klarsatz ist und wie man anfängt. Wer es genauer wissen, mehr sehen oder erst noch entscheiden will, findet hier weiter.
Eine schematische Karte zwischen Logo, Robot Karol, Scratch und Python — ohne Werturteil, mit Quellen.
Das Spiel des Lebens und ein Routenplaner mit Dijkstra — zwei Programme, die zeigen, dass „einfach zu lernen“ nicht „nur einfache Programme“ heißt.
Eine ehrliche Eignungstabelle, dazu die Brücke nach Python für alle, die weiterziehen.
Acht unbequeme Fragen, mit der ehrlichsten Antwort, die ich geben kann — nicht mit der günstigsten.
Werte merken, entscheiden, wiederholen, zeichnen, sammeln, gliedern — in Sätzen, die man laut lesen kann.
Merke 5 als Zahl. Setze die Zahl auf 7. Erhöhe die Zahl um 1. Merke "Wolfgang" als Name. Verbinde "Hallo, " und Name zu Gruss. Zeige Gruss.
Merke 25 als Alter.
Wenn Alter mindestens 18 ist:
Zeige "willkommen".
Sonst:
Zeige "zu jung".
Ende.
Wiederhole 3 Mal:
Zeige "Klarsatz".
Ende.
Zähle von 1 bis 10 mit i:
Zeige i.
Ende.
Erstelle eine Liste namens Einkauf.
Füge "Milch" zur Einkauf hinzu.
Sortiere Einkauf.
Für jedes Element in Einkauf:
Zeige Element.
Ende.
Definiere Aufgabe Summe von a und b:
Gib a plus b zurück.
Ende.
Zeige Summe von 3 und 4.
Nimm die Farbe "gold".
Wiederhole 4 Mal:
Gehe 120 Schritte vor.
Drehe dich um 90 Grad rechts.
Ende.
Erstelle eine Tabelle namens Preise. Trage "Apfel" mit 3 in Preise ein. Trage "Kiwi" mit 5 in Preise ein. Zeige Wert für "Apfel" in Preise.
Ein Hund hat einen Namen und ein Alter.
Erschaffe einen Hund mit Name "Rocco"
und Alter 5 als Waldi.
Zeige den Namen von Waldi.
Zur vollständigen Dokumentation
Und ein paar Entscheidungen, die man erst beim Benutzen merkt:
Jeder Befehl folgt einem festen Muster, das sich vorlesen lässt. Der Parser versteht nicht, was du meinst — er erkennt, welchem Muster dein Satz entspricht. Genau deshalb bleibt die Sprache eindeutig, obwohl sie nach Deutsch klingt.
Zeige die Summe. und Zeige Summe. sind dasselbe. Artikel, Umlautschreibung und Groß‑/Kleinschreibung werden überlesen, damit der Satz natürlich bleiben darf.
Unbekannte Namen führen nicht zu einem Absturz, sondern zu einem Vorschlag: „Meintest du 'Summe'?“ Zugriffe hinter das Listenende sind immer ein klarer Fehler, nie ein stiller Fehlgriff.
Kommazahlen erscheinen in der Ausgabe so, wie man sie hier schreibt: 3,5 statt 3.5. Texte werden nach deutscher Sortierreihenfolge verglichen — Äpfel vor Birnen.
Der Interpreter ist reines Python 3 ohne Fremdpakete und besteht aus überschaubaren Stufen: Lexer, Satzmuster‑Parser, Syntaxbaum, Interpreter. Kein eval, kein Nachladen von Code.
Klarsatz ist ein Lernprojekt — für alle, die das Programmieren nicht gleichzeitig mit einer Fremdsprache lernen wollen. Die Sprache erklärt sich beim Lesen.
Der Spielplatz führt Klarsatz-Programme direkt im Browser aus — und zeigt Zeichnungen auf einer Leinwand gleich daneben. Nichts davon verlässt das Fenster.
Wir haben versucht, es kaputtzumachen: Ein Werkzeug zerhackt die Beispielprogramme nach dem Zufallsprinzip und verfüttert die Trümmer an den Interpreter. Nichts ist abgestürzt, nichts hängen geblieben — jedes Mal kam eine ruhige deutsche Fehlermeldung.
Das heißt: in diesen Läufen ist nichts passiert — nicht, dass nichts passieren kann. Der Unterschied ist wichtig, und weiter unten steht, was der Prototyp deshalb trotzdem nicht ist.
Im Spielplatz arbeiten Lies und Schreibe auf einem Dateisystem im Arbeitsspeicher, das mit dem Lauf verschwindet. Es gibt keinen Weg von einem Programm auf eine Festplatte — weder auf deine noch auf den Server.
Der echte Interpreter läuft als Python im Browser — in einem abgeschotteten Hintergrundprozess ohne Zugriff auf die Seite. Kein Server führt Programme aus, nichts wird gesendet.
Schritt- und Zeitgrenzen brechen Programme ab, die nicht von allein fertig werden. Hängt ein Lauf, wird der Hintergrundprozess beendet und neu gestartet.
Neben Ausführen steht ein Knopf Prüfen. Er liest das Programm durch, ohne es zu starten, und zeigt Tippfehler und vergessene Namen an — hilfreich, wenn man noch unsicher ist. Auf der Kommandozeile heißt er --pruefe.
Klarsatz kennt kein eval, kein Nachladen und keinen Zugriff auf darunterliegende Funktionen. Ein Programm kann nur das, was in dieser Dokumentation steht.
Weil wir versucht haben, es kaputtzumachen. Ein eigenes Werkzeug nimmt die Beispielprogramme und zerhackt sie nach dem Zufallsprinzip: Es löscht Zeichen, vertauscht Wörter, verschiebt Zeilen, verbiegt die Einrückung, entfernt Punkte, ersetzt Zahlen durch 0, −1 oder eine mit 31 Stellen. Die Trümmer bekommt dann alles vorgesetzt, was mit Programmtext umgeht — er wird ausgeführt, geprüft, formatiert und nach Python übersetzt.
Erlaubt ist dabei nur eins: eine ruhige deutsche Fehlermeldung. Stürzt etwas ab oder bleibt hängen, zählt das als Treffer.
Jeder dieser Läufe lässt sich einzeln nachstellen — und einmal pro Woche läuft die Prüfung automatisch neu, mit anderen Zufallszahlen. Was das belegt und was nicht, steht in docs/SICHERHEIT.md.
Reines Python 3, keine Fremdpakete, keine Installation: herunterladen, entpacken, loslegen.
Im Archiv steckt alles, was zum Ausprobieren nötig ist — und der gesamte Quelltext dazu, denn Klarsatz ist zum Nachlesen gebaut.
unzip klarsatz-0.11.2.zip
cd klarsatz-0.11.2
python3 -m klarsatz programme/03_taschenrechner.klar
SHA256 6b3b6a90…
vollständig in der Prüfsummendatei
Lieber den Quelltext? Klarsatz liegt offen auf GitHub — mitlesen, abzweigen, Fehler melden, Sätze vorschlagen.
Quelltext auf GitHubVersion 0.11.2. Ein bewusst begrenztes Experiment — „begrenzt“ ist dabei keine Entschuldigung, sondern eine Entscheidung: Was dem pädagogischen Ziel nicht dient, kommt nicht hinein. Was daraus geworden ist, steht hier — samt dem, was fehlt.
Variablen und Konstanten, Rechnen und Vergleichen, Bedingungen, fünf Arten von Schleifen, Listen und Tabellen, Werkzeuge für Texte, Zeichnen mit Stift und Farben, eigene Aufgaben, Dinge mit Feldern und das Abfangen von Fehlern — dazu ein Prüfmodus, der Fehler findet, ohne das Programm auszuführen.
Dazu die Lernhilfen: die sieben Lernstufen, zwei Kurse mit neunzehn Lektionen und die Übersetzung nach Python.
Und woher weiß man, dass beim Weiterbauen nichts zerbricht? Bei jeder Änderung spielt ein Testprogramm alle Beispiele durch, als säße ein Mensch davor. Beim Primzahlen-Programm tippt es der Reihe nach 1, abc, 2,5, 0 und 7 ein — auch den Unsinn, denn der muss ja abgefangen werden — und prüft dann, ob wirklich „7 ist eine Primzahl.“ dasteht und „Teiler von 12: [1, 2, 3, 4, 6, 12]“.
Genauso wird jedes Codebeispiel in den Kursen und in dieser Dokumentation ausgeführt: Steht darunter eine Ausgabe, muss genau die herauskommen. Weicht eine einzige Zeile ab, schlägt die Prüfung an und sagt, in welcher Datei und welcher Zeile. Dazu kommen die 60 000 verdorbenen Programme von weiter oben.
Im Quelltext schreibt man Kommazahlen mit Punkt (3.5), weil das Komma dort Satzteile trennt — beim Antworten auf eine Frage darf man dagegen 3,5 tippen. Die Kurzform von Wenn führt genau einen Satz aus. Der Prüfer arbeitet ohne Datenfluss, kennt also keine Typen.
Übungsaufgaben, die sich selbst prüfen. Falls vorhanden: für Optionalwerte. Fähigkeiten im Sinne von Diese Aufgabe darf nur lesen. Mehrere Sätze in der Kurzform von Wenn. Und irgendwann vielleicht ein Bytecode-Compiler — der steht ganz hinten, weil er dem Lernen nichts bringt.
Klarsatz ist ein Lern- und Hobbyprojekt. Der Interpreter begrenzt Schritte, Zeit, Speicher und Dateizugriff — eine geprüfte Sandbox ist er trotzdem nicht. Der Spielplatz dieser Seite geht deshalb den sicheren Weg und führt überhaupt nichts auf dem Server aus, sondern alles im Browser des Besuchers.
Fragen? Feedback?
Schreib mir — über Klarsatz, über einen Fehler, über eine Idee, oder wenn du es im Unterricht einsetzen willst.
Fehler und Vorschläge gern auch als Issue auf GitHub.