Nachwort
Funktionale und imperative Programmierung
Funktionale Programmierung ist ein Programmierparadigma, das sich auf die Definition und Auswertung von Funktionen konzentriert. Es ist ein Deklaratives Programmierparadigma, was bedeutet, dass der Fokus darauf liegt, was berechnet werden soll, und nicht darauf, wie es berechnet werden soll.
Falls du schon Imperative Programmierung z.B. mit Java oder Python kennst, wirst du festgestellt haben, dass funktionale Programmierung mit Elm in einigen Punkten anders ist.
Jedes Programmierparadigma hat seine eigenen Stärken und Schwächen, weshalb es auch einige Sprachen gibt, die mehrere Paradigmen unterstützen. Viele imperative Sprachen unterstützen auch funktionale Programmierung, allerdings zwingen sie dich nicht dazu, sie zu verwenden, so wie es bei Elm der Fall ist. Auch das hat seine Vor- und Nachteile.
Aufgabe
Stelle die wichtigsten Konzepte der imperativen Programmierung und der funktionalen Programmierung gegenüber und stelle die Stärken und Schwächen der beiden Programmierparadigmen dar.
Schlagworte dabei können z.B. sein: Unveränderlichbarkeit von Daten, Schleifen, Rekursion, Seiteneffekte, Testbarkeit, Parallelisierbarkeit, Zufallszahlen, Ein-/Ausgabe, Funktionen höherer Ordnung, aktuelle Relevanz, NullpointerException (falls du Java kennst), TEA.
Recherchiere dazu im Internet und nutze bei Bedarf eine KI. Prüfe die Ergebnisse deiner Recherche und der KI kritisch und fasse die wichtigsten Punkte in einem Text und/oder einer Tabelle zusammen.
Funktionale Sprachen und funktionale Aspekte in anderen Sprachen
Je nach Vorerfahrung und Interesse kannst du auf unterschiedliche Weise das Thema vertiefen. Du könntest z.B. Einblicke in eine andere funktionale Sprache wie Haskell, Roc, Gren, F#, Gleam gewinnen. Oder du könntest dich mit funktionalen Aspekten in imperativen Sprachen wie Java oder Python beschäftigen und herausfinden, wie sie funktionale Programmierung unterstützen.
Selbst wenn du nie mehr in einer funktionalen Sprache programmieren solltest, wirst du von den Konzepten profitieren, die du in Elm gelernt hast. Sie werden dir helfen, auch in anderen Sprachen besseren Code zu schreiben, da es in allen Sprachen gut ist z.B. möglichst wenig Seiteneffekte zu haben oder manche Probleme sich besser rekursiv als iterativ lösen lassen.