Wiedererkennungswert mit bekannten Sprachen

Seit Fortran bis heute haben sich Konstrukte ergeben, die sich in sehr vielen Sprachen wiederfinden: if, while, for, switch. Diese Schlüsselwörter sind vermutlich jedem Entwickler als Muster eingebrannt, an denen er, zusammen mit der Strukturierung des Sourcecodes, Schlüsselstellen von Algorithmen erkennt. Sprachen, die diese einfachen Muster einhalten, sind von den meisten Entwicklern problemlos zu lesen.

Entsprechend wünschenswert ist es, wenn derartige Schlüsselstellen weiterhin mit diesen Schlüsselwörtern bezeichnet werden. Selbiges gilt für die Strukturierung. Obwohl eine ausschließlich ausdruckorientierte Sprache über keine Konstrukte verfügt, sollen Schlüsselwörter, die für Konstrukte verwendet werden nicht verschwinden. Damit ergeben sich aus der Forderung bereits die ersten Operatoren, um einfache Algorithmen zu formulieren.

Daraus ergibt sich jedoch auch, dass alle Schlüsselwörter, die in Konstrukten verwendet werden, eine entsprechende Funktion als Operator übernehmen müssen. Die Grundidee war ein Aufbau auf die Sprache C++, die die gleichen Schlüsselwörter zur Beschreibung von Algorithmen benutzt, wie C. Aus diesem Grund und da sich die C-Syntax in C++, C# und Java, sowie ähnlich in vielen anderen Sprachen wie PHP wiederfindet, werde ich mich ebenfalls auf diesen gemeinsamen Nenner dieser Sprachfamilie stützen. Die Schlüsselwörter aus C sollen daher zur Übersicht weiter verwendet werden, müssen jedoch eine sinnvolle Rückgabe liefern.

Befehl Rückgabetyp Beschreibung der Rückgabe
if objekt Wertrückgabe der Bedingung
else objekt gibt den Wert des linken Operanden zurück und führt den rechten aus
do, for, while objekt Wertrückgabe der Bedingung
switch objekt Wertrückgabe
case boxed bool bool, Vergleich mit dem über switch angegebenen Wert
default boxed bool true
break, continue, return boxed neutral neutral, bricht aber die weitere Auswertung des Ausdrucks ab

Damit ähnelt die Beschreibung eines Algorithmus zunächst optisch einem C-Programm. Da jeder Operator per Definition einen Datensatz zurückliefern muss, der im Datentyp objekt vorliegt, werden die Wahrheitswerte von case und default in ein Objekt gepackt. Sie sind damit „boxed“. Bei den Sprungbefehlen break, continue und return wird der Ausdruck nicht mehr vollständig bearbeitet, nach Bearbeitung des Sprung-Operators wird der Ausdruck verlassen und nicht weiter bearbeitet, entsprechend macht eine typengerechte Rückgabe keinen Sinn mehr. Sie verhalten im Ausdruck daher neutral, geben also keinen Wert zurück.