Streams in Java 8

In einem früheren Posting hatten wir bereits die wichtigste Neuerung in Java 8, nämlich die Lambda-Ausdrücke vorgestellt. Inzwischen steht das offizielle Release von Java 8 unmittelbar bevor und es gibt einen Release Candidate. Heute beleuchten wir die Hauptmotivation für die Einführung von Lambda-Ausdrücken, die neuen Streams in Java 8. Die lassen tatsächlich etwas funktionales Programmiergefühl in Java aufkommen. Allerdings muss man einige Feinheiten beachten.

Weiterlesen...

Jahresrückblick

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.

Weiterlesen...

Comprehending Queries

Mit dem Haskell 98 Report kam im Dezember 2002 ein langwieriger Standardisierungsprozess für die funktionale Programmiersprache Haskell endlich zu einem positiven Ende. Das waren eigentlich good news for everyone, aber ich erinnere mich, dass ich damals grummelte: eines der aus meiner Sicht zentralen Features der Sprache, die Monad Comprehensions, war im Laufe des Prozesses aus dem Haskell-Sprachstandard entfernt worden. Vor allem dem Datenbanker in mir tat das weh: ausdrucksstarke Comprehensions sind nämlich eine ganz hervorragende Repräsentation für Datenbankanfragen. Vor dem Haskell 98 Report war Haskell mein Prototyping-Werkzeug für die Formulierung, Transformation und Optimierung von Queries gewesen — und jetzt?

Weiterlesen...

Erste Schritte in ClojureScript

Funktionale Programmierer möchten auch in der Web-Entwicklung auf dem Browser ihre bevorzugte funktionale Sprache nutzen. Zwar hat JavaScript Wurzeln in der funktionalen Programmiererung, aber die Sprache hat eben auch noch eine objektorientierte und verschiedene hässliche Seiten. Aus diesem Grund gibt es inzwischen eine kleine Industrie von Compilern von anderen Programmiersprachen nach JavaScript, zum Beispiel für OCaml, Scala, Haskell und Racket.

Heute beschäftigen wir uns mit einer besonders populären funktionalen Sprache mit JavaScript als Ziel: ClojureScript.

Weiterlesen...

Testen mit Haskell

Tests sind für gute Softwarequalität unerlässlich. Obwohl wir hier in diesem Blog immer wieder über die Vorzüge funktionaler Programmierung in Bezug auf Softwarequalität und geringe Fehlerraten berichten, gilt dies natürlich auch für mit funktionalen Sprachen realisierte Projekte. Um Softwaretests zu schreiben stehen den Entwicklern und Testern in funktionalen Sprachen dieselben Mittel wie z.B. in objekt-orientierten Sprachen zur Verfügung. Allerdings gestaltet sich das Testen in funktionalen Sprachen oftmals deutlich einfacher, da Zustand explizit gehandhabt wird (siehe auch folgende Blogartikel: 1, 2, 3), wodurch Fehler leichter zu reproduzieren sind und aufwändiges Initialisieren von zu testenden Objekte oft entfällt.

In diesem Artikel möchte ich ein Framework vorstellen, mit dem wir bei uns in der Firma sämtliche Tests auf Codeebene für unsere Haskell-Software organisieren. Das Framework integriert dabei verschiedene Testmethoden (Unit-Tests, randomisierte Tests mit QuickCheck, auch diskutiert in diesem Blogartikel), ermöglicht schnelles Hinzufügen von neuen Testfällen und bereite Fehlermeldung so auf, dass die Ursache eines Fehlers einfach lokalisierbar ist. Das Framework steht unter einer Open-Source-Lizenz.

Weiterlesen...