Skip to content

Repository files navigation

Klarsatz

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.

Tests Lizenz: MIT Python 3.10+ Ohne Abhängigkeiten

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.

Gleich ausprobieren

→ 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.

Für wen ist Klarsatz — und für wen nicht?

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.

Auf dem eigenen Rechner

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 --help

Mit pip install -e . heißt der Befehl danach einfach klarsatz.

Was die Sprache kann

Rechnen und EntscheidenWiederholen
Merke 7 als Zahl.
Erhöhe Zahl um 3.
Wenn Zahl größer als 5 ist:
    Zeige "groß".
Ende.
Wiederhole 3 Mal:
    Zeige "hallo".
Ende.

Für jedes Tier in Tiere:
    Zeige Tier.
Ende.
Eigene AufgabenEigene Dinge
Definiere Aufgabe Fakultät von n:
    Wenn n kleiner als 2 ist:
        Gib 1 zurück.
    Ende.
    Gib n mal (Fakultät von (n minus 1)) zurück.
Ende.
Ein Hund hat einen Namen und ein Alter.

Erschaffe einen Hund mit Name "Rocco"
    und Alter 5 als Rocco.
Erhöhe das Alter von Rocco um 1.

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.

Beispielprogramme

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.

Sicherheit

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.

Projektaufbau

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.

Tests

python3 -m unittest discover -s tests -t .
KLARSATZ_KEIN_BROWSER=1 python3 -m unittest discover -s tests -t .   # ohne Chromium

Optional für die vollständige Abdeckung: pip install pygments playwright && playwright install chromium. Fehlen sie, werden die betroffenen Tests übersprungen statt zu scheitern.

Mitmachen

Fehlermeldungen, Ideen und Verbesserungen sind willkommen — siehe CONTRIBUTING.md. Alles im Projekt ist auf Deutsch: Code, Kommentare, Dokumentation, Commit-Texte.

Lizenz

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.

About

Ein bewusst begrenztes Sprachdesign-Experiment mit pädagogischem Ziel: algorithmisches Denken lernen, ohne gleichzeitig eine fremdsprachliche Syntax zu entschlüsseln. Interpreter in reinem Python, läuft im Browser.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages