Es hat sich schon seit einigen Jahren abgezeichnet, aber jetzt mehren sich die Zeichen, daß es beginnt: Die funktionale Programmierung verläßt ihre Nische und wird zum wichtigen Bestandteil zukünftiger Programmiersprachen.
Microsoft plant offensichtlich F# zur gleichberechtigten Sprache neben C# zu machen (Somasegar's WebLog). Dies wäre nur konsequent, da die meisten Neuigkeiten von C# 3.0 - insbesondere LINQ - zuerst in F# ausprobiert und dann in C# übertragen wurden. Wobei C# mit seinen Delegates bereits ein funktionales Element enthält.
Martin Oderskys Scala, eine Sprache für die JVM (alternativ auch CLR), die elegant den objektorientierten und funktionalen Ansatz verbindet, zieht zunehmend Entwickler an, wie z.B. das Lift Web-Framework zeigt.
Die Begeisterung für dynamische Sprachen (Python, Ruby et altera), kommt zum Teil auch daher, daß hier Funktionen vollwertige Elemente sind und die Eleganz funktionaler Programmierung erreicht werden kann. Allerdings wird es Guido van Rossum offensichtlich langsam unheimlich, daß sein Python langsam für viele Nutzer zu einem Lisp ohne Klammern wird (siehe).
Woher nun dieses Interesse? Funktionale Programmierung ist jetzt 50 Jahre alt, wenn man LISP als erste funktionale Sprache ansieht. Im Laufe der Zeit wurden eine Reihe von funktionalen Sprachen entwickelt wie z.B. die ML-Familie, deren jüngstes Kind F# ist, und Haskell. Diese Sprachen führten bislang aber ihr Nischendasein im akademischen Bereich und in der "künstlichen Intelligenz". Sie sind abstrakter und mathematisch besser fundiert als andere Ansätze. Lange Zeit hatten sie den Ruf, weniger effizient zu sein wie imperative und objektorientierte Sprachen.
Die Verwendung in KI-Programmen zeigt, daß die Stärke des funktionalen Ansatzes in der Programmierung von komplexen Algorithmen liegt. Wenn es nur darum geht, Speicherbereiche zu verschieben, geht das auch mit Sprache wie C. Die Anforderungen an Computerprogramme steigen immer weiter und die Entwicklungszeit ist häufig wichtiger als das letzte an Effizienz herauszuholen. Daher lohnt es sich, Sprachen zu bevorzugen, die elegante Formulierungen der Probleme erlauben.
Das funktionale Programmierung erst jetzt ins allgemeine Bewußtsein gerät, hat drei Gründe:
- Sie verbrauchen mehr Speicher, da sie Daten nicht ändern sondern neu erzeugen. Speicher ist aber jetzt billig.
- Die Compiler sind besser geworden, so daß effektiverer Code erzeugt wird.
- Im Gegensatz zu C-Programmen braucht es mehr Erfahrung abzuschätzen, welchen Aufwand ein Stück Code bei der Ausführung braucht. Das ist heute eher akzeptiert als vor zehn Jahren, da dies z.B. auch bei Java nicht immer einfach ist und wir es gewohnt sind mit komplexen Applicationservern und Frameworks umzugehen, deren Innenleben weitgehend unbekannt ist.
Es ist damit zu rechnen, daß sich die gängigen Sprachen (Java und C#) in den nächsten Jahren zu gemischt funktional-objektorientierten Sprachen entwickeln werden. Zum anderen ist es heute leichter, ganz neue Sprachen einzusetzen, da der Microsoftansatz eine CLR für beliebig viele Sprachen zu haben, sich auch in der Welt der JVM durchgesetzt hat und das "J" in JVM nur noch den Ursprung in Java angibt. Interoperabilität zwischen Sprachen ist kein Problem mehr.
Keine Kommentare:
Kommentar veröffentlichen