Sonntag, November 20. 2011Bücherempfehlungen: Funktionale ProgrammierungEs gibt diverse Arten von Programmiersprachen. Heute wird viel von imperativen Programmiersprachen gebrauch gemacht. Sie sagen, welche Schritte etwas getan werden soll. Ein typischer Vertreter dieser Kategorie ist zum Beispiel Java (obwohl auch hier langsam Funktionale Elemente Einzug halten). Ein anderer, seit 1930 in der Mathematik bekannter Ansatz konzentriert sich nicht so sehr auf eine Schrittweise Anleitung, sondern darauf, wie die Funktionen kombiniert werden können, sodass neue Funktionalität entsteht. Ein häufig zitiertes, wenn auch längliches Paper mit dem Titel "Why Functional Programming Matters" von John Hughes stellt die Vorteile sehr schön zusammen. Ein paar typische funktionale Elemente wirken sehr praktisch. Hier ein Beispiel zur Quadrierung alle Elemente einer Liste in Java:
In Scala geht dies in einer Zeile:
Die Map-Funktion übernimmt als Parameter eine weitere Funktion. Diese nimmt einen Parameter x entgegen, und gibt x * x als Resultat zurück. "Map" ist hier eine Funktion höherer Ordnung. Dass sind solche Funktionen, die als Parameter weitere Funktionen entgegennehmen. Viele andere Probleme werden rekursiv ausformuliert. Ich möchte nicht behaupten, dass Funktionale Programmierung ein Allheilmittel ist. Insbesondere ist es eine nicht zu verachtende Umgewöhnung. Allerdings halten die Konzepte erneut Einzug in die Programmierung (sei es Javascript, Ruby, die .NET-Welt, oder eben Java), und es kann nicht schaden, zumindest ein paar Ideen zu kennen. Doch wie fängt man an? Ich möchte an dieser Stelle ein paar Bücher vorstellen, die vor allem die Vorzüge einer Mischung der Konzepte in den Vordergrund stellen, und so den Einstieg erleichtern. Sinnvoll sind diese Bücher in erster Linie für Leute, die schon Erfahrung im Programmieren haben.
Zuletzt möchte ich noch auf eine andere Sprachfamilie aufmerksam machen. Im Vergleich zu den obigen beiden Empfehlungen gibt es natürlich auch eine ganze Reihe Programmiersprachen, die - wenn überhaupt - eine weniger deutliche Brücke zur objektorientierten Programmierung schlagen. Zu diesen Sprachen gehören unter anderem Clojure, F#, Haskel und Lisp. Auch diese Sprachen haben ihre Vorzüge. Beispielsweise sind Lisp-Programme selbst kein String mit Anweistungen - das Programm selbst ist eine Datenstruktur aus Listen. Und als solche lässt es sich sogar manipulieren. Der Einstieg in diese Sprachen ist allerdings etwas ungewohnt und erfordert Experimente und Geduld. Aber keine Angst, es lohnt sich Trackbacks
Trackback specific URI for this entry
No Trackbacks
|
QuicksearchLinks in diesem ArtikelStatic Pages |