Vor ziemlich genau einem Jahr haben wir das Blog „Funktionale Programmierung“ gestartet. Zusammen mit einigen Gastautoren berichten in diesem Blog die Firmen Active Group und Factis Research über Aspekte der funktionalen Programmierung, die für unser Arbeitsleben von Bedeutung sind.

In diesem Artikel zum Jahrestag möchten wir ein kurzes Résumé ziehen und einen Überblick über die Artikel des zurückliegenden Jahres geben. Hoffentlich finden Sie dadurch noch den einen oder anderen für Sie interessanten Artikel, der Ihnen im Lauf des Jahres „durch die Lappen“ gegangen ist.

Am Schluss des Artikels finden Sie auch einige interessante Zahlen zum Blog und seinen Besuchern. Wir möchten uns an dieser Stelle schon einmal ganz herzlich bei Ihnen, unseren vielen Lesern bedanken, und Sie um Ihr Feedback bitten.

  • Was gefällt Ihnen an diesem Blog?
  • Was kann noch verbessert werden?
  • Worüber würden Sie gerne mehr erfahren?

Schreiben Sie Antworten auf diese Fragen doch einfach in einen kurzen Kommentar am Ende des Artikels. Danke! Jetzt aber viel Spaß beim Lesen dieses Überblicks.

In unserem Archiv finden Sie ja bereits eine chronologische Übersicht aller Artikel des Blogs, wahlweise auch nach Autoren sortiert. Ich möchte an dieser Stelle die Artikel des zurückliegenden Jahres daher auch mal inhaltlich einordnen.

Grundlagen der funktionalen Programmierung

Wir haben einige Artikel, die sich an Einsteiger der funktionalen Programmierung richten. So gibt David Frese in seinem Artikel eine Antwort auf die Frage Was ist funktionale Programmierung? Mit vielen Beispielen versehen präsentiert Michael Sperber eine dreiteilige Einführung in die rein funktionale Programmierung, hier finden Sie den 2. und 3. Teil.

Java und Sprachen auf der JVM

Viele industrielle Softwareentwickler sind mit objektorientierter Programmierung in Java und der JVM als Ausführungsplatform vertraut. Auch auf dieser Plattform kann man funktional programmieren! In einem Artikel sehen Sie anhand eines konkreten Beispiels aus dem Quellcode des Buildsystem Apache Ant, wie Java-Code wesentlich lesbarer in der funktionalen JVM-Sprache Scala aufgeschrieben werden kann. Andreas Bernauer zeigt, ebenfalls in Scala, wie man in dieser Sprache übersichtlich und performant programmieren kann. In einem Beispiel aus der Praxis zeigen wir, wie mit Hilfe funktionaler Programmierung eine schöne, verständliche und saubere API für JasperReports, eine bekannte Bibliothek aus der Java-Welt zum Erzeugen von Berichten, erstellt werden kann.

Neben Scala gibt es noch eine Reihe anderer funktionaler Sprachen für die JVM. Ein Artikel stellt die Sprache Clojure vor und zeigt, wie man dort einfach kleine Spezialsprachen entwicklen kann. Unser Gastautor Ingo Wechsung stellt die Sprache Frege vor, ein Haskell-Dialekt für die JVM.

Funktionales in imperativen Sprachen

Auch wenn Sie selbst in der täglichen Arbeit keine Möglichkeit haben, funktionale Sprachen einzusetzen, können Sie in imperativen und objekt-orientierten Sprachen von funktionalen Denk- und Programmiertechniken profitieren, wie Stefan Wehr in seinem Artikel Warum funktional? zeigt. Auch enthält Java 8 einige längst überfällige funktionale Features. Niklas Baumstark demonstriert, dass man selbst in C++ dank persistenter Datenstrukturen von funktionaler Programmierung profitieren kann.

Unveränderbare („immutable“) Datentypen sind eine wichtige Technik der funktionalen Programmierung, so wichtig dass wir auch in Objective-C nicht darauf verzichten möchten. Sollten Sie aber mal in der funktionalen Sprache Haskell des Bedürfnis verspüren, imperativ zu programmieren, hilft Ihnen dieser Artikel unseres Gastautors Joachim Breitner bestimmt weiter.

Industrielle Anwendungen

Funktionale Programmierung wird auch vermehrt in industriellen Anwendungen eingesetzt. So zeigen zwei Artikel, wie wir ein Webprojekt zur elektronischen Nachlassverwaltung schnell und kostensparend mit funktionaler Programmierung umsetzen konnten. Auch lässt sich medizinische Datenverarbeitung hervorragend mit funktionaler Programmierung realisieren.

Doch nicht nur unsere Firmen setzen auf funktionale Programmierung. Auch Banken wie Credit Suisse und Standard Chartered oder Internetriesen wie Twitter und Facebook setzen inzwischen auf diese Technik. Warum Facebook auf die funktionale Sprache Haskell setzt, erfahren Sie in diesem Artikel.

Testen

Obwohl wir hier in diesem Blog immer wieder über die Vorzüge funktionaler Programmierung in Bezug auf Softwarequalität und geringe Fehlerraten berichten, muss man auch in funktionalen Projekten selbstverständlich testen. Wir haben uns in diesem Blog mit randomisierten Tests im Sinne von QuickCheck beschäftigt. Außerdem stellen wir in einem weiteren Artikel ein Testframework für Haskell vor, welches in unserer Arbeit täglich zum Einsatz kommt.

Web-Programmierung

Natürlich zollt dieser Blog auch dem Thema Web-Programmierung Tribut. Zum einen stellt Alexander Thiemann in einem Artikel Techniken für moderne Webanwendungen mit Haskell vor und vertieft diese in einem zweiten Teil. Zum anderen diskutiert ein andere Artikel erste Schritte in ClojureScript und beschäftigt sich dabei hauptsächlich mit Web-Programmierung. Dass man auch in JavaScript, der Lingua franca des Webs, funktional programmieren kann (wenn auch mit gewissen Einschränkungen), zeigt das Curry-Buch, welches wir in einer Buchbesprechung vorstellen.

Parallelität und Nebenläufigkeit

Funktionale Programmiersprachen sind besonders gut für paralleles und nebenläufiges Programmieren geeignet. Dies liegt insbesondere am sparsamen und disziplinierten Umgang mit Seiteneffekten sowie am expliziten Datenfluss über Funktionsparameter statt globaler Variablen. Ein Artikel zu diesem Thema erklärt, wie man in Haskell Parallelität einführen kann und die Programme dabei trotzdem deterministisch bleiben. Ein weiterer Artikel demonstriert, dass man mit Haskell auf ganz natürlich Art und Weise nebenläufige Programme schreiben kann, die performancemäßig und auch softwaretechnisch dem beliebten Framework node.js überlegen sind.

Praktische Beispiele

In einem weiteren Beispiel aus der Praxis erklärt unser Gastautor Johannes Weiß wie einfach die Interaktion zwischen Haskell und Aufrufen von C-Bibliotheksfunktionen realisiert werden kann. Außerdem demonstriert ein anderer Artikel den Einsatz von Haskell zur Implementierung eines Buildsystems, welches Tag für Tag unsere Software kompiliert. Das Für und Wider für die Platform Eclipse Xtend wird ebenfalls aus praktischer Sicht beleuchtet.

Monaden

Kein Blog über funktionale Programmiersprachen ohne Monaden! Unser Gastautor Uwe Schmidt bringt den Lesern in einer dreiteiligen, didaktisch hervorragend aufbereiteten Artikelserie die Funktionsweise und Vorzüge von Moden näher (Teil 1, Teil 2, Teil 3). Praktische Einsatzmöglichkeiten von Monaden werden außerdem in einem Artikel über eine Monade zur GUI-Programmierung vorgestellt. Unser Gastautor Torsten Grust zeigt außerdem, wie man mit Hilfe von Monaden Datenbankabfragen repräsentieren kann.

Klassiker der funktionalen Programmierung

Neben Monaden gibt es eine Reihe weiterer Klassiker der funktionalen Programmierung: Tail Calls, auch bekannt als Endrekursion, dienen in funktionalen Sprache als mächtige Alternative zu Schleifen. In eine ähnliche Kerbe schlägt der Artikel über Schleifen in Scala. Continuations erlauben den Zugriff auf die „Fortsetzung“ eines Programms und eröffnen damit ungeahnte Möglichkeiten. Mit Hilfe von Parser-Kombinatoren lassen sich Parser für Textformate sehr leicht implementieren, wie anhand eines Parsers für HL7-Nachrichten gezeigt wird. Ein weiterer Artikel zeigt, wie man erweiterbare Programme in funktionalen Sprachen schreibt.

Veranstaltungen

Auch im zurückliegenden Jahr gab es eine Vielzahl von Events mit dem Thema „Funktionale Programmierung“. Wir haben in diesem Blog nur über einen Bruchteile dieser Veranstaltungen berichtet, und zwar über die, an denen wir selbst beteiligt waren. So gibt es einen Artikel über den Zurich FP Afternoon / Haskell-Hackathon, welcher im September 2013 in Zürich stattfand. Zum „Commercial Users of Functional Programming“ Workshop gibt es einen Vorbericht sowie eine Nachbetrachtung. Die in der Nachbetrachtungen verlinkten Videos demonstrieren sehr gut die Vorteile und die breiten Einsatzmöglichkeiten funktionaler Programmierung.

Ein paar Zahlen zum Blog

Elf Autoren, darunter fünf Gastautoren, haben im zurückliegenden Jahr insgesamt 43 Artikel für diesen Blog verfasst. Jeder Artikel hatte dabei mehr als 70 Leser, die Hälfte der Artikel sogar mehr als 235 Leser. Die Top-3-Artikel hatten sogar jeweils mehr als 1.000 Leser. Dabei sind die Top-3-Artikel (in dieser Reihenfolge): Monaden: Das programmierbare Semikolon, Haskell schlägt node.js sowie Funktional Programmieren am konkreten Beispiel.

Insgesamt haben über 8.000 Menschen das Blog „Funktionale Programmierer“ im letzten Jahr gelesen, mit mehr als 23.000 Seitenaufrufen. Wir haben dabei 30-40 Besucher pro Tag, an Tagen an den Artikel veröffentlich werden sind es mindestens 60 Besucher, oft aber auch 80-120 Besucher. (Die Besucherzahlen bezeichnen dabei immer eindeutige Besucher, mehrfache Aufrufe derselben Person werden also nur einmal gezählt.)

Wir möchten Ihnen, unseren Lesern, an dieser Stelle sehr herzlich für Ihre Treue danken. Wir hoffen, dass Sie auch in Zukunft unseren Blog lesen und die Inhalte interessant finden. Damit wir unsere Artikel noch besser auf Ihre Interessen abstimmen können, möchten wir Sie an dieser Stelle um Ihr Feedback bitten.

  • Was gefällt Ihnen an diesem Blog?
  • Was kann noch verbessert werden?
  • Worüber würden Sie gerne mehr erfahren?

Schreiben Sie Antworten auf diese Fragen doch einfach in einen kurzen Kommentar. Danke!