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!