Freie Monaden in Clojure

Monaden sind ein wichtiges Konzept in der funktionalen Programmierung mit immensem praktischen Nutzen, auch hier im Blog haben wir schon viel darüber geschrieben. Zum Beispiel zeigt der Artikel „Freie Monaden oder: Wie ich lernte, die Unabhängigkeit zu lieben“, wie freie Monaden in Scala eingesetzt werden können, um die Ausführung eines Programmes von dessen Beschreibung zu entkoppeln.

Hier werden wir die Fallstudie aus diesem Artikel aufgreifen und zeigen, wie wir in Clojure die Entkopplung mit Monaden erreichen können. Dabei zeigen wir, wie wir das nutzen können, um Testfälle zu schreiben; und wir werden zeigen, wie wir ganz einfach Mock-Tests für unsere monadischen Programme angeben können.

Weiterlesen...

Multicore-Programmierung mit OCaml 5

In diesem Post geht es endlich mal wieder um OCaml, eine großartige funktionale Sprache, die es schon seit 1996 gibt. (Wenn man den Vorgänger Caml mitzählt sogar schon seit 1985.)

OCaml hat wie viele andere funktionale Sprachen seinen Ursprung in der Forschung am INRIA in Frankreich, ist aber seit ca. 20 Jahren zunehmend auch in industriellen Projekten im Einsatz, zum Beispiel bei Facebook, Jane Street und Bloomberg.

Zum Erfolg von OCaml haben allem vor das elegante Modulsystem, die ergonomische Syntax, der schnelle Byte-Code- und der effiziente Native-Code-Compiler beigetragen. Ein Manko plagte aber die OCaml-Programmierung seit den Anfangstagen: OCaml unterstützte bis vor kurzem keine Multicore-Programmierung, zumindest nicht direkt.

Mit dem Release von OCaml 5.0.0 im Dezember 2022 ist das Problem allerdings ausgeräumt: Multicore-Programmierung sowie Nebenläufigkeit werden unterstützt. Das Multicore-OCaml-Team um KC Sivaramakrishnan hat sich viel Zeit gelassen, um wirklich alles richtig zu machen.

„Multicore OCaml“ hat eine ganze Reihe von Facetten, heute geht es speziell um die Nutzung von Betriebssystem-Threads. In späteren Posts werden wir uns auch noch die Unterstützung von Nebenläufigkeit mit „effect handlers“ anschauen sowie die effiziente parallele Programmierung mit „Reagents“.

Weiterlesen...

Datenkonvertierung mit Linsen

Linsen sind ein wichtiges Konzept in der funktionalen Programmierung mit großem praktischen Nutzen. Vor einigen Jahren haben wir funktionale Linsen hier im Blog bereits vorgestellt. Seitdem haben wir die Benutzung von Linsen in unserer täglichen Arbeit stets ausgebaut. Heute wollen wir zeigen, wie wir Linsen als bidirektionale Transformationen nutzen und wie sie uns dadurch beim Umwandeln von Datenrepräsentationen unterstützen.

Das Beispiel für diesen Artikel implementieren wir mit unserer umfangreichen und frei verfügbaren Clojure-Bibliothek namens Active Clojure, die wir in allen unseren Clojure-Projekten benutzen. In dieser Bibliothek gibt es eine Implementierung für Linsen und für Records, mit denen wir zusammengesetzte Daten in Clojure modellieren können. Die Kombination von Linsen und Records ist besonders hilfreich.

Weiterlesen...

Funktionale Validierung in Kotlin

Dieser Post ist der Beginn einer Reihe über funktionale Softwarearchitektur in Kotlin. Sie entstammt ursprünglich einer Zusammenarbeit der Active Group mit Blume2000, die wir bei der Entwicklung ihres Webshops beraten haben. Diesen Post habe ich zusammen mit Benedikt Stemmildt geschrieben, seinerzeit CTO bei Blume2000.

Es geht um die Validierung von Daten. Wir wollen sicherstellen, dass Objekte in unserem Programm „valide“ sind, also beliebig definierbare Konsistenzkriterien erfüllen, ohne die unsere Software nicht funktioniert.

Mein Kollege Marco Schneider hatte schon in einem früheren Post Abstraktionen dafür in Haskell präsentiert.

Die gleichen Ideen sind auch – mit Abstrichen – nach Kotlin übertragbar. In diesem Post rollen wir das Thema noch einmal neu auf, und zwar wie wir aus objektorientierter Sicht mit funktionalen Techniken helfen können. Es ist also nicht notwendig, das Haskell-Posting zu lesen. (Wir empfehlen den Post trotzdem wärmstens, da er insbesondere das Konzepts des Applicatives beschreibt, das in Kotlin unpraktikabel ist.) Kotlin-Grundkenntnisse werden allerdings vorausgesetzt.

Weiterlesen...

Das Programm für die BOB 2023 am 17.3. steht!

BOB 2023

Das Programm der BOB 2023 steht: Am Freitag, dem 17.3.2023, findet die zehnte BOB statt, endlich (hoffentlich) wieder am gewohnten Austragungsort in Berlin bei Lohmann & Birkner statt. Wir sind mit dem Programm mit vielen hochkarätigen Beiträgen überaus glücklich. Unglücklich macht uns lediglich die große Anzahl von tollen Beiträgen, die wir ablehnen mussten. Die Zahl der Einreichungen lag deutlich über dem bisherigen Rekord.

Den Eröffnungsvortrag der BOB wird Yulia Startsev halten, die aus Ihrer Arbeit im JavaScript-Komitee an Modulen berichten wird.

Danach gibt es wie immer vier Tracks - zwei Tracks mit insgesamt 14 Vorträgen und zwei Tracks mit acht Tutorials.

Die Registrierung ist eröffnet - der Early-Bird-Rabatt läuft noch bis 31. Januar 2023.

Weiterlesen...