Von der Einfachheit

Praktisch jeden Tag meines Arbeitslebens schreibe ich Code in der Programmiersprache C++. Jeder, der C++ kennt, weiss, dass es sich hierbei um eine überaus umfangreiche und komplexe Sprache handelt. Deshalb habe ich mir für die tägliche Arbeit eine Teilmenge von C++ zusammengesucht, die ich verstehe und die andere verstehen werden, wenn sie meinen Code lesen (zwei wichtige Attribute von Source Code sind Einfachheit und Lesbarkeit).

Der Vorgänger von C++ (die Programmiersprache C) war viel simpler. Eine imperative Sprache, nicht objekt-orientiert (OO), nicht raffiniert, eher Punk, aber unter uns gesagt: Einfachheit schlägt OO. Dies ist wahrscheinlich der Grund, weshalb ich mich, je länger ich mit C++ arbeite, immer stärker zu C hingezogen fühle. Ich vermisse ganz offensichtlich die Einfachheit der vergangenen Zeiten (ähnlich sprach mein Grossvater – vielleicht werde ich langsam alt).

Jetzt Richtungswechsel.

C.A.R “Tony” Hoare ist einer der bedeutendsten Computerwissenschaftler aller Zeiten. Nicht nur erfand er den quicksort Algorithmus, er entdeckte auch profunde Konzepte wie die communicating sequential processes, die dank Googles (neuer) Programmiersprache Go hoffentlich Eingang in den Informatik-Mainstream finden werden.

Es ist immer wieder interessant, alte Informatik Papers aus den 70ern und 80ern zu lesen, als die Informatiker meist noch Mathematiker waren und unablässig an den Grundlagen der Computerwissenschaften gewerkelt haben. Manche dieser Papers sind geradezu visionär. Man merkt irgendwie, dass die Leute damals Zeit zum Nachdenken hatten und nicht von Konferenz zu Konferenz hetzten.

Letzte Woche stolperte ich über ein Dokument von besagtem Tony Hoare, das den Titel Everything you’ve wanted to know about programming languages but have been afraid to ask trägt. Ein höchst zugängliches (nicht-technisches) Dokument aus dem Jahr 1978. Das ganze ist im Frage-Antwort Stil verfasst.

Schon lange umtrieb mich die beunruhigende Beobachtung, dass Programmierer (und insbesondere C++ Programmierer) von der Sprache ihrer Wahl geradezu besessen sind, Religionskriege nichts dagegen. Ich hegte denselben Verdacht, den Hoare bereits 1978 zu Papier brachte (notabene bevor C++ erfunden wurde).

Why do programmers get so attached to the programming language they currently use?

[…] But there is another, more disturbing reason for the intense partisanship of a programmer – that his existing programming language has presented so many problems, complexities, and unexpected traps that he spent a long time learning how to master it. The prospect of a new language presents a severe threat – it might take even longer to learn to use it properly than the old one. But perhaps an even worse threat is that is might actually be easier to learn and use effectively, since that would wholly devalue the programmer’s hard-won professional expertise in his earlier language and its implementation. In this way, a complex programming language can drive out a simple one.

Ich denke, dass es diese mit Blut und Tränen erkämpfte Expertise ist, die C++ Programmierer mit Händen und Füssen verteidigen. Wahrscheinlich kann man einfacher von simplen Programmiersprachen ablassen. Könnte aber auch ein typischer Nerd-Charakterzug sein (Obsessionen etc.). Ich hoffe, dass in den kommenden Jahren simplere Sprachen wie Go oder Clojure im Mainstream Fuss fassen werden und wir auf C++ zurückblicken werden mit ein wenig Wehmut, aber noch viel mehr Erleichterung.