Javascript ist König – was ist passiert?

Js800

Javascript ist die Lingua Franca des Internets. Seit 2015 ist NPM die grösste Sammlung an Open-Source-Bibliotheken. Javascript hat sich innert kürzester Zeit von einer Browser-Skriptsprache zu einer führenden Programmiersprache entwickelt. Ein eindrücklicher Aufstieg – mit überraschenden Gründen.

Der Aufstieg einer Skriptsprache

Vor nicht so langer Zeit galt Javascript (JS) als Skriptsprache, um dezent die Funktionalität von Formularen zu erweitern. Die grossen Aufgaben überliess man lieber „richtigen“ Sprachen im Backend. Heute ist JS dominanter Player in der Open Source Welt. Dies wird durch Zahlen besonders deutlich: Mit 2.3 Mio. Pull Requests auf JS-Projekten (siehe octoverse.github.com) ist JS die populärste Sprache auf Github. Auf der serverseitigen JS-Welt ist NPM (Node Package Manager) mit über 600‘000 Pa­ckages das grösste Package Repository. Mit Node hat JS seinen Platz auf dem Server erobert, und kämpft sich gerade seinen Weg auf den Desktop: Neue Anwendungen wie z.B. der Editor Atom laufen in einer JS-Laufzeitumgebung. Auch in der Mobi­le-Entwicklung hat JS seinen fixen Platz; primär in Hybrid-Frame­works, aber auch zunehmend auf die Zielplattform kompiliert.

JS hat also eine gewaltige Reise zurückgelegt. Aber hat sich die Sprache dermassen verändert? Ein bisschen, ja, aber nicht mehr als andere Sprachen.

Die weniger offensichtlichen Gründe

Die Verbreitung von JS wurde massgeblich durch die Web­browser vorangetrieben. Die Möglichkeit, einen grossen Teil der Entwicklung direkt im Browser zu erledigen, hielt die Einstiegs­hürde klein; durch die Verbreitung der Sprache in der Webent­wicklung war es für Entwickler bald einmal normal, auch ein wenig JS programmieren zu können. Und dennoch – dass JS auch im Backend führend werden könnte, war vor wenigen Jah­ren noch undenkbar.

JS-Profis wussten schon immer, dass die Sprache in manchen Aspekten den „richtigen“ Sprachen nicht nur ebenbürtig, son­dern überlegen ist. Jetzt, da funktionale Programmierung zu­nehmend Einzug hält, wird dies erst vielen bewusst; funktionale Konstrukte werden bei den etablierten Sprachen nachgerüstet.

Asynchronität als zentrales Paradigma

Der vermutlich wichtigste Erfolgstreiber aber hat eigentlich gar nicht so viel mit JS als Sprache zu tun – es ist das Paradigma der asynchronen Programmierung von Node. Der grosse Durch­bruch der Asynchronität als zentrales Paradigma einer gros­sen Community darf sich die serverseitige JS-Plattform auf die Fahne schreiben. Ob zu Recht, ist streitbar, schliesslich wurde Asynchronität schon Jahre zuvor z.B. von Erlang mit dem Actor Pattern ausgereift, und auch Nodes Kernstück, der asynchro­ne Event-Loop, ist nicht hausgemacht. Das Vorgespurte ist mit Node weltbekannt geworden: „Wir leben in einer asynchronen Welt“ als Axiom der Web-Entwicklung in Zeiten, die von APIs, Microservices und Push-Daten definiert werden. Mit Serverless Backends scheint sich dieser Trend fortzusetzen.

Vielleicht war die Asynchronität bei Node gerade deshalb so er­folgreich, weil die Plattform zu einem Zeitpunkt bekannt wurde, an dem die Hardware zunehmend horizontale Skalierung vor­gab, und weil es eben noch nicht so viele andere (konkurrieren­de) Paradigmen in JS gab. Weil die Sprache simpel ist, konnte sie diesen neuen Trend leicht aufnehmen.

Javascript hat sich wegen seiner Einfachheit durchgesetzt und war dadurch in der Lage, den Trend der Asynchronität aufzunehmen, wo ande­re schon überladen waren.

Die (späten) Erweiterungen mit einem Package Manager, meh­reren Modulsystemen und leistungsfähigen Entwicklungsumge­bungen waren dann eher Hausaufgaben. Sie entstanden wäh­rend dem Boom, und sind nicht ursächlich dafür.

Wie weiter?

Gerade die neue Führung von NPM muss man durchaus auch kritisch betrachten. Sind die enormen Zahlen einfach Ausdruck von Popularität oder auch ein bisschen von Chaos? Zwar be­günstigt Vielfalt und Veränderung das finden optimaler Lösun­gen, jedoch kann man sehr schnell den Fokus auf das eigentlich zu lösende Problem verlieren und beschäftigt sich alsbald mit Meta-Fragen, insbesondere der Kompatibilität zwischen Biblio­theken. Schon jetzt hat die JS-Welt einen grossen Teil ihrer eins­tigen Leichtigkeit eingebüsst.

Wohin die Reise führt, wird sich zeigen. Eine Erkenntnis aus der Erfolgsgeschichte von JS für die Softwareentwicklung im All­gemeinen ist jedenfalls, dass schlanke Systeme grosse Vorteile haben. Insbesondere können sie ernsthaft auf neue Bedürfnisse reagieren.

Der vollständige Beitrag in der Open Source Studie 2018 Schweiz als pdf -->Fachbeitrag Roland Brand