Donnerstag, 15. November 2007

[OOP 2008] Die Zukunft von OO ist Funktional

Sprachen wie Ruby oder C# haben sich bereits in die Richtung bewegt, Neuentwicklungen wie Scala das Ziel bereits erreicht. Die Zukunft objektorientierter Sprachen heisst .... Lisp. Kompletter Unsinn? Dann lassen Sie mich ins Detail gehen. Schon lange (über 60 Jahre) existieren zwei grundlegende Paradigmen der Programmierung. Auf der einen Seite das funktionale Lambda-Kalkül und auf der anderen die prozedurale Turing-Maschine. Beide sind in der Lage, alle denkbaren und berechenbaren Funktionalitäten zu beschreiben und verarbeiten. Während die Turing-Maschine hierfür einen unendlichen Variablenspeicher nutzt, basiert das Lambda-Kalkül ganz symbolzentriert auf Funktionskompositionen und Funktionsaufruf. Nun sind die OO-Sprachen einmal, lax ausgedrückt, nichts anderes als Turing-artige Maschinen höherer Abstraktion. Funktionale Sprachen wie Lisp, ML oder Haskell hingegen beruhen im wesentlichen auf dem Lambda-Kalkül. Vorteil der funktionalen Programmierung ist zum Beispiel dessen symbolorientierter Ansatz und dessen Gleichbehandlung von Daten und Funktionen. Nachteil beispielsweise die geringere Performanz - und bisweilen das ungewohnte Programmierparadigma. In neu entwickelten Sprachen wie Scala (das im übrigen auf Java VMs läuft) lassen sich nun beide Ansätze, OO und funktionale Programmierung, miteinander kombinieren. C# 3.0 hat bewiesen, dass auch "traditionelle" OO-Sprachen sich sinnvoll um funktionale Ansätze wie Lambda-Ausdrücke ergänzen lassen. Dass dies viele Vorteile in sich birgt, beweisen die Brüder im Geiste Ruby, Scala, C# 3.0 oder Smalltalk. Natürlich werden Programmierer jetzt nicht auf Common Lisp oder Scheme umschwenken. Wohl aber dürften sie in Zukunft mit den aus diesen "Ursprachen" kommenden Konzepten konfrontiert werden. Ruby und C# 3.0 sind nur der bescheidene Anfang. Insofern kann eine Beschäftigung mit "good old Lisp" nicht schaden. Ganz nach dem Motto: Das Lamda-Kalkül ruft. Folgen wir ihm!

1 Kommentar:

stefan hat gesagt…

Wieso sollte die Performanz funktionaler Sprachen geringer sein?

OCaML gewinnt gegen so ziemlich alles ... :)