Algebraische Programmiersprache

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 23. März 2022 um 01:46 Uhr durch imported>Gestumblindi(9787) (SLA abgewiesen, der Artikel existiert seit 2008, da müsste schon ein regulärer Löschantrag gestellt werden, bei Bedarf bitte gerne mit ausführlicherer Begründung).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Eine algebraische Programmiersprache erfüllt die Eigenschaften der referenziellen Transparenz. Das Konzept ist verwandt mit demjenigen funktionaler Programmiersprachen.

Termumformungen von Gleichungen und neue Sprachen

Für Termumformungen von Gleichungen in der Algebra (bzw. Programmcode in Programmiersprachen) müssen Regeln wie das Kommutativgesetz oder das Distributivgesetz gelten. Die Regeln sind allerdings für den Programmcode in vielen Programmiersprachen nicht umsetzbar, da Nebeneffekte – wie Änderung globaler Variablen und IO-Aktionen – in den Funktionen erlaubt sind und somit diese Regeln aufheben.

John W. Backus erkannte diesen Sachverhalt. Als er 1978 den Turing Award erhielt, schlug er in seinem Vortrag die FP-Systeme vor und zeigte Beispiele weiterer Termumformungsregeln.[1]

Die FP-Systeme vermieden allerdings grundsätzlich Variablen, was er in englischer Sprache „Function-level programming“ nannte. Heute wird auch der Lambda-Kalkül in rein funktionalen Programmiersprachen verwendet, es wird dann auf Variablenzuweisungen verzichtet, was es nötig macht, Schleifen durch Rekursion zu ersetzen.

Vorschlag algebraische Programmiersprache

Der Begriff algebraische Programmiersprache soll die Formulierungen function-level programming und rein funktionale Programmiersprache zusammenfassen, da algebraische Regeln und referenzielle Transparenz, die diese Regeln in Programmiersprachen ermöglicht, eng zusammenstehen.

Einzelnachweise

  1. John Backus: Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. In: Communications of the ACM. Vol. 21, No. 8, August 1978, S. 613–641 (PDF; 3,0 MB ), (Archive.org; 30. Januar 2021)