Als Ingenieur programmiere ich gelegentlich. Manchmal sollen Programme etwas berechnen, manchmal Daten strukturieren. Und manchmal wird es sehr praktisch, wenn ein Mikrocontroller etwas regeln oder steuern soll – also systemnahe Arbeit.
Dabei habe ich viel mit anderen Technikern zusammengearbeitet und gesehen, welche Schwierigkeiten beim Programmieren immer wieder auftreten.
Mir ist aufgefallen, dass jede Programmiersprache einen bestimmten Charakter hat und eine bestimmte Zielgruppe bedient. Manche legen Wert auf systemnahe Kontrolle und zählen deshalb von null statt von eins, weil der Index dort ein Speicher-Offset ist – und nicht, wie man es als Kind lernt, die erste Position. Andere legen Wert auf Speichersicherheit, aber weniger auf mathematische Korrektheit: Große Zahlen dürfen beispielsweise in kleinere Typen umgewandelt werden und ändern dabei stillschweigend ihren Wert. Diese Aufzählung ließe sich fortsetzen.
Aber welche Sprache legt besonderen Wert auf physikalisch korrekte Rechnungen?
Kann ich schreiben:
var s as f64 in <cm> = 5
und der Compiler passt auf, dass ich nie unabsichtlich eine Zahl in Inch dazu addiere?
Wenn nicht, geht im besten Fall die Arbeit einiger Stunden verloren. Im schlimmsten Fall kann ein solcher Fehler sehr viel teurer werden – wie der Verlust des Mars Climate Orbiters 1999 gezeigt hat.
Und welche Sprache erlaubt uns, physikalische Formeln so zu schreiben, wie wir sie lernen?
Zum Beispiel:
E = m⋅c²
statt:
E = m * c**2
Neben diesen fachlichen Anforderungen ist mir eine weitere Frage wichtig: Kann eine Sprache wirklich leicht zu verstehen und dadurch leicht zu warten sein?
Damit sind es für mich drei Anforderungen:
- physikalische Korrektheit,
- mathematische Notation,
- und eine einfache, intuitive Sprache.
Ich habe keine Programmiersprache gefunden, die diese drei Anforderungen miteinander verbindet.
Also habe ich begonnen, sie selbst zu entwerfen.