The good, the bad and the ugly

javascript the good parts

Es gibt viele ausführliche Texte darüber, warum eine Programmiersprache umständlich, schlecht designed oder voll unlogische Fehler und Fallstricke ist. Genau so finden sich viele Loblieder über die Eleganz einer Sprache und die zwingenden Gründe, warum man sich mit genau dieser oder jener Sprache sein Butterbrot in der Softwareentwicklung verdienen wird. Eine Websuche nach “Why (Ruby|PHP|Python|SCALA) is (cool|fun|better)” liefert viele Beispiele.

Das Buch "Javascript The Good Parts" von Douglas Crockford behandelt beides, die guten Sprachfeatures sowie die Schmuddelecken und Designfehler von Javascript. Darüber hinaus bietet dieses Buch einen umfassenden Überblick und tiefen Einblick in die Prinzipien, die der Sprache zu Grunde liegen.

Mir hat dieses Buch, als ich es vor ein paar Jahren entdeckt habe, einen neuen Zugang zu einer Sprache geliefert, die sich nach meinem Eindruck zu dieser Zeit gerade von einer verpönten Sicherheitsluecke im Browser, zu der zentralen Sprache Webbasierter Anwendungen wandelte.

Zum Inhalt

Das Buch richtet sich an Entwickler, die einen Einstieg in JavaScript suchen, aber auch an solche, die bereits Erfahrung in JavaScript gesammelt haben. Das Buch ist ca. 150 Seiten dünn. Zudem ist die gesamte Grammatik der Sprache in seitenfüllenden Railroad Diagrammen aufgezeichnet. Und ein kompletter JSON-Parser ist auch abgedruckt. Trotzdem schafft es dieses Buch, besser als viele 1000 Seiten starke Wälzer, eine tiefergehendes Wissen über JavaScript zu vermitteln.

Nach einem Kapitel über die formale Grammatik, die JavaScript zu Grunde liegt, enthält das Buch einen Überblick über die grundlegenden Sprachkonzepte: Objekte, Funktionen, Vererbung, Arrays, Reguläre Ausdrücke, Standardfunktionen. Darauf folgt eine Sammlung und Bewertung von Sprachfeatures die Crockford als Highlights der Sprache ansieht. Anschließend präsentiert er die “Awful Parts” und “Bad Parts”.

Zugang zu JavaScript

Mir hat diese Buch unter anderem zwei grundlegenden Erkenntniss über JavaScript
geliefert:

1. JavaScript ist zuallererst eine funktionale Programmiersprache.

It’s LISP in C’s clothing

Javascript The Good Parts Douglas Crockford

Crockford vermittelt exemplarisch wie sich Techniken wie Currying und der Umgang mit anonymen Funktionen in JavaScript umsetzen lassen und beleuchtet damit den funktionalen Charakter von JavaScript ausführlich.

2. Das JavaScript Vererbungsmodell basiert auf Prototypen nicht auf Klassen.

Auch wenn Sprachkonstrukte wie:

              var cat = new Cat("Morle");

anderes vermuten lassen.

Im Kapitel über Vererbung verdeutlicht das Buch, dass der new-Operator eine Remineszenz an die seinerzeit überpopulären, klassenzentrierten, objektorientierten Programmiersprachen ist. Es wird untersucht in welcher Weise die Sprache diese Pseudo-Klassenartige Notation unterstützt und wo sie an ihre Grenzen stößt. Anschließend wird erklärt wie mit Hilfe von Clojours und dem Modul Pattern eine flexible Form von Vererbung umgesetzt werden kann.

Beide Erkenntnisse sind für Menschen, die mit modernen JavaScript Bibliotheken wie z.B. jQuery umgehen, vielleicht ein Selbstverständlichkeit. Schaut man sich aber viele Bücher und Quellen zu JavaScript an, so sind diese häufig geprägt von falschen Erwartungen. Alles in allem beschreibt “JavaScript: The Good Parts” für mich den Umschwung auf ein modernes Verständnis von JavaScript, mit dem sich die heutige Vielfalt an JavaScript-Bibliotheken überhaupt entwickeln konnte.

JSON und JSLint

Wie sehr der Autor Douglas Crockford mit der Entwicklung von JavaScript, als einem der Grundpfeiler für moderne Web-Anwendungen, verbunden ist, zeigt sich daran, dass er unter anderem maßgeblich für die Definition vom JSON verantwortlich ist. Ein Kapitel des Buches widmet sich daher auch diesem Datenformat.

Mit JSLint bring Crockford ein Codestyle Tool ins Rennen, dass neben der korrekten Syntax auch "Coding-Konvetions" überprüft. JSLint bewegt sich dabei zwischen echten syntaktischen Fehlern auf der einen Seite und dem persönlichen Geschmack des Autors auf der anderen Seiten, wenn es beispielsweise darum geht, dass bei funktionsliteralen zwischen “)” und “{” ein Space erwartet wird. Wenn man JSLint auf die eigenen Bedürfnissen in eigenen Projekten anpasst, hat man im Zusammenspiel mit dem Buch einen guten Aufhänger, um sich mit den Themen in den “Good Parts” vorallem aber auch in den “Bad Parts” auseinander setzt.

Fazit

Ich wünsche mir als Softwareentwickler mehr Bücher wie “JavaScript: The Good Parts”, gerne auch für andere Programmiersprachen. Es ist ein Buch für Menschen die programmieren können und das Design und den Aufbau einer Sprache verstehen wollen. Das Buch ist kurz. Wegen der Informationsdichte eignet es sich aber gut zum mehrfachen lesen.