Vor ein paar Jahren prägte Neal Ford den Ausdruck 'Polyglottes Programmieren'. Er bezeichnete damit den Umstand, dass wir als Programmierer immer mehr genötigt sind mehrere Programmiersprachen gleichzeitig zu benutzen. Das klassische Beispiel ist eine Webanwendung. In der Datenbank sprechen wir SQL, die Applikationslogik ist vielleicht in Java implementiert und auf der Clientseite im Browser kommt JavaScript zum Einsatz. Um die Webseite zu strukturieren und darzustellen müssen wir uns in den Beschreibungssprachen HTML und CSS ausdrücken. Also mindestens 5 Sprachen um ein Datum aus der Datenbank im Browser anzuzeigen. Bei Neal Ford ist der Ausdruck durchaus nicht negativ gemeint. Er drückt das Aufatmen eines neugierigen Programmierers nach Jahren der Monokultur aus.

In meinem letzten Projekt habe ich eine interessante Erfahrung gemacht. Es handelt sich bei der Applikation um eine RubyOnRails-Anwendung. Die Datenbank ist eine MongoDB. Die Datenbank spricht also JavaScript und die Daten sind im JSON-Format abgelegt. Ein Teil der Logik unserer Applikation ist clientseitig im Browser implementiert. Es ist ein sehr geschmeidiger Prozess, die Objekte aus der Datenbank zu lesen und beim erzeugen der Webseite nur 'to_json' zu sagen, um die JSON-Objekte der Datenbank im JavaScript des Browsers als JavaScript-Objekte zur Verfügung zu haben. Veränderungen der Struktur der Objekte in der Datenbank wandern ohne Übersetzung, Transformation auf die Browserseite: Browser und Datenbank sprechen die gleiche Sprache.

Im Augenblick testen wir node.js (serverseitiges Javascript mit asynchronem IO) als Programmiersprache für Webanwendungen. express ist eine Framework für node.js, das die Funktionen eines einfachen Webframeworks (Rubys Sinatra war Vorbild) implementiert. Mit der Kombination MongoDB, node.js/express, Browser sprechen alle Komponenten der Applikation die gleiche Sprache. Die Datenbank spricht JavaScript und hält ihre Daten in JSON genau so wie auch die Applikationsschicht und der Browser.

Man ist versucht den Ausdruck 'Monoglottes Programmieren' zu prägen, aber da ist ein Beigeschmack. Das 'Monoglotte' ist nicht die Rückkehr zur alten Monokultur. Die Freude des 'Polyglotten' lebt im 'Monoglotten' fort. Vielleicht ist das so, weil die Technik so neu ist. Vielleicht ist es auch so, weil sich unter der gleichen Programmiersprache neue Paradigmen in die Programmierung mischen. Die Datenbank folgt jetzt nicht mehr dem relationalen Paradigma, sondern ist NoSQL (no = not only?). Das - NoSQL - ist noch kaum verstanden und die Diskussion um die Bedeutung für die Modellierung beginnt erst. Die Applikation arbeitet nicht multithreaded, sondern mit asynchronem IO: Ein Prozess im Loop und eine Programmierung mit vielen Callback-Routinen, die auf Events reagieren. Wenn NoSQL neu sein sollte, ist node.js noch ganz heiss.

Die Freude am Neuen, die der Ausdruck 'Polyglottes Programmieren' anzeigte, lebt im 'Monoglotten Programmieren' fort, weil es eigentlich ein 'Polyparadigmatisches Programmieren' ist. Aber wer wollte das noch sagen und dabei das Gefühl von Freude haben?