__________________________________ JAVASCRIPT - MEIN LIEBSTER FEIND __________________________________ Erste Schritte in MS-DOS ======================== Ich weiss nicht mehr genau, wann ich meinen ersten Computer geschenkt bekommen habe. Es muss Anfang der 90er Jahre gewesen sein und war ein ausgemusterter 386er mit ansonsten mir unbekannten Spezifikationen. Leider war niemand in der Naehe, der mir dieses mysterioese Geraet haette erklaeren koennen. Da sitze ich nun mit meinen 11 oder 12 Jahren vor einem fast komplett schwarzen Bildschirm. Der Kursor hinterm MS-DOS-Befehlsprompt blinkt rhythmisch, und laesst mich ratlos zurueck. Dass mein Betriebsystem in einer mir unverstaendlichen Sprache mit mir kommuniziert, erschwert die Sache zusaetzlich. Zum Glueck hatte ich einen Freund, der neben einem DOS-PC eine riesige Biliothek an raubkopierten Spielen besass. Er zeigte mir, wie man eine Diskette kopiert, in ein Verzeichnis wechselt und ein Spiel startet. Hier lernte ich an einem Nachmittag von einem Gleichaltrigen mehr, als alleine in den vielen Monaten zuvor. Von diesem Zeitpunkt an war mein Rechner endlich zu etwas zu gebrauchen. Ich tauschte virenverseuchte Spieledisketten auf dem Schulhof und probierte sie nachmittags gleich aus. Manche davon funktionierten, manche nicht. Mein naechster PC hatte bereits satte 100MHz, eine 8 Gigabyte Festplatte und ein CD-Rom-Laufwerk. Mit Windows 95 begann fuer mich das Zeitalter der grafischen Benutzeroberflaechen. Ich hatte auch eine ansehnliche Sammlung an CD-Roms (vor allem Beilagen zu PC- und Spielezeitschriften), welche mir Zugriff auf eine schier unueberschaubare Menge an neuen, interessanten Inhalten ermoeglichte. Doch was danach kommen sollte, stellte alles bisher Dagewesene in den Schatten. Das Internet ============ Mein erster Internetanschluss eroeffnete mir eine komplett neue Welt. Email, Chatraeume, Pornobildchen in Briefmarkengroesse, animierte Gifs, Napster, etc. Ich war ueberwaeltigt und begeistert. Ich erinnere mich gut daran, wie ich MP3-Dateien mit einem speziellen Programm in 1,5 MB grosse Teile zerlegte, um sie per Diskette von einem PC auf den anderen zu transferieren (ein CD-Brenner war fuer mich damals unerschwinglich). Das Internet damals war fundamental anders als das Internet heute. Es gab nicht nur wenige zentralisierte Portale, betrieben von milliardenschweren Megakonzernen. Statt Facebookprofilen und Twitterfeeds, hatten die Menschen damals selbst gestaltete Homepages, jede mit ihrem eigenen Charme: animierte Hintergrundbilder, ein wilder Mix aus Schriftarten und -farben, Gaestebucher, chaotische Menustrukturen und der obligatorische "Under Construction"-Hinweis. Es war nicht alles gut damals, aber die privaten Homepages alá Geocities hatten Ecken und Kanten. Manchmal konnte man in diesem Chaos wahre Schaetze entdecken, wenn man nur genau hinschaute. Es dauerte nicht lange bis in mir der Wunsch aufkam, eine eigene Webseite zu erstellen. Dass dies ohne Weiteres moeglich war, wurde mir klar, als ich herausfand, dass man eine PowerPoint-Praesentation als HTML-Datei speichern konnte. Es mag kurios erscheinen, aber meine erste (niemals veroeffentlichte) Homepage habe ich mit PowerPoint erstellt. Als das nicht mehr ausreichte, habe ich eine Zeitlang mit MS Frontpage experimentiert, aber die Ergebnisse waren eher durchwachsen. Der naechste logische Schritt? Man muss direkt an die Quelle gehen. HTML ==== Ich weiss nicht woher es kam, aber auf einmal hatte ich ein HTML-Einsteigerbuch in den Haenden. Es war wie eine Erleuchtung. Mit wenigen Auszeichnungen, konnte man im Browser virtuelle Welten entstehen lassen. Im Nu hatte ich eine kleine HMTL-Seite mit dem MacGyver-Intro im MIDI-Format als Hintergrundmusik, ein paar Fotos von mir, und einer ansehnlichen Kopfzeile: "WORLD OF ALEX". Mit der Zeit wurden diese Seiten umfangreicher und komplexer. Ein guter Freund von mir fing ebenfalls an eigene Homepages zu erstellen. Wir wetteiferten um die beste Internetpraesenz und haben uns gegenseitig den ein oder anderen Trick abgekupfert. Gehostet habe ich damals auf dem T-Online Webspace, den es zum Internetanschluss dazu gab. Natuerlich nur echt mit einer de.vu-Domain. Irgendwann hatte ich nicht nur eine Homepage, sondern mehrere, die sich unterschiedlichsten Themen widmeten. Ich hatte nur das Problem, dass die Seiten selbst oft ziemlich leer waren. Das Erstellen der Homepage hatte Prioritaet, der Inhalt war nachrangig. Das zeigte eigentlich schon wohin die Reise gehen musste. Wenn der technische Aspekt der eigentlich interessante ist, ist der naechstlogische Schritt der Uebergang von der Auszeichnungssprache zur Programmiersprache. Kurzes Intermezzo mit C++ ========================= An einem sonnigen Nachmittag kurz vor der Jahrtausendwende fuhr ich mit dem Bus in die naechstgroessere Stadt um einen Buchladen aufzusuchen. Das HTML-Buch hatte ausgedient, etwas Neues musste her. Nach einigem Stoebern entschied ich mich fuer einen Grundkurs in C++. Voller Erwartung legte ich zu Hause die CD ein, installierte den Compiler und schrieb mein ersten Programm: "Hallo Welt!". Ich war sehr stolz auf mich. Der gute, alte DOS-Prompt war mir nun Untertan. Die Ernuechterung sollte bald kommen. Ich lernte einiges ueber die Bildschirmein- und ausgabe, ueber Variablen und Kontrollstrukturen. Doch dann ging es weiter mit objektorientierter Programmierung und mein Interesse fing an zu schwinden. Mit meinem neuen Wissen konnte ich, fuer meine damaligen Begriffe, nichts grundlegend anderes bewirken, als mit meinem ersten "Hallo Welt!"-Programm. Ich konnte lediglich weissen Text auf schwarzen Grund generieren. Aber ich wollte etwas ganz Anderes! Ich wollte mit dem Computer interagieren, wollte Dateien lesen und schreiben, Grafiken erscheinen und verschwinden lassen, Musik abspielen, vielleicht das CD-Rom-Laufwerk aus- und einfahren. Im Vergleich zu meinen HTML-Spielereien war die Arbeit mit C++ altbacken, langweilig, trocken. Um es kurz zu machen: ich habe mich einer anderen Programmiersprache zugewandt. Einer Sprache die auf dem aufsetzt, was ich bereits kannte. JavaScript ========== Mit JavaScript habe ich Programmieren gelernt. Das war vielleicht nicht die beste Wahl, aber es ergab sich ganz organisch aus meinen bisher gegangenen Weg in der Computerwelt. Mit JavaScript war es mir nun moeglich mit saemtlichen HMTL-Elementen, die ich bereits kannte, zu interagieren. In einem ersten kleinen JS-Tutorial, habe ich gelernt einen String aus einem Textfeld auszulesen und mit einem, in einer Variable hinterlegten, Passwort zu vergleichen. Ein wahrhaft epischer Moment in meiner Karriere als Superhacker. Mein erstes holistisches Programm, an das im mich entsinne war ein Tamagotchi-Klon. Mittels ein paar HMTL-Buttons konnte man ein virtuelles Haustier fuettern, pflegen, oder solange schlagen bis es den virtuellen Tod fand. Daneben wurde die GIF-Animation einer springenden Katze angezeigt, welche, bei deren Ableben, durch eine entsprechend morbide Grafik ersetzt wurde. Ein sehr simples Programm, aber ein ungeheurer Spass. Ich bin lange exklusiv bei der JavaScript-Programmierung geblieben, bis in meine fruehen 20er. Ich hatte zwar keinen Zugriff auf Systemfunktionen, aber es reichte aus fuer ein paar kleine Spiele, wie eigene Implementationen von Snake, Minesweeper, und Druglord. Mit Einfuehrung des HTML5-Canvas-Elements konnte ich nun auch programmatisch Bilder auslesen und generieren. Ein Mandelbrot-Generator und ein ASCII-Konverter waren dann auch schnell zusammengefrickelt. Ein Paradigmenwechsel war die Einfuehrung von NodeJS. Endlich hatte ich die Moeglichkeit auf das Dateisystem zuzugreifen, mit dem unterliegenden System zu kommunizieren und mit wenigen Zeilen einen Webserver zu programmieren! Zu meinem Erstaunen musste ich jedoch feststellen, dass JavaScript nicht unbedingt die beste Programmiersprache fuer diese Aufgaben ist. Die asynchrone Natur von JS fuehrte in meinen Programmen zur einer immer weiteren Verschachtelung von Callback-Funktionen. Dies hat mich schlussendlich anderen Programmiersprachen naeher gebracht. Auch wieder kurios: als ich endlich die Funktionalitaet von JS bekam, die ich immer vermisst hatte, habe ich mich von JS abgewendet. Ich will nicht sagen, dass man Werdegang als Hobbyprogrammier typisch ist. Ich bin sogar sicher, dass er das nicht ist. Als ich gerade meine ersten kleinen Programme in JS schrieb, habe ich erfahren, dass ein Junge in der Parallelklasse sich ebenfalls in der Kunst des Programmierens uebte. Auf seiner Homepage konnte man das Ergebnis bewundern. Ein Space-Shooter geschrieben in Delphi, ruckelfrei, mit ansehnlichen Sprites und vertikalem Scrolling. Mein Tamagotchi-Klon sah dagegen alt aus. Waere ich 10 Jahre frueher geboren worden, und haette ich Zugang zu Computer gehabt, waere mein Weg vielleicht ein anderer gewesen. Ich haette wahrscheinlich auf einem C64 meine ersten Schritte gemacht, haette Spiele gespielt und irgendwann kleine Programme in BASIC geschrieben, haette vielleicht auch ein paar Speicheradressen gepokt, und damit ueberraschende Effekte erzielt. Auf einem einfachen System, wie dem C64 war man der Hardware viel naeher, als auf einem Windows-System. Meine Umtriebe in JS fanden genau am anderen Ende des Spektrums statt. In einer abgeschirmten Umgebung ohne jeglichen Systemzugriff, auf einem speichergeschuetzen Betriebssytem. In diesem ummaurten Gaertchen, kann man vielleicht die Logik des Programmierens erlernen, aber nicht wie ein Computer funktioniert. JavaScript heute und das Web 2.0 ================================ Seit meinen ersten Gehversuchen in JavaScript sind viele Jahre vergangen. Lange hat mich diese Sprache begleitet. Wenn ich mir Quelltext aus alten Tagen anschaue, ueberlaeuft mich ein eiskalter Schauer, aber auch ein Anflug von Nostalgie. Ich habe mir viel Neues angeeignet, habe neue Sprachen, Algorithmen und Paradigmen erlernt. JavaScript wird fuer mich immer einen besonderen Stellenwert einnehmen, aber es hat sich veraendert, stark veraendert. Es kommt mir vor wie ein Freund, von dem man sich ueber die Jahre hinweg immer mehr entfernt. Waehrend es frueher als dynamische Erweiterung von Webseiten eingesetzt wurde, die die Nutzererfahrung verbessern sollte, ist JS heute ein alles subsumierender Moloch. Da gibt es Single-Page-Applikations, die den Zurueck-Button des Browser faktisch nutzlos machen, da gibt es tonnenweise nicht-triviales und vor allem nicht-freies JavaScript, das von unzaehligen externen Domains nachgeladen wird. Dabei handelt es sich oft um Tracking-Skripte, die jede noch so kleine Mausbewegung des Nutzers aufzeichnen, oder um Verhikel zur moeglichst prominenten Platzierung von Werbebannern. Immer oefter wird JS eingesetzt um essenzielle Bestandteile einer Webseite, also Text und Bilder, nachzuladen. Mit deaktivertem JS sieht man nichts als eine gaehnende, weisse Leere. Auf Performanz wird dabei fast ueberhaupt keinen Wert gelegt. Wenn mein CPU-Luefter aufjault, nur weil ich eine bestimmte Internetseite aufrufe, ist das kein gutes Zeichen. Es ist eigentlich ein Skandal. Gegenbewegung ============= Anno 2019 ist das Internet einfach nur kaputt. Dominiert von Grosskonzernen wird unser Surfverhaltens genauestens ueberwacht, aufgezeichnet und ausgewertet. Websiteanbieter schaemen sich nicht ihren marginalen Inhalt, unter Zuhilfenahme von megabytegrossem JavaScript-Framework-Boilerplate-Code zu praesentieren und sich zu beschweren, wenn man einen Werbeblocker einsetzt. JavaScript, mein alter Freund, ist heute der willige Vollstrecker dieses Unrechts. Was also tun? Nach meiner bitteren Enttaeuschung mit JavaScript und immer komplexer werdenden Webseiten, spielte ich mit dem Gedanken der hypothetischen Einfuehrung eines neuen Webstandards, der auf das Wesentlich reduziert ist. Ueberschriften, Paragraphen, Links, Bilder, viel mehr braucht man nicht um Informationen darzubieten. Alles andere ist ueberfluessiger Plunder und Blenderei. Dies steht in krassem Gegensatz, zu meinem alten Credo: erst die Form dann der Inhalt. Heute glaube ich, dass der Inhalt im Vordergrund stehen muss. Die Praesentation muss lediglich funktional sein. Warum sollte eigentlich die Webseite bestimmen, auf welche Art und Weise ich den Inhalt konsumiere? Lasst das doch uns entscheiden (ein gutes Beispiel fuer die Umsetzung dieses Gedankens ist der Reader-Modus im Firefox)! Dieser hypothetische Standard von dem ich sprach, muesste zunaechst einmal genauestens definiert und dann vor allem etabliert werden. Kein einfaches Unterfangen. Und warum das Rad neu erfinden, wenn ein solcher Standard seit Jahren existiert? Ich rede natuerlich vom Gopher-Protkoll! Und dieser Text steht am Ende dieses langen Gedankens. Ende ==== Ich habe diesen Essay vorwiegend fuer mich geschrieben, um meine Gedanken zu sortieren und zu reflektieren. Ich habe mich fuer einen Sonntag von der virtuellen Nabelschnur abgetrennt, um sie ohne Ablenkung zu Papier zu bringen. Danke fuer's Lesen. Maerz 2019