Ich habe eine spezielle "Programmiersprache" entwickelt, die (absichtlich) denselben Code nicht zweimal auswerten kann (d. h. sie kann keine Schleifen bilden). Sie dient im Wesentlichen dazu, einen fließdiagrammähnlichen Prozess zu beschreiben, bei dem jedes Element im Flussdiagramm eine Bedingung ist, die einen anderen Test mit demselben Datensatz durchführt (ohne ihn ändern zu können). Verzweigungen können geteilt und zusammengeführt werden, aber niemals in einer zirkulären Weise, d.h. das Flussdiagramm kann nicht in sich selbst zurückgeführt werden. Am Ende einer Verzweigung wird der aktuelle Zustand wiederhergestellt, und das Programm wird beendet.
Ein typisches Programm ähnelt oberflächlich betrachtet einem Programm in einer rein funktionalen Sprache, mit der Ausnahme, dass keine Form der Rekursion erlaubt ist und Funktionen nie etwas zurückgeben können; die einzige Möglichkeit, eine Funktion zu verlassen, ist der Aufruf einer anderen Funktion oder der Aufruf einer allgemeinen Exit-Anweisung, die den aktuellen Zustand zurückgibt. Ein ähnlicher Effekt könnte auch erreicht werden, indem man eine strukturierte Programmiersprache nimmt und alle Schleifenanweisungen entfernt, oder indem man eine "unstrukturierte" Programmiersprache nimmt und jede goto- oder jmp-Anweisung verbietet, die im Code rückwärts läuft.
Meine Frage ist nun: Gibt es eine prägnante und genaue Art, eine solche Sprache zu beschreiben? Ich habe keinen formalen CS-Hintergrund und es fällt mir schwer, Artikel über Automatentheorie und formale Sprachtheorie zu verstehen, daher bin ich etwas ratlos. Ich weiß, dass meine Sprache nicht Turing-vollständig ist, und es ist mir unter großen Schmerzen gelungen, mich davon zu überzeugen, dass meine Sprache wahrscheinlich kann als "reguläre Sprache" eingestuft werden (d.h. eine Sprache, die von einer nur lesenden Turing-Maschine ausgewertet werden kann), aber gibt es einen spezifischeren Begriff?
Bonuspunkte, wenn der Begriff für ein Publikum intuitiv verständlich ist, das sich mit allgemeinen Programmierkonzepten auskennt, aber keinen formalen CS-Hintergrund hat. Bonuspunkte gibt es auch, wenn es eine bestimmte Art von Maschine oder Automat gibt, die eine solche Sprache auswertet. Ach ja, vergessen Sie nicht, dass wir keinen Datenstrom auswerten - jedes Element hat (schreibgeschützten) Zugriff auf den gesamten Satz an Eingabedaten :)