Möchten Sie mehr über Programmierung erfahren?  Es lohnt sich, etwas über funktionale Programmierung und die unterstützten Programmiersprachen zu lernen.

5 Funktionale Programmiersprachen, die Sie kennen sollten

Werbung Wenn Sie viel Zeit damit verbringen, sich über Programmiertrends im Internet zu informieren, haben Sie von funktionaler Programmierung gehört. Der Begriff wird ziemlich oft herumgeworfen, aber was bedeutet das? Selbst wenn Sie wissen, was funktionale Programmierung ist, können Sie sich nicht sicher sein, welche Sprachen am besten dafür geeignet sind. Sc

Werbung

Wenn Sie viel Zeit damit verbringen, sich über Programmiertrends im Internet zu informieren, haben Sie von funktionaler Programmierung gehört. Der Begriff wird ziemlich oft herumgeworfen, aber was bedeutet das?

Selbst wenn Sie wissen, was funktionale Programmierung ist, können Sie sich nicht sicher sein, welche Sprachen am besten dafür geeignet sind. Schließlich sind nicht alle Programmiersprachen gleich. Während Sie funktionale Programmierparadigmen in vielen Sprachen anwenden können, fühlen Sie sich in einigen noch viel wohler.

Was ist funktionale Programmierung?

Wenn Sie einen mathematischen Hintergrund haben, haben Sie einen Vorsprung in der funktionalen Programmierung. Dies liegt daran, dass das Paradigma der funktionalen Programmierung das Rechnen wie mathematische Funktionen behandelt. Wenn Sie keinen mathematischen Hintergrund haben, können Sie sich verwirrt fühlen.

Grundsätzlich behandelt die funktionale Programmierung Funktionen und Daten als unveränderlich. Sie übergeben Daten an eine Funktion und geben im Allgemeinen diese transformierten Daten oder einen anderen Datentyp zurück. Bei der funktionalen Programmierung sollte die Funktion niemals die ursprünglichen Daten oder den Programmstatus ändern.

Es gibt eine Ähnlichkeit mit der Unix-Philosophie, dass jedes Programm eine Sache gut machen sollte. Eine Funktion sollte nicht verschiedene Teile Ihres Programms berühren. Stattdessen sollte es seine Eingabe nehmen und Ihnen eine Ausgabe geben.

Im Idealfall sollten Funktionen in der funktionalen Programmierung möglichst rein sein. Dies bedeutet, dass bei gleichem Eingang der Ausgang der Funktion immer derselbe bleibt.

Funktionale vs. objektorientierte Programmierung

Dies ist eine dramatische Abkehr von so etwas wie objektorientierter Programmierung. Bei der objektorientierten Programmierung verfügen Sie häufig über ein Basisobjekt mit verschiedenen Methoden zum Ändern von Daten oder Zuständen, die Teil dieses Objekts sind. Eine Methode kann sogar Daten oder Zustände ändern, wenn dies nicht ausdrücklich angegeben wird.

In praktischen Programmen ist dies manchmal sinnvoll. Das heißt, es kann die Wartung von Programmen erschweren, da nicht immer klar ist, was den Status oder die Daten ändert. Funktionale Programmierung wurde ursprünglich in akademischen Umgebungen eingesetzt, kann jedoch auch dazu beitragen, derartige Probleme zu vermeiden.

1. JavaScript

JavaScript-Logo

Einige Programmiersprachen ermöglichen eine funktionale Programmierung, während andere sie entweder fördern oder sogar erzwingen. JavaScript fällt in die erste Kategorie. Während Sie funktionale Programmierparadigmen in der Sprache verwenden können, können Sie genauso einfach einen objektorientierten Ansatz verwenden.

Das heißt, es gibt viele funktionale Programmierparadigmen, die in JavaScript integriert sind. Nehmen Sie zum Beispiel Funktionen höherer Ordnung. Dies sind Funktionen, die andere Funktionen als Argumente annehmen können.

JavaScript verfügt über mehrere Funktionen, die mit Arrays wie map(), reduce(), filter() und anderen arbeiten. Alle Funktionen sind Funktionen höherer Ordnung. Auf diese Weise können Sie sie miteinander verketten, um schnell alle möglichen Aufgaben mit einem Array auszuführen.

Während JavaScript in früheren Versionen einige Probleme mit der Veränderlichkeit aufwies, bieten neuere Versionen des ECMAScript-Standards Korrekturen. Anstelle des Schlüsselworts catch-all var zum Definieren von Variablen haben Sie jetzt const und let . Mit der ersten Option können Sie Konstanten definieren, wie der Name schon sagt. Die zweite Möglichkeit beschränkt den Gültigkeitsbereich einer Variablen auf die Funktion, in der sie deklariert ist.

2. Python

Python-Logo

Wie JavaScript ist Python eine verallgemeinerte Sprache, mit der Sie eine beliebige Anzahl von Programmierparadigmen verwenden können. Python mag seine Nachteile haben 4 Gründe, warum Python nicht die Programmiersprache für Sie ist 4 Gründe, warum Python nicht die Programmiersprache für Sie ist Die Programmiersprache Python ist sehr beliebt, aber hier sind einige Gründe, warum Sie Python vermeiden möchten . Lesen Sie mehr, aber funktionale Programmierung gehört nicht dazu. In der offiziellen Python-Dokumentation gibt es sogar eine Einführung in die funktionale Programmierung.

Zu Beginn finden Sie viele der oben genannten integrierten Funktionen map(), filter(), reduce() und ähnliche. Wie bei JavaScript sind dies Funktionen höherer Ordnung, da sie andere Funktionen als Argumente verwenden. In Python hat die funktionale Programmierung einen Vorteil in Form des lambda Schlüsselworts.

Sie können Lambda-Ausdrücke auf verschiedene Arten verwenden. Eine Möglichkeit, es zu verwenden, ist die Kurzschreibweise für einfache Funktionen. Wenn Sie einer Variablen zugewiesen sind, können Sie Lambda-Ausdrücke genauso aufrufen wie eine Standard-Python-Funktion. Der wahre Vorteil von Lambda-Ausdrücken liegt darin, dass Sie sie als anonyme Funktionen verwenden.

Anonyme Funktionen funktionieren auch in JavaScript und anderen Sprachen auf dieser Liste. Sie sind besonders praktisch, wenn Sie Funktionen höherer Ordnung verwenden, da Sie sie vor Ort definieren können. Ohne anonyme Funktionen müssten Sie auch einfache Ergänzungen als maßgeschneiderte Funktionen vordefinieren.

3. Clojure

Logo der Programmiersprache Clojure

Im Gegensatz zu JavaScript und Python ist Clojure selbst unter Programmierern möglicherweise kein bekannter Name. Falls Sie nicht vertraut sind, ist Clojure ein Dialekt der Lisp-Programmiersprache, der bis in die späten 1950er Jahre zurückreicht. Dies bringt eine sehr spezifische Art mit sich, Dinge zu tun, die für die funktionale Programmierung perfekt sind.

Wie andere Lisp-Dialekte behandelt Clojure Code als Daten. Dies bedeutet, dass sich der Code selbst effektiv ändern kann. Im Gegensatz zu anderen Lisp-Dialekten läuft Clojure auf der Java-Plattform und wird in JVM-Bytecode kompiliert. Dies bedeutet, dass es mit Java-Bibliotheken funktionieren kann, unabhängig davon, ob diese in Clojure geschrieben wurden oder nicht.

Im Gegensatz zu früheren Sprachen auf dieser Liste ist Clojure eine funktionale Programmiersprache von Grund auf. Dies bedeutet, dass Unveränderlichkeit, insbesondere innerhalb von Datenstrukturen, nach Möglichkeit befürwortet wird.

Clojure erwartet nicht, dass alle Programme mathematisch „beweisbar“ sind, sondern empfiehlt, wo immer möglich reine Funktionen zu verwenden.

4. Elm

Ulme Programmiersprache Logo

Als eine der neueren Sprachen auf dieser Liste ist Elm eine rein funktionale Sprache, die ursprünglich von Evan Czaplicki im Jahr 2012 entwickelt wurde. Die Sprache hat unter Webentwicklern an Popularität gewonnen, insbesondere für die Erstellung von Benutzeroberflächen.

Im Gegensatz zu jedem vorherigen Eintrag in dieser Liste verwendet Elm die statische Typprüfung. Dies trägt dazu bei, dass keine Laufzeitausnahmen auftreten. Stattdessen werden Fehler beim Kompilieren abgefangen. Dies bedeutet weniger sichtbare Fehler für die Benutzer, was ein großes Plus darstellt.

Der Elm-Compiler zielt auf HTML, CSS und JavaScript ab. So wie Sie mit Clojure Programme schreiben können, die auf Java ausgeführt werden, können Sie auch Apps schreiben, die JavaScript-Bibliotheken in Elm verwenden.

Ein wesentlicher Unterschied zwischen Elm und anderen Sprachen besteht darin, dass Sie keine generischen filter(), map() und ähnlichen Funktionen finden. Stattdessen werden diese durch Datentypen wie List.map oder Dict.map .

5. Haskell

Logo der Programmiersprache Haskell

Haskell ist eine andere statisch typisierte, rein funktionale Sprache. Im Gegensatz zu Elm gibt es Haskell schon eine Weile. Die erste Version der Sprache wurde 1990 entwickelt. Der neueste Standard ist Haskell 2010, während die nächste Version für 2020 geplant ist.

Wie wir bereits untersucht haben, bedeutet die rein funktionale Natur von Haskell, dass Funktionen konstruktionsbedingt keine Nebenwirkungen haben sollten. Dies macht es gut geeignet, um reale Probleme zu lösen, obwohl die Wurzeln der funktionalen Programmierung in der Wissenschaft liegen.

Trotz des Mangels an Mainstream-Popularität wurde Haskell in einigen weit verbreiteten Projekten eingesetzt. Der Xmonad-Fenstermanager ist vollständig in Haskell geschrieben. Pandoc, das verschiedene Arten von Markups in und aus anderen Formaten konvertiert, verwendet ebenfalls die Sprache.

Es gibt die Standardfunktionen map(), filter(), reduce() und andere Funktionen höherer Ordnung, mit denen Sie Konzepte von JavaScript oder Python nach Haskell übertragen können. Wenn Sie mehr über die Sprache erfahren möchten, ist Learn You a Haskell for Great Good ein beliebter Ausgangspunkt.

Sind Sie neu in der Programmierung?

Einige der oben genannten Begriffe und Sprachen wirken möglicherweise etwas esoterisch, wenn Sie noch kein erfahrener Programmierer sind. Das ist gut so, denn zu wissen, was Sie nicht wissen, ist einer der ersten Schritte, um ein besserer Lerner zu werden.

Einige der oben aufgeführten Sprachen sind besser für Anfänger als andere. Werfen Sie einen Blick auf unsere Liste der besten Programmiersprachen für Anfänger. Sie werden feststellen, dass sich die beiden Listen überschneiden.

Wenn Sie interessiert sind, lesen Sie unseren Leitfaden zum Erstellen einer einfachen PHP-Website. So erstellen Sie eine einfache PHP-Website: So erstellen Sie eine einfache PHP-Website: Sie möchten eine Website erstellen, wissen aber nicht, wo Sie anfangen sollen? Wenn Sie eine einfache PHP-Website erstellen, werden Sie auf den Weg zur Webentwicklung gebracht. Weiterlesen .

Erfahren Sie mehr über: Funktionale Programmierung, JavaScript, Python.