Javascript

Singen und Saufen in JavaScript und PHP

8. September 2003
von

von Philipp Winterberg

Volkslieder sind meist simpel gestrickt. Findige Programmierer haben dies genutzt und den Songtext von “99 Bottles of Beer” in wenige Zeilen JavaScript, Perl oder PHP gepackt.

“99 Bottles of Beer” ist ein Lied, vergleichbar mit dem deutschen “Auf der Mauer, auf der Lauer”. Nur dass es von Strophe zu Strophe nicht weniger Buchstaben, sondern weniger Flaschen werden. Verschiedene Versionen des Songtextes sind auf einer Website gesammelt: Verfasst in JavaScript, Python, Perl, ASP, PHP und weit über 250 weiteren Script- und Programmiersprachen.

Begonnen hat alles damit, dass 1994 jemand den kompletten Text des Liedes (also alle 99 Strophen) an eine Humor-Mailingliste schickte. Dies wurde allgemein als Verschwendung wertvoller Bandbreite angesehen. Ein anderes Mitglied der Mailingliste schrieb ein sechszeiliges Basic-Programm, dass ebenfalls den kompletten Songtext des Liedes ausgab:

 10
REM BASIC Version of 99 Bottles of beer 
 20 FOR X=100 TO 1 STEP -1 
 30
PRINT X;"Bottle(s) of beer on the wall,";X;"bottle(s) of beer"

 40 PRINT "Take one down and pass it around," 
 50 PRINT X-1;"bottle(s)
of beer on the wall" 
 60 NEXT 
    

Schnell kamen Versionen in C++ und anderen Programmiersprachen hinzu. Bei der 20. Version wurde beschlossen, daraus ein Archiv zu machen. Über die Jahre hinweg ist dieses Archiv stetig gewachsen und beinhaltet heute Versionen in den ausgefallensten Script- und Programmiersprachen, darunter natürlich auch die für Webworker interessanten Sprachen wie JavaScript, Python, Perl, PHP etc.

Um eine neue Version in das Archiv einzutragen, schicken Sie einfach eine E-Mail mit dem Programm an new99bottles@ls-la.net. Einzige Voraussetzung: Name und Homepage-URL sollen als Kommentar an den Anfang der Datei. Kleines HTA Beispiel:

      <!-- HTA
version of 99 Bottles of beer (Bottles.hta) -->
 <!-- Philipp Winterberg,
http://www.winterbergs.de -->
 <html>
 <head><hta:application
id="99Bottles" singleInstance="yes"
 applicationName="99
Bottles of Beer">
 <title>99 Bottles of Beer</title></head>

<body><script><!--
 for (b = 99 ; b > 0 ; b--) 
 with
(window.document) {
 writeln(b + " bottle(s) of beer on the wall,<br>");

writeln(b + " bottle(s) of beer.<br>");
 writeln("Take
one down, pass it around,<br>");
 writeln((b - 1) + " bottle(s)
of beer on the wall.<p>");
 } //-->
 </script></body>

</html> 

Eine wahre Fundgrube nicht nur für Profiprogrammierer, denn die verschiedenen Versionen sind immer kurz gehalten und geben einen guten Einblick in die Syntax der Sprachen.

Appetit bekommen? Dann schreiben Sie doch selbst eine neue Variante in einer bislang vernachlässigten Sprache wie Pliant, Pike oder Miva … Und nicht vergessen, sind alle 99 Flaschen leer, heißt es: “Go to the store and buy some more.” Prost!

99 Bottles of Beer Archiv

Ein Kommentar? Schön!

Wir freuen uns immer über Leser, die durch nützliche und konstruktive Beiträge zum Thema eine Diskussion anstoßen oder den Artikel mit weiteren Informationen anreichern. Alle Kommentare werden in diesem Sinne moderiert. Zum Kommentar-Fairplay gehört für uns auch der Einsatz von rel="nofollow". Bitte verwenden Sie zudem als Namen weder eine Domain noch ein spamverdächtiges Wort. Vielen Dank!

*