JavaScript-Experte Crockford: "Wir sollten nicht immer noch JavaScript nutzen"

Douglas Crockford hat das populäre Datenaustauschformat JSON spezifiziert und mehrere Bücher über JavaScript geschrieben. Wir haben ihn gesprochen.

In Pocket speichern vorlesen Druckansicht 460 Kommentare lesen
Ai,(artificial,Intelligence),Concept.,Contents,Concept.,Social,Networking,Service.,Streaming

(Bild: metamorworks / Shutterstock.com)

Lesezeit: 9 Min.
Von
  • Kathrin Stoll

Douglas Crockford programmierte schon in den 1980ern, arbeitete bei der Gründung der Programmiersprache E mit und spezifizierte das JSON-Format als Alternative zu XML. Warum es JavaScript seiner Meinung nach nicht mehr geben sollte und wie Design-Entscheidungen von vor 20, 30 oder 40 Jahren sich auch heute noch auswirken – nicht nur auf Programmiersprachen, sondern auch auf die Sicherheit im Netz – erklärt Crockford im Gespräch mit c’t.

Douglas Crockford war am 15. Juni auf der WeAreDevelopers-Konferenz in Berlin als Sprecher geladen. Abseits des Scheinwerferlichts haben wir ihn zum Interview getroffen.

c’t: Sie haben mehrere Bücher über JavaScript geschrieben. Wenn Sie mit Ihrem heutigen Wissen auf die Programmiersprache blicken, was stört Sie am meisten daran?

Douglas Crockford: An JavaScript? Dass es immer noch existiert. Vor 20 Jahren war JavaScript die meistgehasste Programmiersprache der Welt. Gleichzeitig war es die am meisten missverstandene Programmiersprache. Ich gehörte zu den Hassern und Missverstehern. Aber durch die Umstände war ich irgendwann gezwungen, die Sprache genauer unter die Lupe zu nehmen. So habe ich entdeckt, dass sie tatsächlich etwas Brillantes hat. Ich habe darüber gesprochen und darüber geschrieben. Und dann ist JavaScript eine der wichtigsten Programmiersprachen der Welt geworden.

c’t: Und das ist schlecht?

Crockford: Das war vor 20 Jahren, vor einer Generation. Wir sollten nicht immer noch JavaScript nutzen, wir sollten schon längst weiter sein. Heute Morgen hat Bjarne [Stroustrup, Erfinder der Programmiersprache C++, Anm. d. Red.] in seinem Vortrag darüber gesprochen, dass es Dinge gibt, die er in C++ nicht umgesetzt hat, weil Dennis Ritchie sie nicht in C umgesetzt hat. Dennis Ritchie hat sie nicht in C umgesetzt, weil sein Computer damals nur 16 Kilobyte Speicher hatte. Er musste eine grundlegende Funktion weglassen, weil sie schlicht zu groß war. Wir leiden also immer noch unter Design-Entscheidungen, die getroffen wurden, als Computer nur 16 KB hatten. Ein durchschnittlicher Computer hat heute eine Million Mal mehr Speicher. Trotzdem sind wir immer noch durch das Denken der frühen Siebziger eingeschränkt. Es ist an der Zeit, das loszuwerden und von vorne anzufangen. Mit einer neuen Sprache, die die modernen Probleme der Programmierung besser berücksichtigt. 

c’t: Um welche Probleme der modernen Programmierung geht es Ihnen?

Crockford: Zum Beispiel die sichere Programmierung verteilter Systeme. Es reicht nicht mehr aus, dass ein Programm innerhalb einer einzelnen Box ausgeführt wird. Alles ist miteinander verbunden und Berechnungen müssen in vielen Boxen gleichzeitig ausgeführt werden. Und weil diese Boxen in öffentlichen Netzen verbunden sind, müssen wir sie von Anfang an sicher machen. Wir versuchen immer, Security-Lösungen im Nachhinein draufzuklatschen, aber funktioniert hat das nie. Wir tun es zum falschen Zeitpunkt – wir sollten Security schon beim Design einer Programmiersprache mitdenken. JavaScript hat einige gute Ansätze, die allerdings mangelhaft umgesetzt wurden. Die Sprache im Nachgang entsprechend umzumodeln, ist unmöglich.  

c’t: Sie glauben, wir brauchen eine völlig neue Sprache für das Web?

Crockford: Ja, wir schlagen uns die ganze Zeit mit den Auswirkungen von Fehlern herum, die vor 20, 30 oder 40 Jahren gemacht wurden, auch was die Browser angeht. Netscape hat bei der Entwicklung des Netscape Navigator [einer der ersten Browser, Anm. d. Red.] eine Menge schlimmer Fehler gemacht. Viele davon sind auch in heutigen Browsern noch vorhanden. 

c’t: Die erste Version des Netscape Navigator wurde 1994 veröffentlicht. Damals getroffene Entscheidungen sollen sich heute noch auswirken?

Crockford: Netscape hat aufgrund dieser Vorreiterrolle schon sehr früh quasi die Kontrolle über die Webstandards übernommen. Tim Berners-Lee hat 1994 das World Wide Web Consortium gestartet. Aber Netscape war das egal, sie hatten keine Zeit für Tim. Sie hatten eine Idee und haben ihren Browser zunächst nach ihren eigenen Vorstellungen entwickelt.  

Tim Berners-Lees WorldWideWeb, der erste Browser, sollte ursprünglich ein Programm zum Abrufen von Dokumenten sein, über das Forscher die Abstracts ihrer Arbeiten austauschen konnten. Weiter hatte er anfangs gar nicht gedacht. Jetzt sagt er, er habe alles durchdacht. Aber zu der Zeit hatte er das nicht. Und er hat ganz sicher nicht an Sicherheitsvorkehrungen gedacht. Die Sicherheit des ursprünglichen Webbrowsers war so konzipiert, dass man einen Benutzernamen und ein Kennwort in eine URL eingeben konnte und beides in der Abfrage gesendet wurde.

»Das Problematische an der Sicherheit im Netz ist, dass am Anfang niemand wusste, was er tat. «

c’t: Wirklich?

Crockford: Wirklich. Das Problematische an der Sicherheit im Netz ist, dass am Anfang niemand wusste, was er tat. Man denke nur an TLS. Darin werden immer wieder neue Schwachstellen gefunden. Das liegt ganz einfach daran, dass es fundamental fehlgeleitet und missraten ist. Das Sicherheitssystem sollte viel einfacher sein. Aber das ist es nicht, weil es aus einem Haufen Nachbesserungen besteht. Man hat im Nachgang bemerkt, dass einige Dinge doch nicht so funktionieren wie gedacht. Außerdem gibt es eine Menge Ausnahmen, was es schwierig macht, TLS korrekt zu handhaben.    

c’t: Ich hatte anfangs gefragt, was Sie am meisten an JavaScript stört. Um das abzuschließen: Was ist das Beste an der Programmiersprache?

Crockford: Funktionen. JavaScript verfügt über Funktionsobjekte, die verschachtelt werden können und über lexikalische Closures verfügen. Ich glaube, das ist die beste Idee, die es in der Geschichte der Programmiersprachen bisher gab. Zuerst wurde es in ISWIM vorgeschlagen, einer – wie ich glaube – nur theoretischen Programmiersprache. Und es wurde versehentlich in einer anderen Sprache namens Scheme implementiert. Aber JavaScript war die erste Mainstream-Programmiersprache, die dieses Feature hatte.

c’t: Interessant, wenn man bedenkt, in wie kurzer Zeit JavaScript entwickelt wurde. 

Crockford: Brendan Eich entwickelte JavaScript im Auftrag von Netscape. Sie gaben ihm zehn Tage Zeit, einen Webbrowser so zu modifizieren, dass er skriptfähig wird und noch weitere Dinge tun kann. Das hat er erstaunlich gut hinbekommen. Aber er hat eine Menge Fehler gemacht. Im Grunde war es ja nur ein Entwurf, ein Proof of Concept.

c’t: Und Netscape nahm den Entwurf und lieferte ihn aus.

Crockford: Ja. Das kann man Brendan nicht ankreiden.

c’t: Apropos ankreiden: In Entwicklerforen kommt immer wieder die Frage auf, warum das von Ihnen spezifizierte Datenformat JSON keine Kommentare zulässt. 

Crockford: In der allerersten Version von JSON gab es tatsächlich die Möglichkeit, Kommentare einzufügen. Ich habe sie aus drei Gründen entfernt: JSON sollte ein Datenaustauschformat sein, das es einem Computer ermöglicht, mit einem anderen Computer zu kommunizieren. Computer beachten Kommentare nicht, sie wären eine Verschwendung von Bandbreite. Der zweite Grund war, dass ich ein möglichst minimalistisches Format definieren wollte. Das ist mir nicht ganz gelungen, aber fast.  

Der dritte Grund ist, dass Kommentare die Interoperabilität gefährden würden. Irgendwann habe ich in einer C-Implementierung von JSON gesehen, dass Entwickler Parsing-Anweisungen in die Kommentare geschrieben haben. Wäre das immer noch möglich, wäre die Interoperabilität nicht mehr gewährleistet, weil keine andere Implementierung diese Anweisungen in die Kommentare setzen dürfte. Das wollte ich nicht. Ich wollte, dass JSON so einfach ist, dass jede Sprache mit jeder anderen kommunizieren kann, und das ist schlussendlich auch gelungen. Deshalb habe ich die Kommentare herausgenommen. Entwicklern und Entwicklerinnen, die nicht auf Kommentare in ihren Konfigurationsdateien verzichten wollen, rate ich, ruhig welche einzufügen. Vor der Übergabe an den JSON-Parser können sie die Kommentare einfach mithilfe von JSMin wieder entfernen.

c’t: Nach all den Rückblicken zum Schluss noch eine Frage nach der Zukunft: Wie sieht Ihrer Meinung nach die Zukunft des Webs aus?

Crockford: Es ist zum Erfolg verdammt. Wir werden es nicht los.

c’t: Und das ist etwas Schlechtes?

Crockford: Ja. Wir verdienen etwas Besseres. Zu all den Sicherheitsproblemen kommen ja noch die Probleme mit den sozialen Netzwerken hinzu. Als das Arpanet zum Internet wurde, beschloss man, die ganze Welt daran teilhaben zu lassen. Der Gedanke war damals, dass das Internet ein globales Bewusstsein schaffen würde. Dass wir alle zusammen online sein würden, uns gegenseitig korrigieren könnten und so der Wahrheit näher kommen würden. Das ist absolut nicht der Fall.

Wenn überhaupt, dann läuft es in die andere Richtung. Wir werden immer zersplitterter und misstrauischer, verrückter und teilweise absichtlich falsch informiert. Das alles ist meiner Meinung nach eine Folge des Wirtschaftsmodells des Webs. Es gibt eine kleine Anzahl großer Akteure, die ihre Produkte auf Rentabilität hin optimiert haben. Das ist nicht zwangsläufig schlecht. Aber auf dem Weg dorthin haben sie wichtige Werte kompromittiert. Und das ist eben schlecht. 

c’t – Europas größtes IT- und Tech-Magazin

Alle 14 Tage präsentiert Ihnen Deutschlands größte IT-Redaktion aktuelle Tipps, kritische Berichte, aufwendige Tests und tiefgehende Reportagen zu IT-Sicherheit & Datenschutz, Hardware, Software- und App-Entwicklungen, Smart Home und vielem mehr. Unabhängiger Journalismus ist bei c't das A und O.

(kst)