Ob Programmieren Kunst oder Ingenieurswissenschaft ist, darüber haben schon viele debattiert. Eines eint beide Lager: Sie benötigen Sprache, um sich auszudrücken.
Sprache sei inhärent uneindeutig, mäkelte ein genervter Teilnehmer einer Online-Debatte, in dem sich die Diskutanten nicht über exakte Wortbedeutungen einig wurden. Entwickler haben es da einfacher. Die meisten Programmiersprachen sind ziemlich eindeutig. Die wenigsten lassen zu, dass Schreiber ihre Regeln verletzen.
Natürliche Sprachen sind anders. Oft sind es gerade die Verletzungen, die Literatur interessant machten. In seinem berühmten Lied "odi et amo" bricht der römische Dichter Catull eine Reihe von Grammatikregeln, schafft aber dadurch eines der dichtesten Liebesgedichte - ein "wc -c catull.txt" zeigt gerade einmal 87 Zeichen in zwei Zeilen an (Torsten Lorenz, "C. Valerii Catulli: Carmen LXXXV": http://www.hausarbeiten.de/faecher/vorschau/95573.html). Das erreicht er durch geschicktes Weglassen des Offensichtlichen und Vereinfachung. Solche Poesie vermag C nur schwer zu erreichen. Programmiersprachen haben meist andere Stärken, sind eindeutiger und unnachgiebiger. Viele kennen das: Der Compiler beklagt sich einmal mehr über die nicht deklarierte Variable "x" und moniert andererseits, dass der Code "y" vereinbart, aber nicht benutzt.
Verständnisvolle Computer
Mancher Programmierer mag sich schon Compiler gewünscht haben, die mehr Verständnis für offenkundige Tippfehler haben. Einige Programmiersprachen versuchen sich zaghaft in etwas Toleranz und schaffen so Gemeinsamkeiten: Perl erhebt es etwa zum Konzept, mehr als einen Weg zur Lösung zuzulassen (Mike Schilli bestimmt im Perl-Snapshot am Seite 114 die Restlaufzeit seines Netbook). Selbst Java FX (Vorstellung der neuen Web-Sprache ab Seite 98) gibt sich im Gegensatz zur großen Schwester Java großzügig: Um Objekt-Attribute abzutrennen, gibt die junge Sprache Kommata vor - fehlen sie, sieht der Compiler gnädig darüber hinweg. Solch Freiheit waren Fortran-77-Programmierer nicht gewohnt, forderte der Grammatikparser doch strenge Einrückungen (Fortran-Merkblatt zur Fixed Source Form: http://www.infosun.fim.uni-passau.de/cl/...-Merkblatt.html). Wer diesen Zeiten nachtrauert, darf sich mit Python trösten: Auch dort sind Einschübe syntaktische Sprachmittel (dafür lassen sich damit leicht Filesysteme schreiben, ab Seite 109).
Den Brückenschlag von der kalten, unerbittlichen Syntax zur Semantik, der Bedeutung hinter den Dingen haben viele versucht. Ketzerischerweise hat der Logiker Kurt Gödel das Streben nach ihm mit seinem berühmten Satz über die Unvollständigkeit zunichte gemacht: Nur mit syntaktischen Mitteln allein lässt sich nicht alles Wahre ergründen. Auch diese unerfüllte Sehnsucht eint Literaten und Techniker.
Ist das die Trennlinie zwischen Sprachen von Computern und Menschen? Die eine präzise und effizient, die andere ungenau, aber mit innerer Schönheit gesegnet? Das griffe zu kurz, Schönheit liegt im Auge des Betrachters. Für den einen ist
*v;main(a,b){for(a=atoi(1[v=b]);o(a),b=atoi(v[2])-a;a+=(b|1)%2);}
nur eine wirre Reihung von Zeichen (1. Kaiserslauterer Shortest C Contest 1995:
http://www.unix-ag.uni-kl.de/~conrad/shocc/shocc.html), andere sehen darin verdichtete Gedanken wie in Catulls Gedicht, das sich auch ums Hassen und Lieben dreht.