CT, Fotolia
Funktionale Programmierung (1): Grundzüge
Raus aus der akademischen Nische
von Rainer Grimm
18.09.2009
Ob Microsofts F# oder neue Features in C++, Java und Python: Der funktionale Programmierstil macht wieder Schlagzeilen. Mit diesem Online-Artikel beginnt Linux-Magazin Online eine kleine Reihe zur funktionalen Programmierung. In der ersten Folge beschreibt unser Autor Rainer Grimm die Grundzüge dieses Programmierparadigmas. Kommende Folgen widmen sich der funktionalen Programmierung in Python und dem Framework MapReduce von Google.
1984 zeigte John Hughes in seinem berühmten Artikel "Why Functional Programming Matters" auf, worin die Vorteile der funktionalen Programmierung liegen. Jetzt, gut 20 Jahre später, befreit sich die funktionale Programmierung aus ihrer akademischen Nische: Zum einen in funktionalen Programmiersprachen wie Erlang, Haskell und F#, zum anderen vor allem als Ideengeber für die etablierten, imperativen Programmiersprachen.
Funktionale Programmierung überall
Wenn auch nicht davon auszugehen ist, dass die funktionalen Programmiersprachen selbst in absehbarer Zeit Mainstream werden - sieht man von der Integration von F# in Visual Studio 2010 ab - so ist doch unverkennbar, dass die funktionalen Konzepte zunehmend in den imperativen Programmiersprachen Fuß fassen, sei dies in C++, Perl, Python, Ruby, Javascript oder Java.
Ein paar Beispiele sollen dies illustrieren: C++ unterstützt mit dem neuen Standard Lambda-Funktionen und Funktionen höherer Ordnung, die das Arbeiten mit der Standard Template Library deutlich einfacher gestalten. Darüber hinaus erlaubt Template Metaprogramming das Programmieren in einem rein funktionalen Subsystem. Java besitzt seit 1.5 Generics, ähnlich den Templates in C++ und wird Closures wohl mit Java 1.7 anbieten. Die Java Generics wurden von Philip Wadler entworfen, seines Zeichens der Hauptdesigner von Haskell.
In Python werden gerne funktionale Bausteine zum Programmieren verwendet, dies trifft insbesondere auf die List Comprehension zu. Mit Python 3.0 (siehe Rainer Grimm, "Im Zeichen der Drei": Linux-Magazin 09/09, S. 108) nähert sich Python der Lazy Evaluation von Haskell an, da die funktionalen Built-in-Funktionen nicht mehr Listen, sondern nur noch Generatoren zurückgeben. Aus der strikten Auswertung wird somit eine Bedarfauswertung.
Mathematisch und transparent
Was ist funktionale Programmierung? Darauf gibt es eine kurze und bündige Antwort: das Programmieren mit mathematischen Funktionen. Dies sind Funktionen, die bei gleichem Eingabewerten immer den gleichen Rückgabewert zurückliefern. Diese Zusicherung impliziert, dass der Wert einer Funktion über den ganzen Programmverlauf gleich ist, so dass der Funktionsaufruf durch den Wert der Funktion ersetzt werden kann. Ein Funktionsaufruf verhält sich wie Abfragen an eine (unendlich) große Tabelle.
Diese Eigenschaft, einen Ausdruck durch seinen Wert ersetzen zu können, ist unter dem Namen Referenzielle Transparenz bekannt.
Für ein tieferes Verständnis der funktionalen Programmierung ist es sehr hilfreich, die Charakteristiken dieses Programmierparadigmas herauszuarbeiten und mit Beispielen zu veranschaulichen. Dies genau wird das Thema dieses Artikels sein. Neben den Beispielen in der rein funktionalen Programmiersprache Haskell werden Beispiele in den imperativen Programmiersprachen C++ und Python die Prinzipien der funktionalen Programmierung aufzeigen. Zwar sind diese etablierten Programmiersprachen nicht funktional, trotzdem erlauben sie das Programmieren in einem Higher Order Style.
| Whitepaper |
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|
Rainer Grimm,
25.01.2011 22:53
I. Wechsung,
23.11.2010 12:11