Funktionale Programmierung ist tot
Kommentare

In letzter Zeit hat die funktionale Programmierung wieder zurück in den Mainstream gefunden. Was ihre Popularität eigentlich hätte pushen sollen, hat stattdessen aber ihr Todesurteil besiegelt, meint Richard Minerich. Warum die funktionale Programmierung tot ist und wie wir stattdessen in Zukunft programmieren sollen, erklärt er in seinem Blog Inviting Epiphany.

Mittlerweile kann fast jede Programmiersprache – egal ob nun funktional im strengen Sinne oder nicht – funktionale Features aufweisen. Laut Minerich hat das aber zu einer Perversion der Idee von der funktionalen Programmierung geführt: Heutzutage genügen schon Lambda-Ausdrücke und eine High Order Functions Library, um zu behaupten, die eigene Sprache unterstütze funktionale Programmierung (siehe Java). Jedoch ermöglichen die meisten dieser angeblich funktional gewordenen Sprachen nicht einmal Simple-Tail-Rekursion, Co-Rekursion oder Funktions-Komposition.

C# bezeichnet Minerich beispielsweise als einen jämmerlichen Versuch, funktionale Features in eine nicht-funktionale Sprache zu integrieren. Reinheit sei scheinbar weder vorhanden noch erwünscht.

Anstelle klarer funktionaler Konzepte erfolge eine Reduktion des Sprachtypus auf seine zugänglichsten Features. Im Falle der funktionalen Sprachen sind das first-class und high-order Funktionen, pure Funktionen sowie Rekursion. Demzufolge habe die Popularisierung der funktionalen Programmierung zu einer verschwommenen Wahrnehmung derselbigen geführt – ein ähnliches Schicksal musste in der Vergangenheit auch schon die Objekt-orientierte Programmierung erleiden.

Allerdings ist die Beerdingung der funktionalen Programmierung gar nicht mal so tragisch, wie sie uns vielleicht auf den ersten Blick erscheinen mag. Immerhin seien es von Anbeginn an nicht die funktionalen Features gewesen, die die heutzutage sogenannte „funktionale Programmierung“ so effizient gemacht haben. Was funktionale Sprachen ausmacht, sei vielmehr die Komposition von Ausdrücken sowie die Möglichkeit, Programme durch Zusammenstecken kleiner modularer Teile zu bauen. First-class Funktionen seien nur ein kleiner Aspekt der funktionalen Programmierung und im Zuge ihrer Popularisierung überbewertet worden.

Minerich meint: Man hätte die funktionale Programmierung von Anfang an als Ausdrucks-orientierte Programmierung bezeichnen sollen. Ausdrucks-orientierte Programmierung sei zwar eine einfache Idee, führe aber zu schönem und ausdrucksstarkem Code. Sie sei der Grund, weshalb funktionale Sprachen klein, einfach und weniger anfällig für Fehler seien. In die Reihe dieser schönen Sprachen fügt sich beispielsweise F# ein – hier ist jedes Sprachkonstrukt außerhalb von Typ-Definitionen an sich ein Ausdruck.

Wenn die reine funktionale Programmierung auch tot ist, können wir dennoch verkünden: Lang lebe die Ausdrucks-orientierte Programmierung!

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -