© Liashko/Shutterstock.com
Entwickler Magazin
Olis bunte Welt der IT

Funktionales JavaScript

In der Vergangenheit habe ich mich bereits mehrfach als Anhänger der funktionalen Programmierung geoutet. Es handelt sich um einen Ansatz, von dem ich schon seit längerer Zeit sehr begeistert bin. Da ich in letzter Zeit meinen Code am liebsten in JavaScript schreibe, ist es an der Zeit für eine Beschreibung der funktionalen Ideen in diesem Umfeld.

Oliver Sturm


Es ist wohl so, dass Entwickler heutzutage durchaus Verständnis für funktionale Programmierung haben, da die Ideen seit vielen Jahren überall diskutiert werden und Einzug in viele Programmiersprachen gehalten haben, die traditionell eher prozedural oder objektorientiert ausgerichtet waren. Ich stelle fest, dass ich selbst auf Konferenzen bereits 2008 über funktionale Programmierung in C# vorgetragen habe. Wie die Zeit vergeht!

Mein Eindruck 2017 war allerdings, dass Programmierer nun gewissen Gruppen angehören. Da gibts diejenigen, die funktionale Ideen toll finden und sich entsprechend gut damit auskennen. Es gibt aber auch solche, die lieber objektorientiert denken und sich um funktionale Ideen gar keine Gedanken machen wollen. Sie wissen, ich mag Schwarz-weiß-Sichtweisen nicht, und wie so oft geht es auch funktional durchaus auf einem Mittelweg. Es geht gar nicht darum, komplett anderen Code zu schreiben – nur darum, manchmal gewisse Ansätze zu bevorzugen.

Grundlagen

Das haben Sie bestimmt schon mal jemanden sagen hören: Bei der funktionalen Programmierung geht es um Modularisierung mit Funktionen. Funktionen sind also Bausteine, aus denen größere Elemente zusammengesetzt werden. Diese Idee kann unterschiedlich eingängig erscheinen, je nachdem, an was für Anwendungen Sie denken. Leicht erschließt sich das beispielsweise für ein Dienstkonzept, bei dem von außen kommende Aufrufe an Funktionen erzeugt werden, die zustandslos und unabhängig voneinander sind – Klassen braucht man in einem solchen System offensichtlich nicht. Bitte denken Sie, wenn ich von Klassen schreibe, nicht an Datenmodelle! Auch strikt funktionale Sprachen bieten Mechanismen zur Modellierung von Daten. Mir geht es hier um die Frage, wo Funktionen „leben“, in welchem Kontext sie ausgeführt werden. In funktionalem Code sind Funktionen nicht Bestandteil einer übergeordneten Struktur wie einer Klasse, und sie werden unabhängig voneinander ausgeführt, allenfalls im Kontext einer anderen Funktion, wenn Closures verwendet werden.

Um Funktionen als Bausteine verwenden zu können, empfiehlt es sich, gewisse Dinge bei der Erstellung von Funktionen zu beachten. Wichtig ist zum Beispiel das Konzept Partial Application, mit dem die Idee gemeint ist, einer Funktion zunächst nur manche ihrer Parameter zu übergeben und andere für später vorzuhalten. Zur Illustration nehmen Sie einmal an, Sie hätten vor, eine Liste von Werten nach einem Bereich zu filtern:

const values = [1, 7, 11, 25, 77, 384, 9808];const...

Entwickler Magazin
Olis bunte Welt der IT

Funktionales JavaScript

In der Vergangenheit habe ich mich bereits mehrfach als Anhänger der funktionalen Programmierung geoutet. Es handelt sich um einen Ansatz, von dem ich schon seit längerer Zeit sehr begeistert bin. Da ich in letzter Zeit meinen Code am liebsten in JavaScript schreibe, ist es an der Zeit für eine Beschreibung der funktionalen Ideen in diesem Umfeld.

Oliver Sturm


Es ist wohl so, dass Entwickler heutzutage durchaus Verständnis für funktionale Programmierung haben, da die Ideen seit vielen Jahren überall diskutiert werden und Einzug in viele Programmiersprachen gehalten haben, die traditionell eher prozedural oder objektorientiert ausgerichtet waren. Ich stelle fest, dass ich selbst auf Konferenzen bereits 2008 über funktionale Programmierung in C# vorgetragen habe. Wie die Zeit vergeht!

Mein Eindruck 2017 war allerdings, dass Programmierer nun gewissen Gruppen angehören. Da gibts diejenigen, die funktionale Ideen toll finden und sich entsprechend gut damit auskennen. Es gibt aber auch solche, die lieber objektorientiert denken und sich um funktionale Ideen gar keine Gedanken machen wollen. Sie wissen, ich mag Schwarz-weiß-Sichtweisen nicht, und wie so oft geht es auch funktional durchaus auf einem Mittelweg. Es geht gar nicht darum, komplett anderen Code zu schreiben – nur darum, manchmal gewisse Ansätze zu bevorzugen.

Grundlagen

Das haben Sie bestimmt schon mal jemanden sagen hören: Bei der funktionalen Programmierung geht es um Modularisierung mit Funktionen. Funktionen sind also Bausteine, aus denen größere Elemente zusammengesetzt werden. Diese Idee kann unterschiedlich eingängig erscheinen, je nachdem, an was für Anwendungen Sie denken. Leicht erschließt sich das beispielsweise für ein Dienstkonzept, bei dem von außen kommende Aufrufe an Funktionen erzeugt werden, die zustandslos und unabhängig voneinander sind – Klassen braucht man in einem solchen System offensichtlich nicht. Bitte denken Sie, wenn ich von Klassen schreibe, nicht an Datenmodelle! Auch strikt funktionale Sprachen bieten Mechanismen zur Modellierung von Daten. Mir geht es hier um die Frage, wo Funktionen „leben“, in welchem Kontext sie ausgeführt werden. In funktionalem Code sind Funktionen nicht Bestandteil einer übergeordneten Struktur wie einer Klasse, und sie werden unabhängig voneinander ausgeführt, allenfalls im Kontext einer anderen Funktion, wenn Closures verwendet werden.

Um Funktionen als Bausteine verwenden zu können, empfiehlt es sich, gewisse Dinge bei der Erstellung von Funktionen zu beachten. Wichtig ist zum Beispiel das Konzept Partial Application, mit dem die Idee gemeint ist, einer Funktion zunächst nur manche ihrer Parameter zu übergeben und andere für später vorzuhalten. Zur Illustration nehmen Sie einmal an, Sie hätten vor, eine Liste von Werten nach einem Bereich zu filtern:

const values = [1, 7, 11, 25, 77, 384, 9808];const...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang