Funktionale Programmierung

Funktionale Programmierung und OO

Leichter, schlanker, schneller durch Funktionale Programmierung

Mit Java hat sich in den letzten 20 Jahren das Paradigma der objektorientierten Programmierung als Standard etabliert. Alternativ dazu wurde – im akademischen Raum – am Paradigma der funktionalen Programmierung gearbeitet, mit Sprachen wie Lisp, ML und anderen.

Seit einigen Jahren entwickeln sich neue Sprachgattungen wie Scala, Ceylon oder Dart, die versuchen, beide Paradigmen unter einem gemeinsamen Dach zusammenzufassen. Auch Java (wie auch C# und C++) wurde um funktionale Elemente erweitert. Welche Vorteile bringen diese Features den objekt-orientierten Sprachen?

  • Die funktionale Programmierung favorisiert immutable Elemente. Diese lassen sich beispielsweise einfacher verstehen als änderbare Elemente und bedürfen keiner Synchronisation. Zudem können iterative Algorithmen von rekursiven abgelöst werden.
  • Funktionen können als Werte behandelt werden und neben ihren eigenen Parametern auch Werte der „Umgebung“, in welcher sie erzeugt wurden, benutzen (Closure).
  • Die Typen von Funktionen (Typen der Parameter und Result-Typ) können häufig automatisch vom Compiler berechnet werden. Funktionen können „anonym“ definiert werden. Solche Funktions-Ausdrücke werden als Lambdas bezeichnet.
  • Durch die partielle Auswertung (Currying) von Funktionen können Parameter reduziert werden um definierte Berechnungen auszuführen.

Funktionale Sprachen beschreiben das „Was“

Objektorientierte Sprachen verwenden das Konzept der imperativen Programmierung. Sie beschreibt das „Wie“ der Lösung. Funktionale Sprachen favorisieren dagegen den deklarativen Stil, der das „Was“ beschreibt.

Die Verwendung funktionaler Konzepte führt zu einer drastischen Reduktion von Code. In Java 8 etwa können anonyme Klassen durch Lambdas ersetzt werden – aus fünf Zeilen Code kann eine einzige werden. Der Quelltext wird so leichter lesbar und auch leichter wartbar, was wiederum die Produktivität der Entwickler steigert.

Für objekt-orientierte Softwareentwickler bedeutet das zwar eine radikale Umstellung auf ein komplett anderes Erscheinungsbild der Features. Sobald ihnen jedoch die Vorteile, die die Verwendung funktionaler Elemente bieten, klar werden, möchten sie diese nicht mehr missen.

Integrata Seminare zur Funktionalen Programmierung:

Scala

Java 8 / JDK8 Update

Bildnachweis: pixabay CC0 Public Domain   by markusspiske

Weiterlesen