skip to main content

kiesler.at

Einführung Funktionale Programmierung
updated by rck, 2006-03-26

Ich habe mir erlaubt, an dieser Stelle die Folien von Prof. Knoop respektive Prof. Puntigam in einen Online-Artikel umzuformen und zu ergänzen.

Funktionale Programmierung ist ein interessantes Gebiet der Programmierkunst, bei dem das "was" im Vordergrund steht und nicht etwa das "wie", wie bei der imperativen Programmierung.
                     
1 | 2 | 3 | 4

Motivation

Im Rahmen der Softwarekrise des vorigen Jahrhunderts (Zusammenfassung: Kosten explodieren, Wartung von Programmen kostet doppelt so viel wie Neuentwicklung) entstanden einige innovative Konzepte.

Wärend UML eher eine Metavorgehensweise ist und in bestehende Softwarekonzepte umgesetzt wird, ist funktionale Programmierung, beispielsweise mit Haskell, etwas völlig neues.

Richtig angewandt, und in der richtigen Umgebung, können funktionale Programme viel schneller und effizienter entwickelt werden. Gleichzeitig ist funktionale Programmierung aus meiner Sicht sehr spezialisiert und für Datenbankanbindungen oder GUI-Programmierung beispielsweise gänzlich ungeeignet.

Eigenschaften der Funktionalen Programmierung

weniger Grundkonzepte

keine Zuweisungen, Schleifen, Sprünge. Einerseits vorteilhaft für "Neueinsteiger", die noch nie programmiert haben.

Andererseits aus meiner Sicht selbst dann kein besonders großer Vorteil, da moderne objektorientierte Frameworks von Haus aus sehr viel abstrahieren und Schleifen immer mehr in den Hintergrund geraten. Sprünge / Labels verwendet sowieso kaum noch wer (außer Lowlevel Programmierer).


höhere Produktivität?

Funktionale Programme sind sehr kurz, verglichen mit vielen Imperativen Programmiersprachen. Ob sie dadurch verständlicher (und in weiterer Folge wartbarer - wieder ein Tribut an die Softwarekrise) werden, stelle ich in Frage. Es gibt auch moderne imperative Programmiersprachen, welche sehr kurzen, fast schon kryptischen Code ermöglichen. Als Beispiel sei hier Python angeführt.


einfacherer Korrektheitsbeweis

und somit implizit höhrere Zuverlässigkeit. Ein klarer Punkt für funktionale Programmierung. Wärend übliche imperative Programme eher "maschinennah" sind, sind funktionale Programme eher "aufgabennah". Somit ist der Korrektheitsbeweis eines Programmes im wesentlichen mit dem Korrektheitsbeweis des dahinterliegenden Algorithmus gleichzusetzen.
                     
1 | 2 | 3 | 4



RSSComments
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004