Haskell
11.04.2011Was sind die Herausforderungen für das Software-Engineering der Zukunft?
- Parallelität und Nebenläufigkeit (Multicore, Cloud usw.)
- Korrektheit (s.a. unseren HIS-Master) und
- Modularität (Management von Komplexität).
Alles Dinge, die durch die heutigen Mainstream-Sprachen nur mäßig - wenn überhaupt - adressiert werden. Ich beschäftige mich - nicht professionell - schon seit längerer Zeit mit funktionalen Programmiersprachen, die für diese Probleme z.T. vielversprechende Lösungsansätze zu bieten haben. Letztes Jahr habe ich z.B. clojure für mich entdeckt - eine hervorragende Lisp Implementierung auf der Java VM. Sie hat einiges Potential, da man mit ihrer Hilfe die bekannten Java-Bibliotheken und somit das gesamte Java-Ökosystem wiederverwenden kann.
Seid einiger Zeit beschäftige ich mich außerdem mit Haskell - eine Programmiersprache, die aus der Zukunft zu kommen scheint und herkömmlichen Programmiersprachen um Jahrzehnte voraus ist. Einige Gründe, warum Haskell faszinierend ist, findet man im Blog Integer Overflow von Tim Carstens und im Blog Sententia cdsmithus.
Wenn es die Stundenpläne zulassen, werde ich daher im Wintersemester 2011 ein Seminar zu Haskell anbieten, und zwar auf Basis des hervorragenden Buchs Programming in Haskell von Graham Hutton - ergänzt durch (das ebenfalls exzellente und ganz andere) Real World Haskell von Bryan O’Sullivan, Donald Bruce Stewart und John Goerzen.
Wer schon mal reinschnuppern möchte, dem sei dieser Link wärmstens empfohlen!
Hier Quicksort in Haskell:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)