Programmierung auf Wertebene - Value-level programming

Die Programmierung auf Wertebene bezieht sich auf eines der beiden gegensätzlichen Programmierparadigmen, die John Backus in seiner Arbeit über Programme als mathematische Objekte identifiziert hat , das andere ist die Programmierung auf Funktionsebene . Backus verwendete ursprünglich den Begriff Programmierung auf Objektebene, aber dieser Begriff ist jetzt anfällig für Verwechslungen mit objektorientierter Programmierung .

Programme auf Wertebene beschreiben, wie verschiedene Werte (dh Zahlen, Symbole, Zeichenfolgen usw.) kombiniert werden , um andere Werte zu bilden, bis die endgültigen Ergebniswerte erhalten werden. Neue Werte werden aus vorhandenen Werten durch Anwendung verschiedener Wert-zu-Wert-Funktionen wie Addition, Verkettung, Matrixinversion usw. erstellt.

Herkömmliche von Neumann-Programme sind auf Wertebene: Ausdrücke auf der rechten Seite von Zuweisungsanweisungen befassen sich ausschließlich mit der Erstellung eines Werts, der dann gespeichert werden soll.

Verbindung mit Datentypen

Der Ansatz auf Wertebene für die Programmierung lädt zur Untersuchung des Wertebereichs unter den wertbildenden Operationen und der algebraischen Eigenschaften dieser Operationen ein. Dies wird als Untersuchung von Datentypen bezeichnet und hat sich von der Konzentration auf die Werte selbst und ihre Struktur zu einem Hauptanliegen der wertbildenden Operationen und ihrer Struktur entwickelt, wie dies durch bestimmte Axiome und algebraische Gesetze vorgegeben ist zur algebraischen Untersuchung von Datentypen .

Verbindung mit Lambda-Kalkülsprachen

Lambda-Kalkül- basierte Sprachen (wie Lisp , ISWIM und Scheme ) sind in der Praxis Sprachen auf Wertebene, obwohl sie nicht durch das Design eingeschränkt sind.

Um zu sehen, warum typische Programme im Lambda-Stil in erster Linie auf Wertebene liegen, betrachten Sie beispielsweise die übliche Definition einer Wert-zu-Wert-Funktion

f = λx.E

hier muss x eine Wertvariable sein (da das Argument von f per Definition ein Wert ist) und E muss auch einen Wert bezeichnen (da das Ergebnis von f per Definition ein Wert ist). Typischerweise ist E ein Ausdruck, der die Anwendung wertbildender Funktionen auf Wertvariablen und Konstanten beinhaltet; Dennoch existieren einige wertbildende Funktionen, die sowohl Funktions- als auch Wertargumente enthalten und für begrenzte Zwecke verwendet werden.

Wenn der Begriff Werte so definiert ist, dass er die Wertvariablen selbst enthält, besteht die Ansicht auf Wertebene der Programmierung darin, Werte durch Anwendung vorhandener Programme (wertbildende Operationen / Funktionen) auf andere Werte zu erstellen. Die Programmierung im Lambda-Stil erstellt aus dem Ergebniswert ein neues Programm, indem die Wertvariablen lambda-abstrahiert werden.

Siehe auch