Ob Programmieren in die Literatur aufgenommen werden sollte, ließe sich ernsthaft diskutieren. Wie alle anderen Sprachen haben auch Programme ihre lyrische Nische. Für die Programmiersprache Perl eigenet sich beispielsweise besonders gut die Form des japanischen Haikus. Wilf stellt einige Möglichkeiten vor.
Text: wilf aus De:Bug 47

Von der künstlerischen Schönheit des Quellcodes
Dichten in Programmiersprachen
Wer heutzutage als Software-Ingenieur sein Brot verdient, wird quasi im Zeilen-Akkord bezahlt für den Ausstoß von Quelltext – dem Stoff, aus dem die (Software-) Programme sind. Dafür haben Programmierer einen Haufen Methodiken in petto, die ihre Arbeit effizient machen sollen und wieder verwendbar. In der Branche herrscht – so der Duden – “die Auffassung, dass die Erstellung, Anpassung und Wartung von Programmsystemen kein ‘künstlerischer’, sondern vorwiegend ein ingenieurmäßig ablaufender Prozess ist”. Hier liegt aber die Crux. Programmierer sehen ihre Arbeit nicht nur als schnödes Herunterhacken von Problemlösungen in der entsprechenden Programmiersprache, sondern sie werden sich mitunter auch bewusst, dass sie mit Sprache arbeiten. Und Sprachen wollen gesprochen werden, in ihrer ursprünglichen Daseinsberechtigung ganz einfach zweckfrei. Compilerfrei.
Perl
Inzwischen hat sich um eine Anzahl von Programmiersprachen eine Szene entwickelt, die keinen Wert mehr auf Software-Tugenden legt. Einige beschäftigen sich mit der Übersetzung von natürlich sprachlicher Lyrik in Programmiersprache. Andere dichten selbst, entweder mittels klassischer Formen (besonders beliebt sind Haikus und Sonette), oder sie gehen eigene Wege und suchen die adäquaten Formen in den Ausdrucksmöglichkeiten der Programmiersprache selbst. Einen recht großen Teil nimmt die automatische Generierung von Literatur ein. Daneben existieren Zirkel, die sich mit dem Erscheinungsbild von Quelltexten beschäftigen und so eine Art der Kalligraphie betreiben. Überhaupt ist auffallend, dass all diese Sparten durchaus auf eine literarische bzw. künstlerische Tradition zurückblicken. Etwa die “Ecriture Automatique” der Surrealisten oder die formalen Experimente des Schrifftstellerkreises “Oulipo”, dessen Mitglied Raymond Queneau mit seinen “Hunderttausend Milliarden Gedichte(n)” sicher zu den Gründervätern der Szene gerechnet werden kann. Ebenso Hans Magnus Enzensbergers “Poesie-Automat”, der letztlich auch nur einen Algorithmus zur Erzeugung von Text beschreibt.
if ( `your`, $love = TRUE )
{
join $me, $now or die
“without a word” and
shutdown $my, $heart
}
So könnte zum Beispiel ein Programmierer seinen Liebeskummer in seiner Sprache – Perl – ausdrücken. Denn: Auch Programmierer haben bestimmt mal Liebeskummer. Den sie dann gerne in Worte, in Sprache umwandeln möchten.
Der Klassiker unter den Perl-Haikus ist von Larry Wall, dem Erfinder von Perl höchstpersönlich:
print STDOUT q
Just another Perl hacker,
unless $spring
Perl ist eine Sprache mit einem sehr kleinen Wortschatz: Perl kennt nur um die 250 Wörter. Das Wort “sleep” beispielsweise ist ein Platzhalter für eine Funktion, die – nicht sehr überraschend – das Programm für eine bestimmte Zeit in einen Ruhezustand versetzt. Trotzdem vermag man mit diesem scheinbar so beschränkten Vokabular äußerst lyrischen Quellcode basteln – und manchmal sieht der Quellcode dann auch noch sehr besonders aus (Bild 1).

MUSS LEIDER REIN, UNBEDINGT. WENN DAS NICHT IN DEN FLIESSTEXT REINGEHT ALS BILD NEHMEN.

Bild 1:

#!/usr/bin/perl -s
@x=qw/e n d/;if(
$kg){$e=13;$_=”setrand(@{[int((rand)*90)]})
;K=vector(2,g,nextprime(random(10^$s)));e=$e;n=K[1]*
K[2];d=e^-1%((K[1]-1)*(K[2]-1));”;s/s//sg;for(
`echo “$_ e
n
d
“|gp -q`){print$x[$j++]
,”=”,`echo “10i16o$_ p”|dc`}exit}$t=
unpack’H*’,join”,<>;$l=length$n;$y
=$e?$l-2:$l;$i=”16dio”;while (){$M=
($e&&1+int(rand 8)).(substr $t,$p
,$y or last);$i.=”U$M $k $nE|
pc”;$p+=$y}for(reverse
`echo “$i”|dc`){chop
;$d&&s/^(.)//||($_=
sprintf”%0${l}s”
,$_); $f
.=$_}#
print
pack
‘H*’
,$f

Dieses Perl-Script dient eigentlich der Verschlüsselung von Text. Doch der Programmierer hat das Script in Form eines Delfins geschrieben – wahrscheinlich, weil es ihm so besser gefällt. Vielleicht mag er auch einfach Delfine besonders gern. Vielleicht wollte er auch einen Wettbewerb gewinnen. Einen Wettbewerb wie den ‘Annual Obfuscated Perl Contest’.

C
Das Latein der Programmiersprachen jedoch ist C. “The International Obscure C-Code Contest” findet alljährlich statt. Die Ziele dieses Wettbewerbs setzen sich aus den folgenden fünf Punkten zusammen: Es geht darum, das obskurste C-Programm zu schreiben. Dabei sollen die Wichtigkeit des Programmierstils (“programming style”) auf eine ironische Art und Weise gezeigt, C-Compiler mit unüblichem Code beansprucht, die Feinheiten von C illustriert und überdies kein Blödsinn mit “poor C Code” getrieben werden – Bedingung ist: “provide a safe forum for poor C code”. Alles klar. Und das schon im fünfzehnten Jahr. Die Kategorien für ein Siegerprogramm sind wahrhaftig obskur: Von “Best Abuse of the C Preprocessor” über “Worst abuse of the C preprocessor” bis hin zu “Most algorithms in one program” ist eigentlich alles geboten.

Form ist gleich Inhalt. Zum Beispiel im Code von Glyn Anderson aus Indonesien: sein C-Programm übersetzt geschriebene Worte in Flaggensprache. Der Code selbst sieht aus wie eine Flagge (es ist die schwarz-weiße Flagge, die bei Protest gegen unsportliches Verhalten geschwenkt wird – aber dies nur am Rande). Zweimal ausgedruckt hilft diese Flagge beim Ausprobieren der Flaggensprache in echt. Das Programm selbst, so das Urteil der Jury, kann sehr nützlich sein: “This small program might be a nice addition to a digital personal organizer; just in case you are stranded on a desert island and need to signal your distress to passing ships.”
Das uns allen so wohlbekannte “Hello, World” sieht in Flaggensprache so aus wie in Bild 2:

BILD 2:

[unbedingt einen Font wie Lucida Console verwenden]
<> <> <> <> <> <>
_() ()/ ()/ ()/ _) () (/_ _)
[] /^ |^^ /^^ /^^ [] ^^ |^^| ^^ [] [] ^^
<>[ [][ <>][ <>][ ][ [][] ][ ][

<> []
_()_ ()/ |() ()
[] ^^ [] /^^ ^^| |^^|
][ <>][ ][] [][]

Und “De-Bug” buchstabiert sich in Flaggensprache wie in Bild 3:

[unbedingt einen Font wie Lucida Console verwenden]

BILD 3:
[] <> <> <>
|() ()/ _() ()/ () ()
^^| |^^ [] ^^| ^^ |^^ |^^|
][] [][ ][] ][ [][<> [][]

Es irrt also der Duden. In der Welt der Softwareentwicklung geht der kreative, künstlerische Prozess längst Hand in Hand mit der Erstellung, Anpassung und Wartung von Programmsystemen. Und allen Literaten würde sich der folgende Ausspruch eines unbekannten Autors zum fett gedruckten Eintrag ins ganz persönliche Stammbuch empfehlen: “Poems are language problems”.

About The Author

Elektronische Lebensaspekte.