20 Jahre JavaScript: Die Skriptsprache polarisiert mehr denn je

JavaScript hat in den vergangenen zwei Jahrzehnten eine kaum für möglich gehaltene Karriere gemacht: Was im Mai 1995 als einfache clientseitige Skriptsprache für Webseiten begann, dient heute vielen modernen Webanwendungen als Fundament.

In Pocket speichern vorlesen Druckansicht 181 Kommentare lesen
20 Jahre JavaScript: Die Skriptsprache polarisiert mehr denn je
Lesezeit: 4 Min.
Von
  • Golo Roden
Inhaltsverzeichnis

Die einen lieben die Skriptsprache JavaScript, die anderen hassen sie. Schattierungen zwischen Schwarz und Weiß trifft man bei der Sprache, die diesen Monat vor zwanzig Jahren erstmals vorgestellt wurde, selten. Das ist jedoch weniger der Sprache an sich geschuldet als vielmehr einem häufig anzutreffenden Missverständnis: JavaScript scheint aufgrund der verwendeten Syntax mit C verwandt zu sein. In Wahrheit handelt es sich jedoch um einen Lisp-Dialekt, der lediglich eine C-artige Syntax aufweist.

Die Wurzeln von JavaScript liegen in einer Stellenausschreibung der Firma Netscape. Brendan Eich, der Schöpfer von JavaScript, berichtet in seinem Blog, dass er zu Netscape kam, um eine in den Webbrowser integrierte Variante von Scheme (einem Lisp-Dialekt) zu entwickeln: "As I've often said, and as others at Netscape can confirm, I was recruited to Netscape with the promise of 'doing Scheme' in the browser."

Kennt man Lisp, fallen die Parallelen zu JavaScript unweigerlich auf. Beispielsweise haben die Funktionen call und apply konzeptuell identische und namentlich auffallend ähnliche Analogien in Lisp. Aus dem JavaScript-Code:

let add = function (first, second) {
return first + second;
};

add.call(null, 23, 42);
add.apply(null, [ 23, 42 ]);

wird in Lisp der gleichartige Code:

(defun add (first second) 
(+ first second))

(funcall #'add 23 42)
(apply #'add '(23 42))

Auch die Funktionen eval, map und reduce haben ihre Vorbilder in Lisp. Selbst die in JavaScript enthaltenen Objekte, die eher einer Hashtabelle entsprechen als einem Objekt im Sinne der objektorientierten Programmierung, haben eine auffallende Ähnlichkeit zu den Property-Listen von Lisp.

Eine der großen Stärken von JavaScript, die die Sprache von Lisp geerbt hat, ist, mit einem ausgesprochen kleinen Sprachumfang viel erreichen zu können: JavaScript verzichtet auf Klassen, Namensräume, Module und vielerlei ähnliche Konstrukte, die in Sprachen wie C# oder Java Gang und Gäbe sind. An deren Stelle tritt das grundlegendste aller Konzepte in der Programmierung: die Funktion. Sie wird in JavaScript häufig als Funktion höherer Ordnung und auch als Closure verwendet und erlaubt dem Entwickler, nach dem persönlichen Bedarf zu strukturieren.

JavaScript erzwingt die Struktur allerdings nicht, was eine weitaus höhere Disziplin beim Programmieren als in anderen Sprachen erfordert. Das Muster ist typisch für JavaScript: An die Stelle eines einzigen vorgefertigten Vorgehens tritt eine große Freiheit, mit der man allerdings umzugehen wissen muss. Das "Script" im Namen täuscht in der Hinsicht, weshalb JavaScript außerhalb der Community zu oft auf die leichte Schulter und nicht ernst genommen wird.

Die nächste Generation von JavaScript, ECMAScript 2015 (ehemals ES6 "Harmony"), versucht, treibt die Vielfalt der Sprache dann noch einmal deutlich voran: ES2015 führt neue Konzepte wie Lambda-Ausdrücke und Symbole ein, bietet aber auch syntaktischen Zucker wie ein class- oder ein extends-Schlüsselwort zur einfacheren objektorientierten Entwicklung.

Der Ausblick auf den Nachfolger ES7, der voraussichtlich 2016 oder 2017 aktuell werden wird, zeigt deutlich, welche derzeitige Entwicklung die Sprache zukünftig am stärksten beeinflussen wird. Die an C# 5.0 angelehnten neuen Schlüsselwörter async und await zur einfachen Handhabung asynchronen Codes zeigen, welcher Wert derartigem Code zukünftig beschieden sein wird: Asynchroner Code ist der Normalfall. Glücklicherweise sind die hierfür erforderlichen Konzepte bereits seit zwei Jahrzehnten im Kern von JavaScript enthalten, lediglich die Syntax ist dann neu.

Wünschen wir JavaScript daher mindestens zwei weitere erfolgreiche Jahrzehnte und hoffen auf viele großartige und spannende Ergebnisse auf einem konzeptuell durchdachten Fundament.

Siehe dazu auf heise Developer:

(ane)