Frontend-Developer, JavaScript, AngularJS


Veröffentlicht:
Über JavaScript | Good parts

Ich habe gelesen: JavaScript - The Good Parts

JavaScript bereinigen

JavaScript besitzt seine Ecken und Kanten, ist etwas ungeschliffen und hat einige schräge Ansätze. Heutzutage ist das längst keine neue Erkenntnis mehr. Aber Douglas Crockford ist einer derjenigen, der diese Erkenntnis genauer herausgearbeitet und verbreitet hat.

Bereits im Frühjahr 2008 erschien Crockfords JavaScript: The Good Parts bei O'Reilly. Auf den knapp 150 Seiten seines Buches zerlegt er diese Sprache in seine guten und schlechten Bestandteile und entwickelt auf dieser Grundlage, einem bereinigten Subset von JavaScript, Best Practices für das Programmieren mit dieser Sprache:

The subset that will be described here can be used to construct reliable, readable programs small and large. By focusing on just the good parts, we can reduce learning time, increase robustness, and save some trees.

Seine gesamte Argumentation kann gleichzeitig als eine im Nachhinein gelieferte Begründung und Spezifikation für JSLint verstanden werden. Richtig, Crockford ist der Erfinder von JSLInt und er ist auch für die ursprüngliche Spezifikation von JSON verantwortlich.

Das grundsätzliche Problem

Auch wenn jede Programmiersprache ihre Schwachstellen hat, im Fall von JavaScript steht es hier nach Crockfords Ansicht besonders schlecht:

It went from nonexistence to global adoption in an alarmingly short period of time. It never had an interval in the lab when it could be tried out and polished. It went straight into Netscape Navigator 2 just as it was, and it was very rough.

Und das ist kein Umstand der einfach hinzunehmen ist, denn:

JavaScript is an important language because it is the language of the web browser. Its association with the browser makes it one of the most popular programming languages in the world.

Wenn man nun noch bedenkt, dass JavaScript mittlerweile nicht mehr nur die Sprache des Browsers ist, sondern Dank Googles V8 und Node.js auch verstärkt serverseitig eingesetzt wird, dann lohnt es sich doch der Argumentation Crockfords noch einmal zu folgen.

Das Gute und das Schlechte

Die Bad Parts von JavaScript sind nach Crockford zweigeteilt.

Da sind zuerst die Sprachelemente, die sehr problematisch sind, aber nicht leicht umgangen werden können (Awful Parts). Die Rede ist hier z.B. von globalen Variablen, dem Fehlen von Block-Scope, unechten Arrays, der großen Anzahl an Falsy Values, dem typeof-Operator oder der parseInt-Methode.

Und dann sind da die eigentlichen Bad Parts - zwar auch problematisch, aber eben einfach vermeidbar, wie zum Bespiel die Funktion eval(), das with Statement oder der new Operator.

Demgegenüber zählt Crockford all das in JavaScript zu den Good Parts, was im Zusamenhang mit der Rolle von Funktionen als First Class Objects, mit der schwachen Typisierung, mit den Objekt-Literalen und mit der Vererbung auf Basis von Prototypen steht. Für Crockford macht das JavaScript so attraktiv, macht es zu einer sehr dynamischen, flexiblen und daher mächtigen Programmiersprache.

Muss man das so sehen?

Zugegeben, im alltäglichen Arbeiten mit JavaScript spielt die strenge Crockfordsche Dichotomie von Gut und Böse eine eher unbedeutende Rolle. Und genau aus diesem Blickwinkel wurde sein Buch dann auch kritisch betrachtet.

Man darf schließlich nicht vergessen, dass die wenigsten JavaScript-Programmierer komplette Bibliotheken und Frameworks entwicklen und sich darum kaum mit den grundsätzlichen Problemen dieser Sprache über längere Zeit auseinandersetzen müssen. Die meisten nutzen bestehende Bibliotheken und Frameworks. Und diese gleichen bereits einige der von Crockford entdeckten Defizite aus.

Auch existieren noch sehr viele JavaScript-Anwendungen bestehend aus Legacy-Code. Hier wird mit Sicherheit kein Refactoring angeordnet, nur weil die Crockford-Prinzipien missachtet wurden.

Und schließlich, als grundlegende Alternative zu Crockfords Ansatz des subsetting JavaScript, gibt es auch noch die Möglichkeit mit den Unzulänglichkeiten dieser Sprache pragmatisch und kreativ umzugehen: Das vermeintlich Schlechte könnte doch als eine Art Geheimwaffe eingesetzt werden - so machen es zumindest die gefürchteten Ninjas.

Fazit

Bleibt schließlich für mich noch zu sagen, dass ich die Lektüre von The Good Parts uneingeschränkt empfehle, auch wenn das Buch schon älter ist. Crockford zeigt eben von seinem Standpunkt aus die Grenzen von JavaScript auf und geht dabei ins Detail. Das ist, dem Muster nach, eine Kritik im guten, alten, klassischen Sinne. Und so etwas hat schon früher den ein oder anderen frischen Gedanken hervorgebracht.

JavaScript: The Good Parts - Unearthing the Excellence in JavaScript Von Douglas Crockford
O'Reilly Media / Yahoo Press, 2008
http://shop.oreilly.com/product/9780596517748.do