Dein letzter Login ist schon eine Weile her.

Bitte überprüfe, ob alle Angaben in Deinem Profil noch aktuell sind.


12.09.2018
von Jan-Dirk
in IT-Talents

Was ist Funktionale Programmierung?

Wann setze ich sie ein?

"Mit funktionaler Programmierung ein besserer Entwickler werden". Viele Artikel rufen aktuell dazu auf, der funktionalen Ordnung zu folgen. Ist der funktionale Programmierstil für Dich geeignet? Für welche Programmiersprachen lässt es sich anwenden? Muss eine hochwissenschaftliche Sprache wie Haskell verwendet werden? Diese Fragen beantwortet unser Artikel.

Lesezeit: ca. 3 Min.

Bewerten

Themen auf dieser Seite:

Woher kommt der funktionale Programmiertrend?

Vor einigen Jahren kam der Ruf nach Objektorientierter Programmierung auf. Nach dem Erscheinen von PHP 5 war ein guter Zeitpunkt, die Qualitätsstandards für PHP-Code neu zu setzen. Weg vom freien Programmieren und Spaghetticode und hin zu einer besseren Wartbarkeit. Alles wurde zu Objekten.

Heute ist es die Evolution von ECMAScript, bekannter unter dem Namen (funktionales) JavaScript, die eine Trendwende mit sich bringt. Die 2015 veröffentlichte Version ES6 bringt unzählige Verbesserungen. Angular, React und Vue sind die neuen Frontend-Frameworks für Webprojekte und Apps. JS-Bibliotheken wie jQuery gehören zum alten Eisen. Dieser Wandel bringt erneut den Ruf nach einer besseren Codestruktur mit sich.

Was ist Funktionale Programmierung?

Ein Programmierparadigma das in den 1930er Jahren entwickelt wurde und sich auf mathematische Grundlagen stützt. Moment, machen das nicht alle Programmiersprachen?

´´´´
var x = 1;
x = x + 1;
´´´´

Ein Code-Beispiel, das Mathematiklehrer zum Verzweifeln bringt. Obwohl x = x + 1 in Algebra und Arithmetik unmöglich ist, findet dieser Code in tausenden Programmen Verwendung. In einer funktionalen Programmiersprache ist diese Codezeile hingegen illegal.

Reine Funktionen

Rein funktionale Programmiersprachen erfordern reine Funktionen (engl. Pure Function). Eine reine Funktion

  • verwendet einen Eingabewert,
  • gibt den gleichen Ausgabewert zurück,
  • hat keine Seiteneffekte,
  • beachtet die Unveränderbarkeit von Variablen.

Seiteneffekte

Einfache Seiteneffekte sind ein console.log oder das Speichern einer Variable in die Datenbank. Hoppla, werden manche Entwickler denken. Ich kenne keine Alternative. Es geht nicht darum, console.log zu verbieten, sondern Berechnung und Speicherung nicht in ein und derselben Funktion zu vermischen.

Unveränderbarkeit

Die Unveränderbarkeit (engl. Immutability) von Variablen ist ein Verbot, das sich nicht auf reine Funktionen beschränkt. Variablen werden in funktionalen Programmiersprachen grundsätzlich nicht geändert. Stattdessen wird eine Kopie für den geänderten Wert erstellt.

Rekursion statt Schleife

Da die Unveränderbarkeit einfache Zähler in Schleifen betrifft, verwendet die Funktionale Programmierung kein for, while, do und repeat. Anstelle dieser Schleifenkonstrukte wird Rekursion verwendet:

´´´´
function sumRange(start, end, acc) {
if (start > end)
return acc;
return sumRange(start + 1, end, acc + start)
}
´´´´

Funktionen höherer Ordnung

Funktionen höherer Ordnung (engl. Higher Order Functions) können eine Funktion als Parameter verwenden. So ist es möglich, eine reine Funktion zur Berechnung in einer ebenso reinen Funktion zur Speicherung eines Datensatzes zu verwenden.

Warum funktional programmieren?

Was zuerst wie unnötiger Aufwand klingt, ist nicht nur wesentlich sauberer. Es vereinfacht die Fehlersuche und das Schreiben von Unit Tests. Nicht zuletzt erhöht es die Wartbarkeit des Codes immens.

Die multiparadigmatische Programmiersprache JavaScript entwickelt sich rasant. Die Versionen 2016, 2017 und 2018 zeigen die Evolution der Scriptsprache deutlich. Die oft kritisierte Fehlertoleranz wird von Version zu Version der Notwendigkeit sauberer Codestrukturen und Programmierparadigmen weichen.

Einsatzgebiete für die Funktionale Programmierung

Neben funktionalem JavaScript und rein funktionalen Programmiersprachen wie Haskell sind auch C#, Python, Java und PHP für den Einsatz funktionaler Programmierung geeignet. Für Einsteiger wie Umsteiger lohnt sich ein Blick auf die junge Programmiersprache Elm, die zu JavaScript, Haskell, OCaml, F# oder Clojure kompiliert.

Funktionale Programmierung lernen mit Elm

Sich auf jeden Programmiertrend und alle neuen Sprachen zu stürzen ist weder möglich noch sinnvoll. Ein kleiner Exkurs in eine rein funktionale Sprache wie Elm hilft jedoch, seinen Programmierstil zu verbessern. Code wird lesbarer, verständlicher und wartbarer.

Ein gute Übung ist es, ein kleines Programm oder einen Programmteil mit Elm neu zu schreiben. Nach dem Refactoring kann der Quellcode mit dem kompilierten und dem alten Code verglichen werden. Die Vereinfachung des Codes ist deutlich sichtbar. Viele Programmierer haben mit Elm einen großen Sprung gemacht. Einige sind bei Elm geblieben.

Fazit

Wer die verschiedenen Programmierparadigmen zu nutzen weiß, kann besser entscheiden welche Codestruktur für ein Projekt und die meist vorgegebene Sprache geeignet ist. Kein Ansatz ist für jede Aufgabenstellung passend. Erfahrene Programmierer, die in der Konzeptionsphase die richtige Entscheidung treffen, erzeugen wartbaren Code und werden Jahre später noch gerne an dem Projekt arbeiten.

Eine Software zur Verwaltung von Objekten, die in Beziehung zueinander stehen wird mit der objektorientierten Herangehensweise am besten gelingen. Eine umfangreiche Benutzeroberfläche, die über viele ähnliche Funktionen verfügt, würde damit im Chaos enden. Hier ist die Funktionale Programmierung genau richtig.


Diskutiere zu dem Thema in der Community:

Zum Thread: Was ist Funktionale Programmierung?

Aktuelle Aktionen:

IT-Stipendien im Mai 2019

1200€ Förderung für IT-Talente - bundesweit


Sei dabei und sichere Dir beim IT-Stipendium im Mai 2019 bis zu 1200€ Förderung!
Jetzt bewerben!

Zusätzliches IT-Stipendium für IT-Talente aus NRW


Sei dabei und sichere Dir beim IT-Stipendium im Mai 2019 bis zu 1200€ Förderung!
Jetzt bewerben!

IT-Talents ist ein Netzwerk nur für IT'ler. Auf unserer Plattform kannst Du Dich als registriertes Mitglied mit wenigen Klicks auf die Jobs unserer Partnerunternehmen oder auf IT-Projekte für Studierende bewerben. Darüberhinaus führen wir Wettbewerbe durch und vergeben IT-Stipendien.

Jetzt Mitglied werden.

Verwandte Artikel

Was ist SAP PM?

15. May 2019 in Software

SAP PM bietet eine umfassende Palette von Business-Softwarelösungen, damit Unternehmen ihre Geschäftsmodelle optimieren u…

weiter

Was ist SAP EWM?

14. May 2019 in Software

Die reibungslosen Prozesse im Bereich der Lagerlogistik sind von fundamentaler Bedeutung für Unternehmen. Aus diesem …

weiter

Was ist SAP PP?

13. May 2019 in Software

Der Produktionsprozess hat in den letzten Jahrzehnten einen Wandel erlebt. Die begrenzte Auswahl von Produkten und…

weiter

Was ist SAP MM?

10. May 2019 in Software

SAP ist mit dem Modul MM (Materials Management) in der Materialwirtschaft längst angekommen. Das Modul SAP MM gilt als …

weiter

Was ist ABAP?

09. May 2019 in Software

Mit ABAP hat SAP eine Programmiersprache für alle seine Anwendungen im SAP-Produktbereich entwickelt, die proprietär i…

weiter

Was ist ein Wrapper?

07. May 2019 in IT-Talents

Bist Du schon einmal über die Bezeichnung Wrapper gestolpert, weißt aber noch nicht so recht, was es damit auf sich h…

weiter

GUI - Definition, Bestandteile und Anforderungen

07. May 2019 in IT-Talents

Eine GUI, Abkürzung für Graphical User Interface, ist ein Computerprogramm, mit dem eine Person mithilfe von Symbolen, v…

weiter

Was ist Webdesign?

05. May 2019 in IT-Talents

Jeder, der sich mit dem Internet und all seinen Möglichkeiten auseinandersetzt, wird früher oder später über den Beg…

weiter

Was bedeutet Ontologie in der Informatik?

01. May 2019 in IT-Talents

Die Ontologie ist mit die wichtigste Grundlage für die fehlerfreie und unmissverständliche Kommunikation im Bereich der I…

weiter

Schnell-Login für unsere Mitglieder

Tipp: Halte Dein Profil aktuell.

Lass' uns wissen, falls sich etwas Neues bei Dir ergibt.

Tipp: Vervollständige Dein Profil für noch bessere Karrierechancen.

Bist Du Schüler, Student oder bereits berufstätig? Teile uns Deinen aktuellen Status mit, damit wir Dir sinnvolle Aufgaben anbieten können.

Jetzt Status angeben

Wann stehst Du der IT-Branche zur Verfügung?

Bitte Monat und Jahr angeben.

{{ perspectiveForm.availableFrom.$error.dynamic }}

Neuer Versuch

Wo möchtest Du durchstarten?

{{ location.geolocation.name }}×
Bitte mindestens ein Ort angeben.

Als {{currentUser.status.title}} bist Du bereit für:


Lade Beschäftigungsarten

Bitte wähle den Zeitpunkt, Ort und min. eine Beschäftigungsart aus.

You have voted!
Schliessen
Vote for:
stars
Vote
You have not rated!