3 Deklarativer Stil um 2000

Bearbeitet: Heute war zu allgemein, durch eine andere Bezeichnung oder durch Jahr ersetzen -> Durch eine Jahreszeitspanne ersetzt.

Im Zusammenhang mit paralleler Programmierung und Daten-basierten Programmen sind funktionale Programmiersprachen für heutige Programmierung wichtig geworden. Da Objektorientierung oft auf einem imperativen Kern aufbaut, ist das Paradigma für parallele Ausführung weniger geeignet, wohingegen reine funktionale Programmierung weiterhilft [RealWorldFP, S. 10-11].
Logikprogrammierung ist im Bereich der KI wichtig, für typische Anwendungs-Programmierung aber nicht ausgelegt (gemeint sind z.B. grafische Benutzerschnittstellen, Webentwicklung oder Computer-Spiele).

Symbol- und Zahlenmanipulation ist einer der Kernbereiche der funktionalen Programmierung und die Integration mit objektorientierten popuären Frameworks wie .NET und dem Java-Framework erlaubt den Umstieg von objektorientierten Programmiersprachen zu funktionalen Sprachen.

Es gibt viele funktionale Programmiersprachen, die ihre Vorteile und Eigenheiten haben, vor allem was Effizienz und Interoperabilität anbelangt. Eine neue bzw. neu entdeckte Entwicklung sind multiparadigmatische Programmiersprachen. Mit ihnen lassen sich Paradigmen wie Objektorientierung und funktionale Programmierung vereinen. Bekannte Vertreter sind Scala für die JVM als Programmiersprache, die gut mit Java-Bibliotheken zusammenarbeitet, und F# für das .NET-Framework.
Beide sind statisch typisierte funktionale Programmiersprachen, verfolgen aber im Gegensatz zu Miranda strikte Auswertung und übernehmen das objektorientierte Typsystem aus dem zugrundeliegenden Framework (Java oder .NET).

Scala ist als besseres Java entworfen worden und löst viele typische Probleme aus Java. Die vielen funktionalen Aspekte von Scala lassen sich bei der Programmierung für die Java-Plattform gewinnbringend einsetzen. Der Name Scala steht für scalable Language und bezieht sich auf die (im Vergleich zu Java) flexible Syntax und Erweiterbarkeit der Programmiersprache.

F# wurde ursprünglich als OCaml-Variante für .NET entwickelt, bietet nun aber von ML unabhängige Konzepte, welche die Programmierung durch geeignete Modularisierung erleichtern. Für C#-Programmierer ist F# durch seine Kürze und Aussagekraft eine gute Alternative. Dem Programmierer wird nicht nur oftmals das lästige Schreiben von Typannotationen abgenommen, die Programme sind durch ihren funktionalen Charakter meist kürzer, verständlicher und näher an der Intention des Autors als vergleichbare C#-Programme. Da F# zudem auch Werkzeugunterstützung bietet, ist es eine gute Wahl für .NET-Programmierer. An dieser Stelle soll keine Beschreibung der Werkzeugunterstützung stattfinden, es soll nur erwähnt sein, dass der Editor Autovervollständigung und Kontext-Hilfe besitzt sowie über einen interaktiven Prompt verfügt. Der interaktive Prompt nennt sich F# interactive und wird im Rahmen von Quellcode-Beispielen in dieser Arbeit benutzt. Die Notation ist wie folgt zu lesen:

> Ausdruck ;;
val it: Typ = Wert

Hinter dem Zeichen > zur Eingabeaufforderung wird ein Ausdruck eingegeben; die Eingabe wird mit der Endesequenz ;; abgeschlossen. Die Ausgabe enthält den Typ und den Wert des ausgewerteten Ausdrucks.

Modularisierung und Aussagekraft sind zwei treibende Faktoren bei der Verwendung einer Programmiersprache. F# bietet in dieser Hinsicht neue Techniken, die richtig verwendet zur deklarativen Programmierung führen. Deshalb wird im Folgenden F# als Beispiel für moderne deklarative Programmierung benutzt und analysiert. Dazu wird zunächst ein Muster vorgestellt, mit dem die wichtigen Konzepte besprochen und abgewägt werden können.

Hinterlasse einen Kommentar