Die funktionale, seltener auch applikative Programmierung ist ein Programmierstil, der versucht die Formelschreibweise, wie sie aus Wissenschaft und Technik gewohnt ist, möglichst weitgehend auch in der Programmierung anzuwenden. Für (allerdings i. d. R. nur) einfache arithmetische Rechnungen ist dies in den Programmiersprachen seit den fünfziger Jahren möglich, denn man überläßt hier dem Übersetzer die Überführung in maschinennahe „imperative“ Form (Aufbrechen von Termen, Vereinbarung von Zwischenspeichern, Umbesetzung von Speichervariablen, usw.).
Zu den Vorteilen des Programmierens auf solchem „höheren Niveau“ rechnet man neben der offensichtlichen Arbeitsersparnis die knappere Schreibweise, die Möglichkeit, Programmteile während der Entwicklung systematisch umzuformen (transformationelle Programmierung), die einfachere Modularisierung und Programmanalyse, die sowohl dem Programmierer wie dem Übersetzer zugute kommt.
Lange Zeit war die funktionale Programmierung eine Ausnahme, da nur wenige Progrmmiersprachen (APL, LISP) ihr genügend Raum boten, wenngleich die Entwicklung geeigneterer funktionaler Programmiersprachen schon Mitte der sechiger Jahre begann.
Ausdrücke und Funktionen
BearbeitenIn diesem Zusammenhang versteht man unter „Funktion“ nicht die Abbildung der modernen Mathematik,[1] sondern versteht darunter eine λ-Abstraktion, also eine Anweisung, wie man daraus einen Ausdruck gewinnt, indem man an angegebener Stelle den „Parameter“ durch das „Argument“ ersetzt:
F 1 ↔ (λ x. x+1) 1 ↔ 1 + 1 ↔ 2 G A ↔ (λ x. sin (π × x²) A ↔ sin (π × A × A)
Ein funktionales Programm wird also „ausgeführt“, indem ein geschlossener Ausdruck F
a
(auch F (a)
oder (F a)
notiert) ausgewertet („reduziert“) wird.
- ↑ Eingeführt von Richard Dedekind (1831–1916) ????; Funktion wird in der Regel nur für reell- oder complexewrtige Abbldungen gebraucht. Der ältere Funktionenbegriff ist dem des λ-Kalküls ähnlicher.