Sie sind auf Seite 1von 70

Das 99 Bottles of Beer Programm

Philipp Winterberg

Das 99 Bottles of Beer-Programm


program BoB99;
{$ifdef __GUI__}
uses WinCRT; {+}
{$endif} {+++++}
var b: byte; a,
c: string; begin
a:= #32+#98+#111
+#116+#116+#108+#101
+#40+#115+#41+#32+#111
+#102+#32+#98+#101+#101+
#114; b:= 99; c:= #32+++
#111+#110+#32+#116+#104+
#101+#32+#119+#97+#108++
#108; repeat writeln(b:2
, a+c+#44+#13+#10,b:2, a
+#46+#13+#10+#84+#97++++
#107+#101+#32+#111+#110+
#101+#32+#100+#111+#119+
#110+#44+#32+#112+#97+++
#115+#115+#32+#105+#116+
#32+#97+#114+#111+#117++
#110+#100+#44+#0);dec(b)
;writeln(b:2, a+c+#46+++
#13+#10);until b=0; end.

Ein Reise durch die Welt der Programmiersprachen

Alle in diesem Buch enthaltenen Programme und Verfahren wurden nach


bestem Wissen erstellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht
ganz auszuschlieen. Aus diesem Grund ist das im vorliegenden Buch enthaltene Programm-Material mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag bernehmen infolgedessen keine
Verantwortung und werden keine daraus folgende oder sonstige Haftung
bernehmen, die auf irgendeine Art aus der Benutzung dieses ProgrammMaterials oder Teilen davon entsteht.

TO THOSE WHO UNDERSTAND BINARY

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. In diesem Werk berechtigt auch ohne besondere Kennzeichnung
nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichenund Markenschutz-Gesetzgebung als frei zu betrachten wren und daher
von jedermann benutzt werden drften.
Alle Rechte vorbehalten. Nachdruck, auch auszugsweise, verboten. Kein
Teil des Werkes darf ohne schriftliche Einwilligung des Autors in
irgendeiner Form, auer fr Zwecke der Unterrichtsgestaltung, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfltigt oder verbreitet werden.

Umschlag: Dne 45, Namib-Naukluft Park, Namibia (Titel, oben); Karibik,


Yucatan, Mexiko (Titel, unten); 99 Bottles of Beer-Welt Textmosaik
(Rckseite) erstellt mit Textmosaic Generator 1.00
Fotos, Textmosaik, Umschlaggestaltung: Philipp Winterberg
Frontispiz: Das 99 Bottles of Beer-Programm in TMT Pascal (vgl.
Reiseziel 71)
2. Auflage mit ergnzendem Vorwort
Copyright 2006-2011 Philipp Winterberg
http://www.philipp-winterberg.de
http://www.99-bottles-of-beer.de

Vorwort

zur 2. Auflage

Als ich vor rund 10 Jahren begeistert und aufgeregt mit dem Schreiben
meines ersten 99 Bottles of Beer-Beispielprogramms begann, ahnte ich
weder, dass daraus einmal ein Buch werden wrde, noch, dass dieses Buch
weit ber 100.000 Menschen erreichen wrde meinen herzlichen Dank an
alle abenteuerlustigen Leser!
Wie bei Reisefhrern blich, verliert auch dieses Buch mit den Jahren
immer mehr an Aktualitt: Programmiersprachen werden aktualisiert, verschoben oder gelscht und die Beispiele werden so pltzlich zu raren Fotos
aus einer lngst vergangenen Zeit Und nicht nur Programmiersprachen
verndern sich: Heute wrde man dieses Buch wahrscheinlich eher Die
99 Bottles of Beer-App nennen, denn heutzutage heissen Programme
nicht mehr einfach nur Programme, sondern Apps!
Bevor ich aber den Titel und ca. 99 Listings aktualisiere oder entferne,
belasse ich es lieber dabei, den geneigten Leser auf den rapide gestiegenen
Abenteuerfaktor des Buches hinzuweisen und empfehle, die Beispielprogramme wie exotische Schnappschsse in einem Reisefhrer zu genieen.

Bangkok, im November 2011

Philipp Winterberg

Vorwort
Ursprnglich war dieses Buch als Buch aus Papier fr 23,55 geplant. Jetzt
ist es ein Buch aus Bits und geschenkt. Warum? Weil das besser passt.
Warum? Weil man einen Reisefhrer aus Papier nur in der Welt mit Wetter
braucht. Ein digitaler Wegbegleiter, aus dem man Codefragmente und
Links herauskopieren kann, ist fr eine Reise durch die Welt der
Programmiersprachen weitaus praktischer
So sind denn auch die Anekdoten und Wegbeschreibungen im
vorliegenden Buch deutlich krzer gehalten als anfangs geplant. Der
Lesekomfort ist mithin abenteuerlich, aber echte Abenteurer wollen
schlielich nicht lesen sondern selbst erleben. Umwege und Anekdoten
ergeben sich da von ganz alleine
Warum gibt es dieses Buch berhaupt? Nun, eine der grten
Schwierigkeiten bei unbekannteren Programmiersprachen ist der Einstieg:
Wo finde ich einen Compiler/Interpreter? Wie installiere ich ihn? Wie
bekomme ich das erste Programm zum Laufen? Dieser Reisefhrer gibt
Ihnen in aller Krze genau diesen Einstieg in 99 Programmiersprachen,
bringt sie so ans Ziel, dass Sie auf sicherem Boden stehen, orientiert sind
und eigene Erkundungen mutig wagen knnen.
Sollten Sie noch nie programmiert haben, nehmen Sie sich bitte Google,
die Wikipedia und eine etwas grere Portion Zeit zur Hand, bevor Sie
aufbrechen.
Eine kurze Erluterung zur Frage, was es mit dem 99 Bottles of BeerProgramm auf sich hat, finden Sie hier:
http://www.drweb.de/programmierung/99bottles.shtml
Eine erlebnisreiche Weltreise wnscht:
Philipp Winterberg

10

Inhalt
Vorwort zur 2. Auflage ........................................................................................... 8
Vorwort .................................................................................................................... 10
Reiseziele .................................................................................................................. 14
01: 23 .................................................................................................................... 14
02: Alice Pascal................................................................................................... 15
03: ASHE ............................................................................................................ 16
04: ASIC .............................................................................................................. 18
05: BasicBasic ..................................................................................................... 19
06: BBC BASIC for Windows......................................................................... 21
07: Blaster Master Pascal .................................................................................. 22
08: bwBasic ......................................................................................................... 24
09: C-- .................................................................................................................. 25
10: Chipmunk Basic .......................................................................................... 26
11: COCOA........................................................................................................ 27
12: ComWic ........................................................................................................ 28
13: Curl ................................................................................................................ 29
14: D..................................................................................................................... 30
15: D++............................................................................................................... 31
16: DarkBasic...................................................................................................... 32
17: Delphi............................................................................................................ 33
18: Dialect ........................................................................................................... 34
19: DiNGS Game Basic ................................................................................... 35
20: DPas............................................................................................................... 36
21: EasyBatch ..................................................................................................... 37
22: eC ................................................................................................................... 38
23: elastiC ............................................................................................................ 39
24: Ethos Basic................................................................................................... 40
25: Euphoria ....................................................................................................... 41
26: FirstBasic/PowerBasic ............................................................................... 42
27: FranzBasic .................................................................................................... 43
28: Free Pascal.................................................................................................... 43
29: GABasic ........................................................................................................ 45
30: GBasic ........................................................................................................... 46
31: GFA Basic .................................................................................................... 46

11

32: GPLZ.easy ....................................................................................................47


33: HotTEA ........................................................................................................48
34: HQ9+ ............................................................................................................49
35: HTA ...............................................................................................................50
36: HTBasic.........................................................................................................50
37: IBasic..............................................................................................................51
38: Impacto..........................................................................................................52
39: Irie Pascal ......................................................................................................53
40: ISETL ............................................................................................................54
41: JScript.............................................................................................................55
42: Kiev ................................................................................................................56
43: KiXtart...........................................................................................................57
44: Liberty Basic .................................................................................................58
45: MacroX..........................................................................................................59
46: MoonRock ....................................................................................................60
47: NeoBook .......................................................................................................61
48: Numberix ......................................................................................................62
49: O'Basic...........................................................................................................63
50: Objective Caml.............................................................................................64
51: PascalX ..........................................................................................................65
52: PasScript ........................................................................................................66
53: Port. ISO Std. Pascal...................................................................................67
54: ProvideX .......................................................................................................68
55: PureBasic.......................................................................................................69
56: Py ....................................................................................................................70
57: Quikcode .......................................................................................................71
58: R......................................................................................................................72
59: Rapid-Q .........................................................................................................73
60: RapidBATCH...............................................................................................73
61: RBASIC.........................................................................................................74
62: REBOL/Core ..............................................................................................75
63: ScriptBasic.....................................................................................................76
64: ScriptEase......................................................................................................77
65: SheerPower ...................................................................................................78
66: ShowText ......................................................................................................79
67: SmallBasic .....................................................................................................80

12

68: SuperEASY .................................................................................................. 81


69: T ..................................................................................................................... 82
70: TMMLPTEALPAITAFNFAL ................................................................ 83
71: TMT Pascal .................................................................................................. 85
72: Tokiwa........................................................................................................... 86
73: TRANSCRIPT ............................................................................................ 87
74: True Basic ..................................................................................................... 89
75: TsrBasic......................................................................................................... 90
76: Turbo C......................................................................................................... 91
77: Turbo Pascal for Win. ................................................................................ 92
78: Turbo Pascal ................................................................................................ 93
79: Turbo PL ...................................................................................................... 94
80: UBasic............................................................................................................ 95
81: unbabtized .................................................................................................... 96
82: VBA/Access ................................................................................................ 97
83: VBScript........................................................................................................ 98
84: Visual DialogScript ..................................................................................... 98
85: WebL ............................................................................................................. 99
86: WIL..............................................................................................................100
87: WinBatch ....................................................................................................101
88: wxBasic........................................................................................................103
89: XBasic..........................................................................................................103
90: XLISP-PLUS..............................................................................................104
91: XOTcl..........................................................................................................105
92: XPL0............................................................................................................106
93: XS.................................................................................................................107
94: xScript..........................................................................................................108
95: Yabasic ........................................................................................................109
96: Yacas............................................................................................................110
97: Yoix..............................................................................................................111
98: Zeno.............................................................................................................112
99: ZT ................................................................................................................113
Anhang ...................................................................................................................116
A:99BottlesofBeer Song.......................................................................................116
B: ZT Dokumentation....................................................................................121
Register ...................................................................................................................137

13

Reiseziele
01: 23
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

23 Alpha-Version; 0,1MB; Interpreter


Plattformunabhngig
Gratis; Freeware
Verschollen
Unfertige Alphaversion

Die Weltreise beginnt mild: Keine Installation, keine wilden Packete. Wir
surfen mit einem Browser Ihrer Wahl zur Anreise-URL und sind bereits
am Ziel. Glckwunsch! Das war einfach.
Wir lschen den Inhalt der Textbox mit der Beschriftung Quelltext und
fgen dort folgende Zeilen ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:

23 version of 99 Bottles of beer (Bottles.23)


Philipp Winterberg, http://www.winterbergs.de
Only use lines between "--- cut ---" and "--- cut ---"!
--- cut --23,35,19,36,30,16,44,16,13,23,35,19,36,18,19,66,33,
10,1,35,23,35,19,36,30,17,3,46,13,13,27,0,35,1,255,
99,32,98,111,116,116,108,101,40,115,41,32,111,102,
32,98,101,101,114,32,111,110,32,116,104,101,32,119,
97,108,108,46,13,84,97,107,101,32,111,110,101,32,
100,111,119,110,44,32,112,97,115,115,32,105,116,32,
97,114,111,117,110,100,44,13
--- cut ---

--------------------------- *schnapp* -----------------------------

Anschlieend klicken wir bestimmt auf den Button Interpreter


starten! und freuen uns ber die Ausgabe des 99 Bottles of BeerSongs in der Textbox mit der Beschriftung Konsole. Ein erster Erfolg.
Im Fenster Meldungen werden alternative Quelltext-Notationen angeboten
und genau an dieser Stelle beginnt das Abenteuer : Die Programmiersprache ist eine der sogenannten esoterischen Programmiersprachen,
was nichts mit Sex, Gurus und Gehirnwsche zut un hat, sondern lediglich
bedeutet, dass sie sehr sehr sehr weit entfernt vom Mainstream ist. Also
genau das, was den echten Abenteurer reizt. Unerforschtes Gelnde,

14

bizarre Gedankenwelten, kryptisch anmutender Quellcode. Hierin liegt der


Reiz, aber leider auch oft das Problem der esoterischen Programmiersprachen : Denn ist die Sprache wie im vorliegeneden Fall in einem unfertigen Zustand, existiert keine hinreichend verstndliche Dokumentation,
gibt es weder Support noch andere User, dann ist guter Rat teuer und oft
bleibt nur, unverrichteter Dinge wieder abzureisen. Diese Sprache ist folglich ein klares Negativbeispiel, trotz unseres Erfolges.
Ist andererseits eine esotersiche Programmiersprache ausgereift, gibt es einen funktionstchtigen Interpreter oder sogar Compiler und eine detaillierte Dokumentation, dann ist ihre Erkundung ein Genuss, der nur schwer zu
berbieten ist. Ein Positivbeispiel ist Zer0 Tolerance (vgl. Reiseziel 99,
Dokumentation als Beispiel im Anhang B).

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:

program Bottles(input, output);


{ Alice Pascal version of 99 Bottles of beer (Bottles.ap) }
{ Philipp Winterberg, http://www.winterbergs.de
}
var
b : Byte;
begin
b := 99;
repeat
writeln(b:2, ' bottle(s) of beer on the wall,');
writeln(b:2, ' bottle(s) of beer');
writeln('Take one down, pass it around,');
b := b - 1;
writeln(b:2, ' bottle(s) of beer on the wall.');
writeln('');
until b = 0;
end.

--------------------------- *schnapp* -----------------------------

02: Alice Pascal


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Alice Pascal SCI-1.3; 1985; 0,7MB; Interpreter


DOS
Gratis; Freeware
http://www.templetons.com/brad/alice.html
Uralt Pascal-Derivat +++ Alice Pascal strahlt den
grob romantischen Charme einer lngst vergangenen
ra aus +++ Auch bekannt als ALICE: The Personal
Pascal System

Dies ist nicht nur ein kleiner Ausflug, es ist eine Zeitreise ins Jahr 1985:
ALICE: The Personal Pascal System, frher kommerziell, jetzt kostenlos.
Ein echter Dinosaurier. Kein Support. Spannend. Nach dem Download
entpacken wir die ZIP-Datei und starten alice.exe (alternativ zur Standardversion gibt es auch noch eine in LARGE im Unterverzeichnis
/large, falls man Programme mit mehr als 128k ausfhren mchte).
Willkommen in der Vergangenheit! Textmodus mit 16 Farben, keine Mausuntersttzung. Dafr ein Men mit Schnellwahltasten: Wir drcken <A> fr
Edit a New Program. Alice hilft bei der Eingabe des folgenden Programms ein wenig, frbt den frischen Quellcode sinnvoll ein und ist auch
sonst sehr zuvorkommend...

15

Mit <F1> wird das Programm Bottles ausgefhrt. Erfolgreich? Glckwunsch. Ein erhebender Moment. <Space> bringt uns zurck in den farbenfrohen Editor.
Im Weiteren knnen Sie das Gelnde nach Lust und Laune erkunden. Experimentieren Sie, aber berfordern Sie die alte Dame nicht! Hilfe bringt
auf Wunsch <F9>.

03: ASHE
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ASHE 2.0; 2003; 4,8MB; Interpreter


Windows
$39,95; Shareware
http://www.grandriversoftware.com/ashe.htm
Primr als Hex Editor konzipiert +++ ASHE steht
fr A Scripted Hex Editor

Keine Panik. Da wir fr diese Reise keine 45 Tage bentigen, ist alles kostenlos. Sollten Sie ASHE darber hinaus benutzen, seien Sie fair und
kaufen Sie eine Lizenz. Und los: Die Installationsroutine ashesetup.exe
starten Sie per Doppelklick. Das Programm befindet sich anschlieend un-

16

ter Start | Programme | ASHE - A Scripted Hex Editor |


ASHE 2.0...
ber das wenig ansprechend gestaltete ASHE Hauptfenster rmpfen wir
kurz die Nase, schtteln den Kopf ob der unsthetischen Buttons, whlen
dann aber unbeirrt Windows | Script Output und Windows |
Script Editor im Men. ASHE ffnet daraufhin zwei Fenster: Ein
schlichtes mit weiem Hintergrund fr die Ausgaben des Scripts, sowie ein
herrlich blau gefrbtes Editorfenster, das die Programmstruktur der folgenden Zeilen whrend der Eingabe gekonnt farbig betont:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:

' ASHE version of 99 Bottles of beer (Bottles.txt)


' Philipp Winterberg, http://www.winterbergs.de
Number b = 99
While b
Print
Print
Print
b-Print
Print
Wend

> 0
b; " bottle(s) of beer on the wall,"
b; " bottle(s) of beer."
"Take one down, pass it around, "
b; "

bottle(s) of beer on the wall."

--------------------------- *schnapp* -----------------------------

Befehl fr Befehl arbeitet ASHE das Script ab, wenn Sie mehrmals auf den
Step-Button klicken. Mhsame Sache. Schneller geht es mit einem einzigen
Klick auf den Button mit dem roten Ausrufezeichen (Run Script): Im
Script Output Fenster erscheint der komplette Songtext, gefolgt von der
zufriedenen Meldung Script Terminated on line: 13 with no
errors. Super.
Nun ist es an Ihnen, den Inhalt des Output Fensters als Reiseandenken per
Klick auf den Print-Button zu drucken, die ASHE Syntaxfarben Ihrem persnlichen Geschmack anzupassen, oder in der Hilfe (Help | Contents)
die weiteren Mglichkeiten zu entdecken.

04: ASIC
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ASIC 5.0; 1994; 0,3MB; Compiler


DOS
$20,00; Shareware
http://www.programmersheaven.com/search/Download.a
sp?FileID=15872
Es wird keinerlei Aussage darber gemacht, wie
lange man das Programm evaluieren darf, unser Ausflug sollte aber auf jeden Fall im Rahmen des kostenlosen sein +++ ASIC Slogan: "Its Almost Basic"

Auch wenn ASIC offensichtlich das B fehlt: Alles halb so wild. Der
Installer (install.exe) erfragt zwar einige Verzeichnisse, lsst einem die
Freiheit, zu whlen, ob man kleine Beispiele mitgeliefert bekommen mchte und kommt im schnsten blaugelb daher; davon abgesehen verhlt er
sich aber freundlich, friedlich und untersttzt mit sinnvollen Defaultwerten. ndert man diese nicht, findet sich im Verzeichnis c:\asic die Datei
asic.exe, die wir nun starten. Nebenbei: Die in der Dokumentation
geforderten 425k Available Memory haben wir. Garantiert.
ASICs Oberflche ist blau, gelb, grn, rot... Wir sind mitten im Regenbogen! Und erhhen dessen Gelbanteil mit folgenden Zeilen:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:

rem ASIC version of 99 Bottles of beer (Bottles.asi)


rem Philipp Winterberg, http://www.winterbergs.de
cls
b = 99
bottles:
print b;
print " bottle(s) of beer on the wall,"
print b;
print " bottle(s) of beer."
print "Take one down, pass it around,"
b = b - 1
print b;
print " bottle(s) of beer on the wall."
print
if B>0 then bottles:
end

--------------------------- *schnapp* -----------------------------

17

18

Zur Sicherheit speichern wir jetzt das Ergebnis. Mit <F2>. Geben Sie als
Dateinamen Bottles ein und besttigen mit <Enter>. Die Endung
.ASI hngt ASIC umsichtig selbst an den Dateinamen.
Der Hhepunkt des Ausflugs naht: Mit <F10> starten wir den Compiler.
Der meldet sogleich: No Compiler Errors. Gut. So erwarteten wir
das. Im Verzeichnis c:\asic liegt die frisch erschaffene Datei Bottles
.com, die wir mit <F5> ausfhren. War da was? ASIC sagt: Program
Terminated Normally (0). Danke. Der PC ist wohl zu schnell. Um
etwas mehr von der Ausfhrung zu sehen, whlen wir File | Dos
shell und geben Bottles gefolgt von <Enter> ein. Viel besser.
Mit Exit <Enter> gelangen Sie sicher zurck in den Editor. Erkunden
Sie nun die Feinheiten, legen Sie z.B. fest, dass der Compiler eine .EXE
statt einer .COM Datei erzeugt.
In der Dokumentation (asic.doc) finden Sie ein Tutorial, dass Sie in die
Tiefen des Regenbogens entfhrt. Nicht vergessen: Am Ende steht meist
ein Topf voll Gold.

05: BasicBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

BasicBasic 1.52; 1993; 0,4MB; Compiler


DOS/Windows
$30,00; Shareware
http://www.programmersheaven.com/search/Download.a
sp?FileID=16394
Diese Shareware Version erlaubt nur Programme bis
200 Zeilen fr uns kein Problem.

BasicBasic kommt, sobald alle Dateien entpackt sind, in zwei Geschmacksrichtungen: DOS (BBE.EXE) und Windows (WBBE.EXE). Wir whlen Windows. Das ist zwar eher Vanille als Schoko, hier aber verzeihlich, wenn Sie
spter noch mutig mit der DOS-Version experimentieren.

Der Editor ist robust, altmodisch, solide. Unsere Aufmerksamkeit fngt zunchst ein kleiner Star: Der fordernd blinkende Textcursor spielte grn
getnt in der Anfangsszene des Films Matrix mit. Respekt. In klobigen, bauchigen Buchstaben schreiben wir:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:

rem BasicBasic version of 99 Bottles of beer (Bottles.bas)


rem Philipp Winterberg, http://www.winterbergs.de
a$=" bottle(s) of beer" : c$=" on the wall"
for b = 99 to 1 step -1
print b; a$; c$; ","
print b; a$; "."
print "Take one down, pass it around,"
print b-1; a$; c$; "."
print
next b
if ostype = 1 then
do while inkey$=""
loop
end if

--------------------------- *schnapp* -----------------------------

19

20

Whlen Sie vorsichtig File | Save As, geben Sie Bottles ein und
klicken Sie auf den Button OK. ber Make | Run fhren Sie das
Programm aus eine ausfhrbare Version (Bottles.exe) wird vom
BasicBasic Compiler automatisch im Hintergrund erzeugt. 0 Warnings,
0 Errors. Sehr gut.
Probieren Sie jetzt kurz den integrierten Icon Editor aus oder machen Sie
ein Foto von sich und dem berhmten Textcursor. Das glaubt Ihnen ja
sonst spter niemand. ;-)

06: BBC BASIC for Windows


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

BBC BASIC for Windows 3.0d; 2004; 1,2 MB; Compiler


Windows
29.99; Shareware
http://www.cix.co.uk/~rrussell/products/bbcwin/dow
nload.html bzw. http://www.bbcbasic.com
Bei dieser Shareware Version ist das Kommando
Compile deaktiviert und es sind nur Programme
bis zu einer Gre von 8kb erlaubt fr uns ist
beides kein Problem.

09: NEXT b
--------------------------- *schnapp* -----------------------------

Das farbkompositorisch vollumfnglich misslungene Syntax Colouring


(orange, grn, rosa) weckt die lngst vergessen geglaubte Sehnsucht
nach einem Monochrom-Monitor. Andererseits geben diese kleinen Stylesnden BBC BASIC einen ganz eigenen, unverwechselbaren Charme.
Unser Programm starten wir jetzt per Klick auf den Button Run (der mit
dem Play-Symbol). Der Songtext wird in miger Geschwindigkeit in
einem sich neu ffnenden Fenster ausgegeben. Sehr gut.
Experimentieren Sie nun: Mit dem Renumber Button knnen Sie Zeilennummern (blau) hinzufgen und die Farbkomposition weiter verfremden,
der Befehl Options | Set Colours... im BBC BASIC Men ermglicht es Ihnen, die Farbvergabe noch weiter zu ruinieren. Rettung bringt der
Menbefehl Options | Syntax Colouring, der den Quelltext in gndiges Schwarz taucht. <F1> ffnet die ausfhrliche Hilfe.

07: Blaster Master Pascal

Sobald die Datei bbcwdemo.exe komplett heruntergeladen ist, starten Sie


sie und klicken sich souvern durch den unkomplizierten Installer. Ist der
Kopiervorgang abgeschlossen, finden Sie den Editor im Startmen unter

Reiseziel:
Ausrstung:
Kosten:
Anreise:

Start | Programme | BBC BASIC for Windows | BBC BASIC


for Windows.

Bemerkungen:

Die Speedbuttonleiste des Editors ist etwas berdimensioniert und erweckt


den Eindruck, man habe ein Softwareprodukt fr Kinder, die mit der Maus
noch nicht so gut zielen knnen, vor sich. Doch davon lassen wir uns nicht
ablenken. Unbeirrt geben wir die folgenden Zeilen ein:
--------------------------- *schnipp* ----------------------------01: REM BBC BASIC version of 99 Bottles of beer (Bottles.bbc)
02: REM Philipp Winterberg, http://www.winterbergs.de
03:
04: FOR b=99 TO 1 STEP -1
PRINT 'b;, " bottle(s) of beer on the wall,"
05:
PRINT b;,, " bottle(s) of beer."
06:
PRINT ,,,, "Take one down, pass it around,"
07:
PRINT b-1; " bottle(s) of beer on the wall."
08:

21

Blaster Master Pascal; 2000; 0,2MB; Interpreter


DOS
Gratis; Freeware
http://www.programmersheaven.com/zone24/cat351/168
88.htm
Ein kleines Abenteuer! Keine IDE, kein Editor,
Blaster Master Pascal bietet lediglich eine sehr
basale Interpreterkonsole +++ It's almost a mix
of the best of both C and Pascal (README.TXT)

Entpacken Sie bpc.zip. Es werden zwei Unterverzeichnisse erzeugt: BP


und PAS. Im Unterverzeichnis BP finden Sie die Datei BM.SRC. ffnen Sie
diese in einem Texteditor. In der ersten Zeile finden Sie den Eintrag
..\bm.bpc. Lassen Sie diese Zeile unangetastet. Ersetzen Sie aber die
Zeile defs.pas durch Bottles.pas und lschen die Zeile mit dem
Inhalt main.pas. Speichern Sie danach die Datei und schlieen Sie sie.
Jetzt legen Sie im Unterverzeichnis BP eine neue Datei mit dem Namen
Bottles.pas an. ffnen Sie diese Datei in einem Texteditor und geben Sie
folgende Zeilen ein:

22

--------------------------- *schnipp* ----------------------------01: // Blaster Master Pascal version of 99 Bottles of beer


(Bottles.pas)
02: // Philipp Winterberg, http://www.winterbergs.de
03:
04: entity x; .float b; Function Spawn (): entity; #2;
05: Procedure WriteLn (...); #254;
06:
07: Procedure Bottles ();
08: Begin
local entity h; h:= Spawn (); x:= h; x.b:= 99;
09:
While (x.b > 0) Do
10:
11:
Begin
WriteLn('%f bottle(s) of beer on the wall,', x.b);
12:
WriteLn('%f bottle(s) of beer.', x.b);
13:
14:
WriteLn('Take one down, pass it around,');
x.b:= x.b - 1;
15:
WriteLn('%f bottle(s) of beer on the wall.\n', x.b);
16:
17:
End;
18: End;
--------------------------- *schnapp* -----------------------------

Speichern Sie die Datei. Doppelklicken Sie im Explorer auf die Datei
BPC.EXE. Unser Programm wird nun in eine fr den Interpreter verstndliche Form gebracht und in der Datei BM.BPC im Blaster Master Pascal
Hauptverzeichnis abgelegt. Davon sehen Sie allenfalls ein kurzes Aufblitzen
einer DOS-Box, aber das ist in Ordnung. Richtig interessant wird es jetzt:
Wechseln Sie in das Hauptverzeichnis und starten Sie das Programm
EXEC.EXE per Doppelklick. In einem DOS-Fenster sehen Sie das Men
der Blaster Master Pascal Konsole. Geben Sie func_list <Enter>
ein, um eine Liste der verfgbaren Funktionen angezeigt zu bekommen.
Das Programm meldet: Available Functions: Bottles();.
Super! Mit dem Befehl exec bottles <Enter> fhren Sie die Funktion aus: [...] 0.000 bottle(s) of beer on the wall.
Schlieen Sie die Konsole mit dem Befehl quit <Enter> und atmen
Sie tief durch. In der Datei README.TXT finden Sie noch einige
Anmerkungen des Blaster Master Pascal Autors, die aber nicht abschlieend erhellend sind. Verweilen Sie daher nur experimentierend an
diesem Reiseziel, wenn Ihre Frustrationstoleranz bermig stark ausgeprgt ist. Und sagen Sie spter nicht, Sie seien nicht gewarnt worden!

23

08: bwBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

bwBasic 1.10; 1992; 0,1MB; Interpreter


DOS
Gratis; Freeware
http://www.programmersheaven.com/zone6/cat700/1591
8.htm
bwBasic steht fr Bywater Basic

Bywater Basic wurde so die Dokumentation ursprnglich im Jahr 1982


entwickelt; von der Gromutter des Mannes, der die Version 1.10 erstellte,
obwohl er Historiker, nicht Programmierer, ist. Er fand den Quelltext im
Nachlass, berarbeitete ihn leicht und verffentlichte bwBasic 1992.
Eine Installation ist nicht erforderlich: Entpacken Sie alle Dateien aus dem
frisch heruntergeladenen Paket BWB110E.ZIP in ein beliebiges Verzeichnis und starten Sie BWBASIC.EXE.
Sie befinden sich nun in der bwBasic Shell und knnen am bwBASIC:Prompt einzelne Programmzeilen oder Kommandos eingeben. Zunchst
tippen Sie die folgenden Zeilen, jeweils gefolgt von <Enter>:
--------------------------- *schnipp* ----------------------------10 rem Bywater Basic version of 99 Bottles of beer (Bottles.bas)
20 rem Philipp Winterberg, http://www.winterbergs.de
30
40 for b=99 to 1 step -1
50
print str$(b) + " bottle(s) of beer on the wall,"
60
print str$(b) + " bottle(s) of beer."
70
print "Take one down, pass it around,"
80
print str$(b-1) + " bottle(s) of beer on the wall."
+ chr$(13) + chr$(10)
09: 90 next b
10: 99 end

01:
02:
03:
04:
05:
06:
07:
08:

--------------------------- *schnapp* -----------------------------

Unser Programm befindet sich jetzt im Speicher und ist bereit, augenblicklich ausgefhrt zu werden. Wir starten die Ausgabe des Songtextes mit dem
Befehl run <Enter>.
In der Datei BWBASIC.DOC erlutert der Autor von Bywater Basic einige
Besonderheiten, gibt Tipps und schildert die auergewhnliche Entstehungsgeschichte des Programms etwas ausfhrlicher. Spannend.

24

09: C-Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

C-- FINAL; 1996; 0,6MB; Compiler


DOS
Gratis; Greenware
http://www.cs.utexas.edu/users/tbone/c-Auch als Sphinx C-- bekannt +++ its sort of
like C and kinda like assembly (C--INFO.DOC)

C-- ist Greenware. Was ist Greenware? Der Autor fordert, dass Anwender
von C-- jeden Tag einen kleinen Beitrag zum Umweltschutz leisten: Papier
und Flaschen recyclen, Greenpeace untersttzen, ffentliche Verkehrsmittel benutzen etc. (siehe README.DOC). Machen wir. Gerne.
Entzippen Sie c--final.zip in ein Verzeichnis Ihrer Wahl. Starten Sie
hiernach WB.COM, die C-- Work Bench. Herrlich: Der Autor beweist ein
feineres Gefhl fr gelungene Farbkombinationen als z.B. die Schpfer
von BBC BASIC (siehe Reiseziel 06). Die Work Bench ist stimmigen grn
und gelbtnen gehalten. Hier fhlen wir uns wohl, ffnen mit <Shift>
<F3> eine neue Datei und geben unser Programm ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

/* C-- version of 99 Bottles of beer (Bottles.c--) */


/* Philipp Winterberg, http://www.winterbergs.de
*/
? include "WRITE.H--"
int b;
main ()
{
b = 99;
do {
WRITEINT(b);
WRITESTR(" bottle(s) of beer on the wall,\n");
WRITEINT(b);
WRITESTR(" bottle(s) of beer.\n");
WRITESTR("Take one down, pass it around,\n");
b--;
WRITEINT(b);
WRITESTR(" bottle(s) of beer on the wall.\n\n");
} while (b > 0);
}

beantworten wir mit Yes. COMPILING FINISHED. Errors: 0


Lines: 20 sagt der C-- Compiler. Super! Mikroskopische 342 Bytes ist
die von ihm erstellte Datei gro. Das verwundert umso mehr, als der
Quelltext 572 Bytes umfasst. BOTTLES.COM sollten wir als Reiseandenken unbedingt mitnehmen, vielleicht sogar an Freunde verschenken. Aber
zunchst starten wir das gute Stck mit <F5>. Luft!
Genieen Sie jetzt unbedingt noch einige Zeit die angenehme Atmosphre
von Sphinx C--! Lesen Sie die mit <SHIFT><F1> aufrufbare Hilfe, sehen
Sie sich um, programmieren Sie, freuen Sie sich ber das gelungene User
Interface! Und dann bringen Sie das Programm zu Ihren Freunden und Ihr
Altpapier zum Container.

10: Chipmunk Basic


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Chipmunk Basic 3.5.9; 2004; 0,1MB; Interpreter


Windows
Gratis; Freeware
http://www.nicholson.com/rhn/basic/#5
BUGS: Many. Perhaps competitive with Central American rain forests. (BASIC-MANUAL.TXT)

Nach dem Entpacken der vier Dateien, die im Paket w32cbas359b3.zip


enthalten sind, starten wir unverzglich basicw.exe. Eine Installation
entfllt. Zeile fr Zeile geben wir jeweils gefolgt von <Enter> folgendes Programm ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:

#
#
1
2
3
4
5
6
7

Chipmunk Basic version of 99 Bottles of beer (Bottles.bas)


Philipp Winterberg, http://www.winterbergs.de
FOR b=99 TO 1 STEP -1
? b;" bottle(s) of beer on the wall,"
? b;" bottle(s) of beer."
? "Take one down, pass it around,"
? b-1;" bottle(s) of beer on the wall." : ? " "
NEXT

--------------------------- *schnapp* -----------------------------

--------------------------- *schnapp* -----------------------------

Schon fast am Ziel. Mit <Shift><F5> starten wir den Compiler, die sich
ffnende Dialogbox mit der Frage, ob wir die Datei speichern mchten,

Schon am Ziel? Aber sicher: Mit dem Befehl run <Enter> starten wir
die Ausfhrung unseres kleinen Programmes.

25

26

Anschlieend knnen Sie im Manual (BASIC-MANUAL.TXT) schmkern


oder die FAQ in der Datei README.TXT lesen.

11: COCOA
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

COCOA; 1997; 0,0MB; Interpreter


Windows
Gratis; Freeware
http://www.mcmanis.com/~cmcmanis/java/javaworld/ex
amples/BASIC.html
COCOA ist ein simpler BASIC Interpreter in Form
eines Java Applets

Es ist kein Download erforderlich. Prima. Reisen wir also mit Ihrem
Browser zur oben angegebenen COCOA-URL und folgen den im
COCOA-Quelltext-Kommentar enthaltenen Anweisungen:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:

'
'
'
'
'

COCOA version of 99 Bottles of beer (Bottles.cocoa)


Philipp Winterberg, http://www.winterbergs.de

How to use:
1. Go to http://www.mcmanis.com/~cmcmanis/java
/javaworld/examples/BASIC.html
06: ' 2. Copy only the code line below
07: ' 3. Paste it into COCOA window
08: ' 4. Press enter and enjoy ;)
09:
10: for b=99 to 1 step -1:print b;" bottle(s) of beer on the
wall,":print b;" bottle(s) of beer.":print "Take one down,
pass it around,":print (b-1);" bottle(s) of beer
on the wall.":print " ":next b
--------------------------- *schnapp* -----------------------------

12: ComWic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ComWic 3.2; 2002; 0,5MB; Interpreter


DOS
Gratis; Freeware
http://qb4all.com/files/download.asp?fileid=372
Niemand wei, wofr ComWic steht +++ 500 (!) Variablen statt lcherliche 30 [...] Ca. 100 (!) Befehle (readme.txt)

Was bedeutet ComWic? Wir entpacken Comwic.zip und schauen in der


Datei readme.txt nach. Keine Antwort. Widmen wir uns zunchst unserem
Programm: Da ComWic sehr spartanisch ausgelegt ist, empfiehlt es sich,
folgende Programmzeilen im Texteditor in eine frisch angelegte Datei mit
dem Namen bottles.cwx einzugeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

> ComWic version of 99 Bottles of beer (Bottles.cwx)


> Philipp Winterberg, http://www.winterbergs.de
>
CLS
MOV 1,99
*LOOP
ECHO 1
ECHO
> bottle(s) of beer on the wall,
ECHO 1
ECHO
> bottle(s) of beer.
> Take one down, pass it around,
SUB 1,1
ECHO 1
ECHO
> bottle(s) of beer on the wall.
IF NUM,$1,<,1,END WICHTELCHEN
>
GOTO LOOP

--------------------------- *schnapp* -----------------------------

Speichern Sie die Datei. Per Drag & Drop ziehen wir bottles.cwx nun
im Explorer ber die Datei COMWIC.EXE und lassen sie fallen. Der Interpreter fhrt unser Programm sogleich aus. Da unser PC schnell ist, sehen
wir nicht viel davon, denn Windows schliet das Fenster nach der Ausfhrung sofort wieder. Macht aber nichts.

27

28

Sollten Sie sehr daran interessiert sein, die Ausgaben lnger zu betrachten,
knnen Sie eine DOS-Box ffnen und dort den Interpreter mit dem Aufruf
comwic bottles.cwx <Enter> starten. Aber dann sollten Sie sptestens abreisen. Der ComWic Interpreter ist instabil und buggy, die Dateien Kurs.txt und readme.txt sind voller Fehler. Dort beschriebene
Befehle funktionieren nicht so wie erklrt. Entsetzlich. Schnell weg! Was
ComWic bedeutet ist uns inzwischen auch vllig egal.

13: Curl
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Curl 3.0.1; 2004; 6,0MB; Interpreter


Windows
Gratis; Freeware
http://www.curl.com/html
The Surge Runtime Environment (RTE) enables your
Web browser to display applets written in the
Curl Language. (load-about-curl.curl)

Ein entspannter Spaziergang: Wir starten den Curl Installer Surge-3-01-English-Full-Installer-13.exe, sagen einige Male Ja und

Danke und schreiben nebenbei im Texteditor unser Programm:


--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:

|| Curl version of 99 Bottles of beer (Bottles.curl)


|| Philipp Winterberg, http://www.winterbergs.de
{curl 3.0 applet}
{value
let b:int=99
let song:VBox={VBox}
{while b > 0 do
{song.add b & " bottle(s) of beer on the wall,"}
{song.add b & " bottle(s) of beer."}
{song.add "Take one down, pass it around,"}
set b = b - 1
{song.add b & " bottle(s) of beer on the wall."}
}
song
}

--------------------------- *schnapp* -----------------------------

Das Programm sichern wir in einer neuen Textdatei mit dem Namen
bottels.curl. Jetzt gengt ein Doppelklick auf diese Datei, um die Aus-

29

fhrung des Programms zu starten. Es ffnet sich ein Browserfenster und


der Songtext erscheint. Kindergarten. :-)

14: D
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

D 0.82; 2004; 5,3MB; Compiler


DOS
Gratis; Freeware
http://www.digitalmars.com/d
Auch bekannt unter dem Namen Digital Mars D +++
"Great, just what I need.. another D in programming." (intro.html)

Wir laden zunchst den D Compiler (dmd.zip), sowie den D Linker und
die Utilities (dmc.zip) herunter und entpacken beide Pakete in das gleiche
Verzeichnis. D ist nun bereit, eine Installation ist nicht erforderlich.
Unser Programm schreiben wir mit einem Texteditor in eine neue Datei
mit dem Namen bottles.d und speichern diese im bereits bestehenden
Unterverzeichnis dmd\bin.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

// D version of 99 Bottles of beer (Bottles.d)


// Philipp Winterberg, http://www.winterbergs.de
int main()
{
for (int b = 99; b > 0; b--)
{
printf("%d bottle(s) of beer on the wall,\n", b);
printf("%d bottle(s) of beer.\n", b);
printf("Take one down, pass it around,\n");
printf("%d bottle(s) of beer on the wall.\n\n", (b-1));
}
return 0;
}

--------------------------- *schnapp* -----------------------------

Jetzt ffnen wir eine DOS-Box (z.B. ber Start | Ausfhren...


cmd <Enter>) und wechseln in das Unterverzeichnis dmd\bin des
Verzeichnisses, in das wir D entpackten. Dort erwartet uns bereits der D
Compiler. Mit dem Aufruf dmd bottles.d <Enter> starten wir ihn.

30

Er murmelt etwas erschreckend Unverstndliches wie D:\dmd\bin\..


\..\dm\bin\link.exe bottles,,,user32+kernel32/noi; und

schweigt dann. Daran, dass eine neue Datei mit dem Namen bottles.exe im
Verzeichnis liegt, sehen wir, dass der Vorgang scheinbar trotz der kryptischen Meldung erfolgreich war. Wir berprfen dies, indem wir unser Programm mit dem Befehl bottles <Enter> starten. Prchtig!
Jetzt sind Sie an der Reihe: Lesen Sie die Dokumentation und zaubern Sie
ein wenig. Programmieren Sie z.B. eine Version von 99 Bottles of Beer,
bei der hexadezimal gezhlt wird. Kleiner Tipp zum Einstieg: Hexadezimal
ist 99 63. Und los!

11:
12:

b--;
screenput
screen;
13:
doevents;
14: loop

&

"

bottle(s)

of

beer

on

the

wall.";

screen;

--------------------------- *schnapp* -----------------------------

<F5> startet unser Programm. Der Compiler erzeugt nebenbei automatisch

die Datei D++APP1.EXE und meldet zufrieden: D++ Finished. Found


0 error(s). Compile Time: 7747812 milliseconds. Das
die Compile Time stimmt, ist allerdings zweifelhaft.
Eine Variationsmglichkeit: Whlen Sie Project | Use DOS Mode im
Men, so wird eine DOS-Executable generiert. Der Menpunkt Help |
Online Help entfhrt Sie ins Internet zur ausfhrlichen D++ Dokumentation. Gnnen Sie sich eine Weile, D++ macht Spa.

15: D++
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

D++ 4.1; 2004; 0,1MB; Compiler


Windows
Gratis; Freeware
http://www.pagemac.com/dpp/download.php
Falls D++ Fehlermeldungen ausgibt, laden Sie von
der D++ Downloadseite die in der Fehlermeldung genannte Datei herunter (z.B. mswinsck.ocx) und
speichern Sie diese im Windows Systemverzeichnis

D++ luft ohne Installation. In weniger als zehn Sekunden sind wir am
Ziel: dpp41_binaries.zip entpacken und hiernach schnell D++ SDE
.exe starten... Herzlich willkommen in der D++ Simple Development
Enviroment.
In der ansprechend gestalteten Entwicklungsumgebung tippen wir die folgenden Zeilen:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

31

' D++ version of 99 Bottles of beer (Bottles.dpp)


' Philipp Winterberg, http://www.winterbergs.de
title "99 Bottles of Beer";
newvar b = 99;

16: DarkBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

DarkBasic 1.13; 2002; 4,9MB; Compiler


Windows
$49,99; Shareware
http://darkbasic.thegamecreators.com/?f=trial
Diese Version ist auf 30 Tage bzw. 60 Starts beschrnkt, doch das strt uns kein Stck

DarkBasic macht es uns fast zu leicht: Nach dem Download und Start von
dbdemo113.exe fhrt uns die Installroutine direkt bis zum Ziel Lauch
DarkBasic. Danke.
DarkBasic ist zur Spieleprogrammierung gedacht und dazu passend ist auch
das GUI: An der Seite rankt sich sinnlos aber hbsch ein Kabel um den
dreidimensionalen Scrollbalken. Man fhlt sich leicht an eine Raumschiffbrcke erinnert. Die DarkBasic Einleitung, die sogleich angezeigt wird, lesen wir vielleicht spter. Zunchst klicken wir oben links auf Edit und
geben unser Programm ein:
--------------------------- *schnipp* -----------------------------

do until b = 0;
screenput b & " bottle(s) of beer on the wall,"; screen;
screenput b & " bottle(s) of beer."; screen;
screenput "Take one down, pass it around,"; screen;

01: rem DarkBasic version of 99 Bottles of beer (Bottles.dba)


02: rem Philipp Winterberg, http://www.winterbergs.de
03:

32

04: a$=" bottle(s) of beer" : c$=" on the wall"


05: for b=99 to 1 step -1
print b, a$, c$, ","
06:
print b, a$, "."
07:
print "Take one down, pass it around,"
08:
print b-1, a$, c$, "."
09:
wait (1000) : cls rgb(0,0,0)
10:
11: next b : end

03:
04:
05:
06:
07:
08:
09:

--------------------------- *schnapp* ----------------------------10:

Mit <F5> starten wir das Programm. Gemchlich baut sich der Songtext
Strophe fr Strophe auf. Das brechen wir mit <ESC> und <F12> ab, denn
wir haben noch etwas vor: Mit <F6> starten wir den Compiler, der eine
.EXE Datei erzeugt. Im sich ffnenden Dialog geben wir bottles als
Dateinamen ein und klicken auf Build. Die jetzt von DarkBasic generierte Datei ist monstrse 1.573.517 Bytes gro. Himmel! Das geht doch
auch mit 342 Bytes (siehe Reise 09)...
Lesen Sie nun die umfangreiche Hilfe, die Tutorials und versuchen Sie sich
ein wenig in 3D- und Spieleprogrammierung schlielich haben Sie noch
59 DarkBasic Programmstarts brig.

11:
12:
13:
14:

program Bottles;
uses windows, sysutils;
var b: integer;
begin
for b:= 99 downto 1 do
if MessageBox(0, Pchar(IntToStr(b) + ' bottle(s) of beer
on the wall, ' + #13#10 +
IntToStr(b) + ' bottle(s) of beer.'
+ #13#10#13#10 +
'Take one down, pass it around,'
+ #13#10 +
IntToStr(b-1) + ' bottle(s) of beer
on the wall.' + #13#10),
PChar('99 Bottles of Beer'), 65) = 2
then exit
end.

--------------------------- *schnapp* -----------------------------

18: Dialect
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

17: Delphi
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Delphi 2005 Personal; Compiler


Windows
Gratis; Freeware
http://www.borland.com/downloads/download_delphi.h
tml
-

Dies ist ein richtig dicker Mainstream-Fisch der Programmiersprachenwelt.


Support, How-Tos, Foren, Tipps und Tricks-Listen etc. finden Sie auf
Millionen Internetseiten. Keine echte Herausforderung. Deshalb: Ab hier
gehen Sie ganz allein!
--------------------------- *schnipp* ----------------------------01: // *short* Delphi version of 99 Bottles of beer (Bottles.dpr)
02: // Philipp Winterberg, http://www.winterbergs.de

33

Dialect
DOS
Gratis; Freeware
Verschollen
-

Dies ist ein ganz ganz ganz winziger Off-Mainstream-Fisch der Programmiersprachenwelt. Support, How-Tos, Foren, Tipps und Tricks-Listen
etc. finden Sie auf keiner einzigen Internetseite. Die Sprache scheint komplett verschollen. Eine echte Herausforderung. Deshalb: Ab hier forschen
Sie ganz allein!
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

# Dialect version of 99 Bottles of beer (Bottles.d)


# Philipp Winterberg, http://www.winterbergs.de
Import "outputs"
Output = outputs.screen()
Output.startDoc("99 Bottles of Beer")
for b = 1 to 99
print (100-b), " bottle(s) of beer on the wall,", cr
print (100-b), " bottle(s) of beer.", cr
print "Take one down, pass it around,", cr

34

11:
print (99-b), " bottle(s) of beer on the wall.", cr, cr
12: endfor
13: Output.EndDoc()
--------------------------- *schnapp* -----------------------------

20: DPas
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

19: DiNGS Game Basic


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

DiNGS Game Basic 5.10522; 2001; 6,4MB; Compiler


Windows
40,00 ; Shareware
http://www.dream-d-sign.de/DINGS/Infos/infos.html
-

DPas 1.7; 2000; 0,2MB; Compiler


DOS
Gratis; Freeware
http://www.geocities.com/SiliconValley/Bay/9159/dp
as_de.html
Dpas 1.7 wird in der Dokumentation stellenweise
als Alpha-, dann wieder als Beta-Version bezeichnet, erwarten Sie also keine Wunder

Wir entpacken die Datei dpas17.zip. Eine Installation ist nicht ntig. Im
Unterverzeichnis \BIN erstellen wir mit einem Texteditor eine Datei mit
unserem Quelltext und speichern sie unter dem Namen bottles.pas ab.
--------------------------- *schnipp* -----------------------------

Die langen Beschreibungen sind nicht ntig? Sie verstehen das alles auch
so? Nun denn: Wir knnen auch kurz: dings_e.exe  Sagen Sie Ja zur
program group  Start | Programme | DiNGS | Editor  Demo 
OK. <Strg><N> fr eine neue Datei. Unser Programm freut sich ber
dezentes Syntax Highlighting. <Strg><S> bottles.src, <F8> Create, <F5>
run. Owei, hngt das System? Warum kann man den Mauscursor nicht
mehr bewegen? Keine Panik. Mit jedem Mausklick unsererseits springt der
Songtext eine Strophe weiter. Mit <Esc> kann man das Programm beenden.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

// DiNGS Game Basic version of 99 Bottles of beer (Bottles.src)


// Philipp Winterberg, http://www.winterbergs.de
BLACKSCREEN
FOR b=99 TO 1 STEP -1
PRINT b, 23, 23; PRINT "
23
PRINT b, 23, 63; PRINT "
PRINT "Take one down, pass
PRINT b-1, 23, 143; PRINT
23, 143
SHOWSCREEN; MOUSEWAIT
NEXT; END

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

{ DPas version of 99 Bottles of beer (Bottles.pas) }


{ Philipp Winterberg, http://www.winterbergs.de
}
program Bottles;
uses crt32;
var b: byte = 99;
begin
while b > 0 do
begin
writeln(b, ' bottle(s) of beer on the wall, ');
writeln(b, ' bottle(s) of beer.');
writeln('Take one down, pass it around,'); dec(b);
writeln(b, ' bottle(s) of beer on the wall.');
writeln(' ');
end;
end.

--------------------------- *schnapp* ----------------------------bottle(s) of beer on the wall,", 23,


bottle(s) of beer.", 23, 63
it around,", 23, 103
"
bottle(s) of beer on the wall.",

Kommandozeile: dpas bottles <Enter>  BOTTLES.EXE; wird generiert


 Wieder Kommandozeile: bottles <Enter>  Programmausfhrung!
Roter Songtext. Yeah! Glckwunsch!

--------------------------- *schnapp* -----------------------------

35

36

21: EasyBatch
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

EasyBatch 4.3 XXL; 2003; 4,0MB; Interpreter


Windows
29,90; Shareware
http://www.easybatch.de
28 Tage Evaluation +++

Wir starten die Installation durch Ausfhren der Datei esb4sw.exe. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.). Achtung: die
Installationsroutine versucht, die Dokumentation und Beispiele aus dem
Internet herunterzuladen. Entscheiden Sie selbst, ob Ihnen das genehm ist.
Unter Start | Programme | EasyBatch XXL | EasyBatch XXL klicken wir
erst auf EasyBatch testen und dann im nchsten Dialog den Neu
Button. Ersetzen Sie das von EasyBatch gelieferte Programmgerst durch
unseren Code:

| Ausfhren (oder blauer Pfeil Button in der Leiste). Im Speichern Dialog


auf Nein klicken;
In einem mittelschnen Dialogfenster wird nun der Songtext Stck fr
Stck angezeigt. Viel Spa beim Mitsingen.

22: eC
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

' EasyBatch version of 99 Bottles of beer (Bottles.wsb)


' Philipp Winterberg, http://www.winterbergs.de
'
GLOBALPROZEDUR(main)
DIM(b;99)
CONST(@A;STRCAT(" bottle";NUM2CHAR(40);"s";NUM2CHAR
(41);" of beer"))
CONST(@C;STRCAT(@A;" on the wall"))
CONST(@D;STRCAT(NUM2CHAR(13);NUM2CHAR(10)))
CONST(@E;"Take one down, pass it around,")
CONST(@K;",")
CONST(@P;".")
CONST(@T;"99 Bottles of Beer")
DOWHILE(%b%;>;0)
DISPLAYSHOW(@T;STRCAT(CSTR(%b%);@C;@K;@D;
CSTR(%b%);@A;@P;@D))
WAIT(1)
DEC(b)
DISPLAYSHOW(@T;STRCAT(@E;@D;CSTR(%b%);
@C;@P;@D))
WAIT(1)
LOOP()
DISPLAYCLOSE()
ENDSUB()

--------------------------- *schnapp* -----------------------------

Sollten einige Zeilen rot gefrbt sein, bedeutet dies, das EasyBatch diese
Zeile nicht versteht. Vermutlich haben Sie sich vertippt. Men: Ausfhren

37

eC 1.14; 1996; 0,6MB; Interpreter


DOS/Windows
Gratis; Freeware
http://sunset.backbone.olemiss.edu/~bobcook/eC
The eC language grew out of a practical need for
a
general,
efficiently
implemented,
systems
programming language that could be used for
education from the high-school to graduate level
(EC.DOC)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


gold5.zip. Anschlieend erzeugen wir mit einem beliebigen Texteditor eine
Datei, fllen sie mit unserem hbschen Quelltext und speichern sie unter
dem Namen Bottles.ec. Jetzt starten wir C.EXE. Am Prompt in> geben
wir bottles.ec <Enter> ein.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:

// eC version of 99 Bottles of beer (Bottles.ec)


// Philipp Winterberg, http://www.winterbergs.de
#include <iostream.h>
#include <iomanip.h>
unsigned int b;
void main () {
for (b = 99; b > 0; b--) {
cout<<setw(2)<<b<<" bottle(s) of beer on
the wall,\n"<<b;
cout<<" bottle(s) of beer.\nTake one down,
pass it around,\n";
cout<<setw(2)<<(b-1)<<" bottle(s) of
beer on the wall.\n\n";
};
};

38

--------------------------- *schnapp* -----------------------------

Es wird daraufhin unter anderem + bottle.OBJ 107 ausgegeben und eine


Datei bottle.OBJ generiert. Danke. Weiter: Wir fhren R.EXE aus. Die
Frage Trace y/n? beantworten wir unwillig mit n <Enter>. Am Prompt
in> geben wir souvern bottle.obj <Enter> ein. Der Songtext wird
augenblicklich ausgegeben. Schn. Weitere Infos zur Sprache in der Datei
EC.DOC.

23: elastiC
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

elastiC 0.0.14; 2000; 0,2MB; Interpreter


DOS
Gratis; Freeware
http://www.elasticworld.org
elastiC is a portable high-level object-oriented
interpreted
language
with
a
C
like
syntax
(elasticworld.org)

Vorfreudig entpacken wir die frisch heruntergeladene ZIP-Datei


elastic.zip und erzeugen mit einem reisetauglichen Texteditor eine Datei,
fllen sie mit unserem Quelltext und speichern sie unter dem Namen
bottles.ec. Diese Datei ziehen wir nun im Explorer per Drag & Drop auf
ec.exe im unterverzeichnis \BIN fertig.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:

// elastiC version of 99 Bottles of beer (Bottles.ec)


// Philipp Winterberg, http://www.winterbergs.de
package bottles;
import basic;

24: Ethos Basic


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Ethos Basic 1.3; 6,8MB; Compiler


Windows
24.99; Shareware
http://www.ethosbasic.com/phome.htm
5 Trials

Wir starten die Installation durch Ausfhren der Datei ethos_setup.exe.


Bis zum Abschluss durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.) und
Start | Programme | ethosBASIC | ethosBASIC Editor starten. Zunchst
sucht ethos Basic nach Updates, dann verkndet es, nicht registriert zu sein
und nur 5 Starts zuzulassen, bevor es sich selbst deaktiviert. Soll es doch.
Die im nchsten Dialog verlangten Registrierinformationen besitzen wir
nicht, also Cancel. im Fenster mit dem Titel Untitled Program geben
wir in grner Schrift auf schwarzem Grund folgenden Code ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:

rem 'Ethos Basic version of 99 Bottles of beer (Bottles.eto)'


rem 'Philipp Winterberg, www.winterbergs.de'
for b =
output
output
output
output
next

99 to 1 step -1
b;" bottle(s) of beer on the wall,"
b;" bottle(s) of beer."
"Take one down, pass it around,"
b-1;" bottle(s) of beer on the wall." : output " "

--------------------------- *schnapp* -----------------------------

Okay, zugegeben: An einigen Stellen ist der eingegebene Code auch rot,
wei, trkis oder hellgrn. macht aber nix. Mit <F10> starten wir unser
Programm: 0,000000 bottle(s) of beer on the wall. Da ist wirklich
gar kein Bier mehr.

local b = 99;
while (b > 0)
{
basic.print(b, " bottle(s) of beer on the wall,\n",
b, " bottle(s) of beer.\n");
b = b - 1;
basic.print("Take one down, pass it around,\n",
b, " bottle(s) of beer on the wall.\n\n");
}

--------------------------- *schnapp* -----------------------------

39

40

25: Euphoria
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

26: FirstBasic/PowerBasic

Euphoria 2.4; 2003; 0,9MB; Interpreter


DOS/Windows
Gratis; Public Domain
http://www.rapideuphoria.com
Simple, flexible, and easy to learn.
Outperforms all popular interpreted
languages. (FILE_ID.DIZ)

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

FirstBasic 1.0; 1996; 0,2MB; Compiler


DOS
$25,00; Shareware
http://www.powerbasic.com/files/pub/pbdos
bzw. http://www.powerbasic.com
A true machine code Basic compiler. Stop using
the QBasic interpreter and step up to the speed of
compiled
code.
Leave
behind
64k
string
limitations and feel the "Power" of built-in Array
Sorting & Searching (FILE_ID.DIZ) +++ 30 Tage
Evaluation

Wir starten zunchst wie so oft die Installation durch Ausfhren der
Datei e24setup.exe und durchklicken den Euphoria-Installationsprozess
(Okay, Ja, Weiter, Danke, Fertig etc.). Sodann erzeugen wir mit einem Texteditor eine frische Datei, fllen sie mit unserem kleinen Quelltext und
speichern sie unter dem Namen bottles.ex im verzeichnis
C:\EUPHORIA\BIN jetzt nur noch diese Datei im Windows-Explorer galant
doppelklicken. Bravo.

Erwartungsvoll entpacken wir die frisch heruntergeladene FirstBasic


Archiv-Datei firstbas.zip und fhren FIRSTBAS.EXE aus. Huch, sind wir
hier bei SuperEASY (vgl. Reiseziel 68)? Oder in Bayern? Alles ist
wei/blau. Wir geben unser Programm in gelb ein:

--------------------------- *schnipp* -----------------------------

--------------------------- *schnipp* -----------------------------

01:
02:
03:
04:
05:
06:
07:
08:
09:

-- Euphoria version of 99 Bottles of beer (Bottles.ex)


-- Philipp Winterberg, http://www.winterbergs.de
for b = 1 to 99 do
printf(1, "%2d bottle(s) of
printf(1, "%2d bottle(s) of
puts(1, "Take one down, pass
printf(1, "%2d bottle(s) of
end for

beer on the wall,\n", 100-b)


beer.\n", 100-b)
it around,\n")
beer on the wall.\n\n", 99-b)

--------------------------- *schnapp* -----------------------------

Euphoria ist schnell. Ob aber der euphorische Spruch, der oben bei den
Bemerkungen zitiert ist, tatschlich so zutrifft, bleibt fraglich.

01: ' FirstBasic/PowerBasic version of 99 Bottles of beer


(Bottles.bas)
02: ' Philipp Winterberg, http://www.winterbergs.de
03:
04: KEY OFF : COLOR 7, 0 : CLS
05: FOR b% = 99 TO 1 STEP -1
06:
PRINT STR$(b%) + " bottle(s) of beer on the wall,"
07:
PRINT STR$(b%) + " bottle(s) of beer."
PRINT "Take one down, pass it around,"
08:
PRINT STR$(b%-1) + " bottle(s) of beer on the wall."
09:
PRINT " "
10:
11: NEXT b%
12: END
--------------------------- *schnapp* -----------------------------

Mit <F9> starten wir es. Fertig. Eine .EXE Datei erzeugen wir, indem wir
zunchst mit <Alt><C> das Compile Men ffnen und dann die
Destination von Memory auf EXE file umstellen. Nun den Compiler
mit <Alt><F9> starten. NONAME.EXE wurde generiert. Nicht der schnste
Name, den man sich als Datei wnschen wrde. Nennen Sie sie lieber
99Bottles.exe oder FirstBasicBottles.exe oder BeerSong.exe oder

41

42

27: FranzBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

FranzBasic; 1989; 0,1MB; Interpreter


DOS
DM 99,00; Shareware
http://mitglied.lycos.de/movaxworldhq/basic_compil
er.htm
einer der leistungsfhigsten Basicbersetzer, die Sie am Markt finden werden
(LIESMICH.TXT)

Interessiert entpacken wir die soeben frisch heruntergeladene ZIP-Datei


franzbas.zip. FranzBasic spricht wie man es erwarten sollte deutsch,
gibt sich schwarz/blau und soll 99 DM kosten. Lustig. Wir starten
BASIC.EXE und geben unseren Code in wei ein, dann rufen wir den
Compiler mit <SHIFT><F1> auf. Das Programm starten? Mit <Shift><F2>.
Nichts gesehen? Output anzeigen mit <Shift><F4>; 0.000000 bottle(s)
of beer on the wall.. Null Komma nix. Alles klar.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

' FranzBasic version of 99 Bottles of beer (Bottles.bas)


' Philipp Winterberg, http://www.winterbergs.de
colour 0, 7 : mouse off : cls
for b = 1 to 99
print
print str$(100-b) + " bottle(s) of beer on the wall,"
print str$(100-b) + " bottle(s) of beer."
print "Take one down, pass it around,"
print str$(99-b) + " bottle(s) of beer on the wall."
endfor

--------------------------- *schnapp* -----------------------------

28: Free Pascal


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

43

Free Pascal 1.0.10; 2003; 26,8MB; Compiler


Windows
Gratis; Freeware
http://www.freepascal.org
a freeware 32-bit pascal compiler for Intel 80386
and compatibles as well as for Motorola 68020 and
compatibles (readme.txt)

Neugierig entpacken wir die frisch heruntergeladene Archiv-Datei mit dem


wenig klangvollen Namen w321010full.zip und starten die Installation
durch Ausfhren der Datei install.exe. Jetzt durchklicken (Okay, Ja,
Weiter, Danke, Fertig etc.) und anschlieend fp.exe im Verzeichnis
C:\pp\bin\win32 starten; Wow! ASCII Art. File | New whlen wir
wissend und geben ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

(* Free Pascal version of 99 Bottles of beer (Bottles.pp) *)


(* Philipp Winterberg, http://www.winterbergs.de
*)
program Bottles;
var b: byte;
begin
b:= 99;
while b > 0 do
begin
writeln(b, ' bottle(s) of beer on the wall, ');
writeln(b, ' bottle(s) of beer.');
writeln('Take one down, pass it around,'); dec(b);
writeln(b, ' bottle(s) of beer on the wall.' + #13#10)
end
end.

--------------------------- *schnapp* -----------------------------

Mit <F2> speichern wir das Programm, geben bottles als Dateinamen ein,
klicken den grnen Button OK und fhren es mit <Strg><F9> aus. Im
Hintergrund wurde bottles.exe erzeugt (53kb). Gut. Danke. Free Pascal
ist brigens beeindruckend verfgbar:
Free Pascal is currently available for the following platforms:
- DOS, via the DJ Delorie's GO32V2 Dos extenders
- Linux (i386 and m68k), ELF format
- OS/2 & DOS, via the EMX extender
- Win32 (Win32s, Win95/98/Me/XP/2000 and WinNT)
- Sun Solaris i386
- BeOS i386
- QNX i386
- FreeBSD i386
- NetBSD i386
- Commodore Amiga classic
More platforms will be supported in the future.

44

29: GABasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

30: GBasic

GABasic 0.30 Beta 2; 2000; 0,4MB; Compiler


Windows
Gratis; Freeware
http://mitglied.lycos.de/movaxworldhq/basic_compil
er.htm
Luft nicht unter Windows 98

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

GBasic 1.3b; 1997; Interpreter


DOS
Gratis; Freeware
http://mitglied.lycos.de/movaxworldhq/basic_compil
er.htm
A fast multimedia BASIC programming environment
(README.TXT)

Reiselustig entpacken wir die frisch heruntergeladene GABasic-Paket-Datei


gabasic.zip und starten Gb.exe. Nachdem wir File | New whlten und
unseren Quellcode eingaben, speichern wir ihn mit File | Save As unter
dem Namen bottles. Jetzt GABASIC.EXE doppelklicken. Bei Basic File:
bottles.bas <Enter> eingeben. Die folgenden Meldungen (ASM/EXE File)
besttigen wir jeweils mit <Enter>. Es wird die Datei Bottles.exe (13kb)
generiert, die meist leider nicht unter Windows XP luft. Schade.

Entspannt entpacken wir die frisch heruntergeladene Datei gbasic.zip.


Eine Installation ist nicht ntig. Hallo GBasic!
Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.b ab.
Kommandozeile: gbasic bottles.b  Das Programm luft: blaue
Schrift auf schwarzem Grund. Old-School Schriftart. O-ho.

--------------------------- *schnipp* -----------------------------

--------------------------- *schnipp* -----------------------------

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:

' GABasic version of 99 Bottles of beer (Bottles.bas)


' Philipp Winterberg, http://www.winterbergs.de
cls
for b = 99 to 1 step -1
temp = b - 1
print " "
print str$(b) + " bottle(s) of beer on the wall,"
print str$(b) + " bottle(s) of beer."
print "Take one down, pass it around,"
print str$(temp) + " bottle(s) of beer on the wall."
next
sleep

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

REM GBasic version of 99 Bottles of beer (Bottles.b)


REM Philipp Winterberg, http://www.winterbergs.de
color(255, 0) : screen 13
for b = 99 to 1 step -1 : print
print str$(b) + " bottle(s) of beer on the wall,"
print str$(b) + " bottle(s) of beer."
print "Take one down, pass it around,"
print str$(b-1) + " bottle(s) of beer on the wall."
next : wait_key

--------------------------- *schnapp* -----------------------------

--------------------------- *schnapp* -----------------------------

Eine kleine GABasic-Anleitung wartet in der Datei


vergeblich auf Sie.

gabasic.txt

vielleicht

31: GFA Basic


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

GFA Basic for Windows 4.38; 1995; 1,1MB; Compiler


Windows
Gratis; Freeware
http://www.baphead.freeserve.co.uk/download.html
-

Erwartungsvoll entpacken wir die frisch heruntergeladene Archiv-Datei


baswin_e.zip und starten die Installation durch Ausfhren der Datei
INSTALL.EXE. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).

45

46

Start | Programme | GFABasic | GFA Trial  OK zur About-Box 


Quelltext eingeben  <Alt><R> zum Ausfhren  wird in einem neuen
Fenster ausgegeben  Super!
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

// GFA Basic version of 99 Bottles of beer (Bottles.gfa)


// Philipp Winterberg, http://www.winterbergs.de
SCREEN 18
CLS
b := 99
WHILE b > 0
? b; " bottle(s) of beer on the wall,"
? b; " bottle(s) of beer."
? "Take one down, pass it around,"
b-? b; " bottle(s) of beer on the wall."
?
WEND

--------------------------- *schnapp* -----------------------------

32: GPLZ.easy
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

GPLZ.easy 1.4;
Windows; Python
Gratis; Freeware
http://p-nandq.com/humor/languages/gplz/gplz_easy.html
GPLZ steht fr The Great Python Language Zoo +++
Esoterische Programmiersprache

Da der GPLZ-Interpreter in Python geschrieben wurde, bentigen wir


zunchst eine aktuelle Version von http://www.python.org/download:
Python-2.3.3.exe. Starten Sie den Installer und klicken Sie sich durch.
Jetzt entpacken wir die GPLZ-Datei gplz.zip und erzeugen mit einem
Texteditor eine weitere Datei, fllen sie mit unserem Quelltext und
speichern sie unter dem Namen bottles.easy ab.
--------------------------- *schnipp* -----------------------------

04:
05:
06:
07:
08:
09:

f(x):<<x." bottle(s) of beer on the wall,"


g(x):<<x.<<" bottle(s) of beer."
h(x):<<"Take one down, pass it around,"
i(x):<<x-1.<<" bottle(s) of beer on the wall."
j(x):<<" "
do:b=99
while:b>0.f(b).g(b).h(b).i(b).j(i).b=b-1

--------------------------- *schnapp* -----------------------------

Kommandozeile: c:\python23\python

gplz.py bottles.easy

 Fertig!

33: HotTEA
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

HotTEA; 2002; 0,1MB; Interpreter


Plattformunabhngig
Gratis; Freeware
http://www.mbay.net/~cereus7/tryit.html
-

Ist HotTea im Bermuda-Dreieck? Es ist jedenfalls spurlos verschollen.


Wenn Sie mgen, suchen Sie und finden Sie die Sprache wieder. Vielleicht.
Hoffentlich. Viel Glck!
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

' HotTEA version of 99 Bottles of beer (Bottles.hot)


' See http://www.mbay.net/~cereus7/tryit.html
' Philipp Winterberg, http://www.winterbergs.de
a = " bottle(s) of beer"; c = "on the wall"; l = 200; t = 100
PenColor 255,255,255; TextColor 0,0,255
FOR x = 1 TO 99
DrawRect 100,0,300,600,FILLED
DrawText 100-x, l, t; DrawText a, l+15, t
DrawText c, l+80, t+15; DrawText ",", l+156, t+15
DrawText 100-x, l, t+30; DrawText a, l+15, t+30; DrawText
".", l+141, t+30
DrawText "Take one down,", l, t+45; DrawText "pass it around,
", l+80, t+60
DrawText 99-x, l, t+75; DrawText a, l+15, t+75
DrawText c, l+80, t+90; DrawText ".", l+156, t+90
NEXT x

--------------------------- *schnapp* -----------------------------

01: # GPLZ.easy version of 99 Bottles of beer (Bottles.easy)


02: # Philipp Winterberg, http://www.winterbergs.de
03:

47

48

34: HQ9+
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

HQ9+ 0.1; 0,1MB; Interpreter


Windows; Objective Caml
Gratis; Freeware
http://www.cliff.biffle.org/esoterica/hq9plus.html
Esoterische Programmiersprache

35: HTA
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Da der HQ9+-Interpreter in Objective Caml geschrieben wurde, bentigen


wir zunchst eine installierte, aktuelle Version dieser Sprache. Wir starten
die Installation durch Ausfhren der Datei ocaml-3.07pl2-win-msvc.exe.
Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Wir erzeugen danach mit einem Texteditor eine Datei, fllen sie mit
unserem Mini-Quelltext und speichern sie unter dem Namen bottles.hq9+
im Verzeichnis C:\Programme\Objective Caml\bin ab.
Der Interpreter erlaubt brigens offiziell keine Kommentare, meckert aber
nicht, wenn man den Kommentar hinter den letzten Befehl setzt:
--------------------------- *schnipp* ----------------------------01: 9
02: // HQ9+ version of 99 Bottles of beer (Bottles.hq9+)
03: // Philipp Winterberg, http://www.winterbergs.de
--------------------------- *schnapp* -----------------------------

Als letzte Vorbereitung kopieren wir nun die heruntergeladene


Interpreterdatei hq9plus.ml ebenfalls ins Unterverzeichnis \bin.
An der Kommandozeile kommandieren wir kryptisch dem Interpreter:
ocaml hq9plus.ml bottles.hq9+ Das funktioniert!
Die objektorientierte Nachfolgesprache ist HQ9++, dokumentiert unter
http://www.dangermouse.net/esoteric/hq9plusplus.html. Da HQ9++
abwrtskompatibel ist, ist unser HQ9+-Programm auch in dieser weiter
entwickelten Sprache voll funktionstchtig. Sehr gut.

HTML Application; Interpreter


Windows
Gratis; Freeware
http://msdn.microsoft.com/workshop/author/hta/over
view/htaoverview.asp
-

Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.hta ab. Gestartet
wird die HTA-Version nun einfach per Doppelklick.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

<!-- 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>

--------------------------- *schnapp* -----------------------------

36: HTBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

49

HTBasic for Windows 9.0; 2002; 14,4MB; Interpreter


Windows
Variabel; Demo
http://www.techsoft.de/htbasic/german
Einschrnkung der Demo: Eine Sitzung ist auf 30
Minuten beschrnkt; Programme knnen nicht gespeichert werden

50

Wir starten die Installation durch Ausfhren der Datei HTBasic90d.exe.


Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.). Start | Programme
| TransEra HTBasic 9.0 | HTBasic ausfhren  <Strg><N> fr neue
Datei, dann <Strg><E> fr den Edit Mode  Programm eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

! HTBasic version of 99 Bottles of beer (Bottles.bas)


! Philipp Winterberg, http://www.winterbergs.de
CLEAR SCREEN
DISPLAY FUNCTIONS OFF
A$=" bottle(s) of beer"
C$=" on the wall"
FOR B=99 TO 1 STEP -1
PRINT B;A$;C$;","
PRINT B;A$;"."
PRINT "Take one down, pass it around,"
PRINT B-1;A$;C$;".";CHR$(13);CHR$(10)
NEXT B
END

03:
04: OPENCONSOLE
05: FOR B = 99 TO 1 #-1
PRINT B, " bottle(s) of beer on the wall,"
06:
PRINT B, " bottle(s) of beer."
07:
PRINT "Take one down, pass it around,"
08:
PRINT B-1, " bottle(s) of beer on the wall." + chr$(13)
09:
+ chr$(10)
10: NEXT B
11: INPUT B
12: CLOSECONSOLE
--------------------------- *schnapp* -----------------------------

Mit <F4> ausfhren  Es ffnet sich ein Konsolenfenster, in dem der


Songtext ausgegeben wird. Gut so.

--------------------------- *schnapp* -----------------------------

Programm starten mit <Alt><F3>. Schon fertig. ber Help


Index bekommt man bei Bedarf sehr ausfhrlich Hilfe.

| Contents &

37: IBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Ibasic 2.02B; 2003; 2,7MB; Interpreter


Windows
$39,99; Shareware
http://www.pyxia.com/ibasic.html
30 Tage Trial

38: Impacto
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Impacto; 1999; 0,2MB; Interpreter


DOS
Gratis; Freeware
http://scorpius.spaceports.com/~esanto
Betaversion 0.74i

Kompetent entpacken wir die kleine, frisch heruntergeladene Archiv-Datei


impacto.zip. Hilfe gibt es nicht. Auer folgendem sprlichen Hinweis:

Mit leuchtenden Augen entpacken wir die frisch heruntergeladene ArchivDatei ibasic.zip und starten die Installation durch Ausfhren der Datei
SETUP.EXE. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.). Start
| Programme | IBasic | IBasic starten  Beide Shareware-Reminder mit
OK wegklicken  Code eingeben:
--------------------------- *schnipp* ----------------------------01: REM IBasic version of 99 Bottles of beer (Bottles.iba)
02: REM Philipp Winterberg, http://www.winterbergs.de

51

Immerhin erfahren wir auf der Website einige Details zur Sprache, so dass
unseren erfahrenen Hnden im Nu ein Meisterwerk entfliet:

52

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:

\ Impacto version of 99 Bottles of beer (Bottles.imp)


\ Philipp Winterberg, http://www.winterbergs.de
for(b = 1, 99, 1) {
print(100-b " bottle(s) of beer on the wall,\n")
print(100-b " bottle(s) of beer.\n")
print("Take one down, pass it around,\n")
print(99-b " bottle(s) of beer on the wall.\n\n")
}
end()

--------------------------- *schnapp* -----------------------------

Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Meisterwerk und speichern sie unter dem Namen bottles.imp ab. Per Drag
& Drop schleudern wir bottles.imp auf IMPACTO.EXE. Meisterhaft!

39: Irie Pascal


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Irie Pascal 2.5; 2003; 1,9MB; Interpreter


Windows
$59,95; Shareware
http://www.irietools.com
Evaluation

Wir starten die Installation durch Ausfhren der Datei ipw-eval.exe. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.). Irie Pascal wird
automatisch gestartet. Super. Wir berschreiben die Hello World-Vorlage
mit unserem Programm, speichern mit <Strg><S> und fhren es aus mit
<Strg><F9>: 20 lines compiled in 0.015 seconds. Compilation speed
1333 lines/sec., 79980 lines/min. Wow!
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

53

// Irie Pascal version of 99 Bottles of beer (Bottles.pas)


// Philipp Winterberg, http://www.winterbergs.de
program Bottles(output);
var b: byte;
a, c: string;
begin
a:= #32+#98+#111+#116+#116+#108+#101+#40+#115+#41+#32+

11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

#111+#102+#32+#98+#101+#101+#114;
c:= #32+#111+#110+#32+#116+#104+#101+#32+#119+#97+#108+#108;
b:= 99;
repeat
writeln(b:2, a, c, #44, #13, #10, b:2, a, #46, #13, #10,
#84, #97, #107, #101, #32,
#111, #110, #101, #32, #100, #111, #119, #110,
#44, #32, #112, #97, #115,
#115, #32, #105, #116, #32, #97, #114, #111,
#117, #110, #100, #44);
dec(b);
writeln(b:2, a, c, #46, #13, #10);
until b = 0;
end.

--------------------------- *schnapp* -----------------------------

Interessant: Irie Pascal is a Pascal compiler and interpreter. The compiler


translates Pascal programs into Irie Virtual Machine (IVM) executables,
which are then executed by the interpreter. The IVM is an abstract
computer platform that is implemented in software (by the interpreter), and
runs executables on many different computer platforms. The IVM has
been implemented on seven computer platforms (Win95/98/NT/2000,
DOS, OS/2, Linux, FreeBSD, Solaris/x86, and Solaris/Sparc) so far. IVM
executables developed on any platform, run on all seven platforms.

40: ISETL
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ISETL 3.0; 1990; 0,1MB; Interpreter


DOS/Windows
Gratis; Freeware
http://isetlw.muc.edu/isetlw/default.asp
-

Gebannt entpacken wir die winzige, frisch heruntergeladene Archiv-Datei


isetl.zip. und erzeugen mit einem Texteditor eine Datei, fllen sie mit
unserem Quelltext und speichern sie unter dem Namen bottles.stl ab:
--------------------------- *schnipp* ----------------------------01: $ ISETL version of 99 Bottles of beer (Bottles.stl)
02: $ Philipp Winterberg, http://www.winterbergs.de
03:

54

04: program Bottles;


05:
local b;
b:= 99;
06:
while b > 0 do
07:
printf b, " bottle(s) of beer on the wall,\n";
08:
printf b, " bottle(s) of beer.\n";
09:
b:= b - 1;
10:
printf "Take one down, pass it around,\n";
11:
printf b, " bottle(s) of beer on the wall.\n\n";
12:
end;
13:
14: end;
--------------------------- *schnapp* -----------------------------

Drag & Drop der Datei bottles.stl auf ISETL.EXE. Fertig.

42: Kiev
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Kiev 0.09; 1999; 2,3MB; Interpreter


Windows; Java Virtual Machine
Gratis; Freeware
http://www.forestro.com/kiev
Luft nicht

Kiev bentigt eine Java Virtual Machine ( http://www.java.com/de/


download/manual.jsp)  Download  Installieren  Leider eine
Sackgasse, denn Kiev luft irgendwie nicht unter Windows XP. Das wre
Ihr Programm gewesen:
--------------------------- *schnipp* -----------------------------

41: JScript
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

JScript via Windows Script Host; Interpreter


Windows
Variabel; Software
http://www.microsoft.com
Muss man nicht gesehen haben

Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen Bottles.js ab. Per
Doppelklick kann die Datei nun mit dem Windows Script Host (WSH)
ausgefhrt werden.
--------------------------- *schnipp* ----------------------------// *short* JScript/WSH version of 99 Bottles of beer (Bottles.js)
// Philipp Winterberg, http://www.winterbergs.de
var beerShell = WScript.CreateObject("WScript.Shell");
for (b = 99 ; b > 0 ; b--) {
beerShell.Popup(b + " bottle(s) of beer on the wall, " + b
+ " bottle(s) of beer.", 2, "99 Bottles of Beer");
beerShell.Popup("Take one down, pass it around, " + (b
06:
- 1) + "bottle(s) of beer on the wall.", 2, "99 Bottles
of Beer");
07: }
01:
02:
03:
04:
05:

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

// Kiev version of 99 Bottles of beer (Bottles.java)


// Philipp Winterberg, http://www.winterbergs.de
import kiev.stdlib;
class Bottles {
public static void main(String argv[]) {
int b;
for (b = 99; b > 0; b--) {
System.out.print(b);
System.out.println(" bottle(s) of beer on the wall,");
System.out.print(b);
System.out.println(" bottle(s) of beer.");
System.out.println("Take one down, pass it around,");
System.out.print(b-1);
System.out.println(" bottle(s) of beer on the wall.\n");
}
}
}

--------------------------- *schnapp* -----------------------------

Schade. rgerlich. Zum Trost finden Sie im Anhang A den Songtext. Wie
gut, dass Sie das nicht alleine erleben. Also: Weiterreisen. Auf zu neuen
Horizonten!

--------------------------- *schnapp* -----------------------------

55

56

43: KiXtart
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

KiXtart 4.22; 2001; 0,5MB; Interpreter


Windows
Gratis; Careware
http://www.kixtart.org
CareWare is a variant on shareware and freeware.
It is sometimes also known as 'charityware', 'donationware', 'helpware' or 'goodware', and is
copyrighted software that you are allowed to use
at no charge in return for a donation to specified
charity/ies or to a charity of the users' choice.
(KIX2001.DOC)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


KiX2001_422.zip und erzeugen mit dem Texteditor eine leere Datei, fllen
sie mit unserem Code und speichern sie unter dem Namen Bottles.kix ab:

29:
30:
31:
32:
33:

? "No more" $wall "," ? "No more" $bob "."


? "Go to the store and buy some more," ? "99" $wall "."
get $MoreBeer
quit

--------------------------- *schnapp* -----------------------------

Drag & Drop von Bottles.kix auf KIX32.EXE. Es ffnet sich ein
Konsolenfenster, in dem der Songtext ausgegeben wird. Super.
Achtung: drcken Sie jetzt einfach nur eine beliebige Taste, das Programm
wird dann beendet. Wenn Sie auf den X-Schlieenbutton klicken, werden
Sie abgemeldet.
KIX2001.DOC enthlt alles Weitere: Installationshinweise, eine Kommandound Funktionsreferenz etc.

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

; KiXtart version of 99 Bottles of beer (Bottles.kix)


; Philipp Winterberg, http://www.winterbergs.de
;
cls
color w/n
$bob = " bottles of beer"
$wall = $bob + " on the wall"
$take = "Take one down, pass it around, "
for $b = 99 to 1 step -1
select
case $b = 1
? "One bottle of beer on the wall," ? "One bottle of
beer."
? $take ? "No more" $wall "."
case $b = 2
? $b $wall "," ? $b $bob "."
? $take ? "One bottle of beer on the wall."
case $b > 2
? $b $wall "," ? $b $bob "."
? $take ? ($b - 1) $wall "."
endselect
?
next

15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26: color r+/n+
27: sleep 1
28:

57

44: Liberty Basic


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Liberty Basic 4.0; 2003; 3,0MB; Interpreter


Windows
$29,95; Trial
http://www.libertybasic.com
the easiest programming language around
1992! (welcome.bas)

Wir starten die Installation durch Ausfhren der Datei


durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Start

Programme

Liberty

BASIC

v4.0

since

lb400win.exe.

Liberty

BASIC

Jetzt
v4.0

ausfhren  Dialog wegklicken (Continue)  File | New | BASIC


Source File whlen  Programm schreiben und ber die lustigen Farben
des Quelltextes freuen:
--------------------------- *schnipp* ----------------------------01: ' Liberty Basic version of 99 Bottles of beer (Bottles.bas)
02: ' Philipp Winterberg, http://www.winterbergs.de
03:
04: for b = 99 to 1 step -1
print b; " bottle(s) of beer on the wall,"
05:
print b; " bottle(s) of beer."
06:
print "Take one down, pass it around, "
07:
print (b-1); " bottle(s) of beer on the wall." + chr$(13) +
08:
chr$(10)

58

09: next b
--------------------------- *schnapp* -----------------------------

fhrt das Programm aus. In einem neuen Fenster wird der


Songtext ausgegeben.
<Shift><F5>

45: MacroX
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

MacroX 3.1.0; 2003; 2,9MB;


Windows
20,00; Shareware
http://www.macrox.de/macrox-download.html
-

Wir starten die Installation durch Ausfhren der Datei macrox.exe. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Start | Programme | MacroX | MacroX starten  Willkommen-Dialog
wegklicken  Unser Programm eingeben
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

\ MacroX version of 99 Bottles of beer (Bottles.mcx)


\ Philipp Winterberg, http://www.winterbergs.de
run=notepad,1
%b%=99
loop=Bottles=99
stop
Bottles:
text=%b% bottle(s) of beer on the wall,{enter}
text=%b% bottle(s) of beer.{enter}
text=Take one down, pass it around,{enter}
Calc={%b%-1},b
text=%b% bottle(s) of beer on the wall.{enter}{enter}
loopend

--------------------------- *schnapp* -----------------------------

und mit <F5> starten  Wie von Geisterhand ffnet sich eine Instanz
des Notepads und der Songtext wird ausgegeben. Wow. Magic.

59

46: MoonRock
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

MoonRock 0.50; 1998; 0,2MB; Compiler


DOS
Gratis; Freeware
http://www.rowan.sensation.net.au/moonrock.html
MoonRock is a BASIC-like language with several
extensions (FILE_ID.DIZ) +++ MoonRock is proudly
"Australian Made" (READ.ME)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


moon050.zip. Danach die Datei arrowsoft.zip in dasselbe Verzeichnis
entpacken. Nun erzeugen wir mit einem Texteditor eine Datei, fllen sie
mit unserem Quelltext und speichern sie unter dem Namen bottles.moo ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

' MoonRock version of 99 Bottles of beer (Bottles.moo)


' Philipp Winterberg, http://www.winterbergs.de
'
$outstream _tty_str_direct
cls
a$ = "\h20\h62\h6F\h74\h74\h6C\h65\h28\h73\h29\h20\h6F_
\h66\h20\h62\h65\h65\h72"
b% = 99
c$ = "\h20\h6F\h6E\h20\h74\h68\h65\h20\h77\h61\h6C\h6C"
while b% > 0
print b%+a$+c$+"\h2C\n"+b%+a$+"\h2E\n\h54\h61\h6B\h65\_
h20\h6F\h6E\h65 \h64\h6F\h77\h6E\h2C \h70\h61\h73\h73 "
print "\h20\h69\h74 \h61\h72\h6F\h75\h6E\h64\h2C\h20\n"
b% = b% - 1
print " \h50\h48\h49\h4C\h49 \h0D"+b%+a$+c$+"\h2E\n \n"
wend

--------------------------- *schnapp* -----------------------------

Drag & Drop von bottles.moo auf MRC.EXE  BOTTLES.ASM wird generiert
 ASM.EXE starten (Doppelklick), als Input File geben wir BOTTLES.ASM
<Enter> ein; die nchsten drei Eingabemglichkeiten besttigen wir einfach
mit <Enter>  BOTTLES.OBJ wird erzeugt  Drag & Drop von
BOTTLES.OBJ auf MRLINK.COM  Endlich! BOTTLES.COM (1.770 Bytes) wird
erzeugt  BOTTLES.COM starten (Doppelklick) Und nicht vergessen:
Unbedingt BOTTLES.COM als kleines Andenken einpacken!

60

47: NeoBook
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

48: Numberix

NeoBook 4.1.3a; 2003; 3,8MB;


Windows
$199,95; Shareware
http://www.neosoftware.com/nbw.html
30 Tage Evaluation

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Numberix 1.0; 2000; 0,1MB; Interpreter


DOS
Gratis; Freeware
http://calamari.8k.com/numberix
Esoterische Programmiersprache

Gespannt entpacken wir die frisch heruntergeladene Datei nbw41.exe.


NeoBook wird gestartet. Danke. About-Box wegklicken, Frage nach der
Tour mit no beantworten  Mit <F5> ffnen wir die Page Properties,
klicken links auf Actions und geben bei Page Enter unseren Code ein:

Gespannt entpacken wir die frisch heruntergeladene ZIP-Datei


numberix.zip. Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit
unserem Quelltext und speichern sie unter dem Namen bottles.num ab:

--------------------------- *schnipp* -----------------------------

01: 50009950010B57001150000A55000193000155800157002200000000000000
0000000000000000
02: 502300502300502300002300000000FF000000000000000000000000000000
0000000000000000
03: 00230050230059012F59003059092059096259096F59097459097459096C59
0965590928570013
04: 00230000230059097359092959092059096F59096659092059096259096559
0965590972570013
05: 00230000230059092059096F59096E59092059097459096859096559092059
0977590961570013
06: 00230000230059096C59096C59092C59090A59090D57001300000000000000
0000000000000000
07: 00230000230059012F59003059092059096259096F59097459097459096C59
0965590928570013
08: 00230000230059097359092959092059096F59096659092059096259096559
0965590972570013
09: 00230000230059092E59090A59090D57001300000000000000000000000000
0000000000000000
10: 00230000230059095459096159096B59096559092059096F59096E59096559
0920590964570013
11: 00230000230059096F59097759096E59092C59092059097059096159097359
0973590920570013
12: 00230000230059096959097459092059096159097259096F59097559096E59
096459092C570013
13: 00230000230059090A59090D57001300000000000000000000000000000000
0000000000000000
14: 00230000230059012F59002F59092059096259096F59097459097459096C59
0965590928570013
15: 00230000230059097359092959092059096F59096659092059096259096559
0965590972570013
16: 00230000230059092059096F59096E59092059097459096859096559092059
0977590961570013
17: 00230000230059096C59096C59092E59090A59090D59090A59090D57001300
0000000000000000
18: 00230000230093000157001200000000000000000000000000000000000000

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:

.
.
.
.
.
.
.

NeoBook version of 99 Bottles of beer (Bottles.neo)


Philipp Winterberg, http://www.winterbergs.de
How to use:
1. Create a new presentation
2. Import this code snippet as Action
3. Run and enjoy :-)

SetVar "[b]" "99"


SetVar "[a]" " bottle(s) of beer"
SetVar "[c]" " on the wall"
SetVar "[d]" "|Take one down, pass it around,|"
While "[b]" ">" "0"
Math "[b]-1" "0" "[e]"
StickyNote "-1" "-1" "[b][a][c],|[b][a].[d][e][a][c]." "3000"
Math "[b]-1" "0" "[b]"
EndWhile
Exit "" ""

--------------------------- *schnapp* -----------------------------

Danach den Button OK klicken und das kleine Programm mit


ausfhren. Gratulation, Sie sind am Ziel!

61

<F9>

--------------------------- *schnipp* -----------------------------

62

0000000000000000
19: 002300002300570001
20:
21: Numberix version of 99 Bottles of beer (Bottles.num)
22: Philipp Winterberg, http://www.winterbergs.de

07:
print
08:
print
print
09:
print
10:
11: endfor

str(100 - b#, 2) + c$ + ","^J"^M"


str(100 - b#, 2) + a$ + "."^J"^M"
"Take one down, pass it around,"^J"^M"
str(99 - b#, 2) + c$ + "."^J"^M"^J"^M"

--------------------------- *schnapp* -----------------------------

--------------------------- *schnapp* -----------------------------

Was fr ein wunderschnes kryptisches Chaos! Wir fhren das Programm


aus per Drag & Drop von bottles.num auf NUMBERIX.EXE. Herrlich. Lesen
Sie sich in die Sprache ein, die Dokumentation ist verstndlich und das sich
irgendwann pltzlich einstellende Gefhl des Verstehens ist fast so gut wie
frisch verliebt sein

Das Programm speichern mit <Strg><S> (Dateiname bottles


 <F5>: Das Script wird ausgefhrt! Fertig!

<Enter>)

50: Objective Caml


49: O'Basic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

OBasic 97; 1999; 1,6MB; Interpreter


Windows
Gratis; Freeware
http://www.obasic.com
Auch bekannt unter OBasic 97 Scripting Language

Wir starten die Installation durch Ausfhren der Datei obasic97034.exe.


Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.
OBasicFreedomPatch.zip entpacken  Datei OBEngine.dll mit der
Windows-Suchfunktion
finden
(vermutlich
im
Ordner
C:\WINDOWS\system32) und durch die neuere Datei aus dem Freedom Patch
ersetzen  Gleiches gilt fr die Dateien OB97DE.exe und OBMake.exe
(Vermutlich im Ordner C:\Programme\O'Basic97 System Scripting) 
Jetzt ist OBasic freigeschaltet. Yeah!
Start | Programme | O'Basic97 System Scripting | OBasic Editor

starten  Zeile ReturnedBy$


durch unser Programm ersetzen:

Form1.Show(fsModal@)

63

' O'Basic version of 99 Bottles of beer (Bottles.cod)


' Philipp Winterberg, http://www.winterbergs.de
a$ = " bottle(s) of beer"
c$ = a$ + " on the wall"
for b# = 1 to 99

Objective Caml 3.07+2; 2003; 9,2MB; Interpreter


Windows
Gratis; Freeware
http://caml.inria.fr/ocaml/distrib.html
Objective Caml is an implementation of the ML
language, based on the Caml Light dialect
(Readme.general.txt)

Wir starten die Installation durch Ausfhren der Datei ocaml-3.07pl2-winmsvc.exe. Durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.). Sehr gut.
Jetzt erzeugen wir mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.ml im verzeichnis
C:\Programme\Objective Caml\bin:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:

lschen und

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

07:
08:
09:
10:
11:

(* Objective Caml version of 99 Bottles of beer (Bottles.ml) *)


(* Philipp Winterberg, http://www.winterbergs.de
*)
let b = ref 99
in while !b > 0 do
print_int !b; print_string "
the wall,\n";
print_int !b; print_string "
print_string "Take one down,
b := !b - 1;
print_int !b; print_string "
the wall.\n\n"
done;;

bottle(s) of beer on
bottle(s) of beer.\n";
pass it around,\n";
bottle(s) of beer on

--------------------------- *schnapp* -----------------------------

Drag & Drop von bottles.ml auf ocaml.exe. Wunderbar. Geschafft.

64

51: PascalX
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

PascalX 1.37; 2001; 1,3MB; Compiler


Windows
Gratis; Freeware
http://www.readyideas.com/pascalx.htm
Pascal X (Development) Environment contains an
interpreter for the ISO Pascal 7185:1990 programming language plus some extended constructs
and tools (readme.txt)

Zunchst entpacken wir die frisch heruntergeladene ZIP-Datei pxe.zip. Wir


starten die Installation durch Ausfhren der gerade entpackten Datei
SETUP.EXE, die sich im Unterverzeichnis \DISK1 befindet. Jetzt durchklicken
(Okay, Ja, Weiter, Danke, Fertig etc.).
pxe.exe starten, die Erstellung einer Bibliothek bejahen. Wir geben unser
Programm ein und speichern es anschlieend mit <Strg><S> (Dateiname
bottles.pas <Enter>).
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

{ PascalX [English] version of 99 Bottles of beer (Bottles.pas) }


{ Philipp Winterberg, http://www.winterbergs.de
}
program Bottles; var b: bigint; a, c: string[20];
begin
a:= ' bottle(s) of beer'; c:= ' on the wall';
for b:=99 downto 1 do
writeln(b, a, c, ', '+chr(13)+chr(10), b, a, '.'+
chr(13)+chr(10)+'Take one down, pass it around,'+
chr(13)+chr(10),(b-1),a,c,'.'+chr(13)+chr(10))
end.

--------------------------- *schnapp* -----------------------------

Wir fhren unser Programm daraufhin mit <F9> aus. Der Compiler meldet
frhlich: Tab: 6.48%[198,1] Cod: 1.82%[37]. 12 compiled lines in
0.03 second. Executed in 1.01 second.
Sehen Sie sich nun weiter um, Hilfe gibt es notfalls im Men unter
Documentation | PascalX.
Das ganze geht brigens auch auf portugisisch: PascalX [Portuguese]Version. Im Editor stellen Sie unter Options | Language die Keywords auf
Portuguese, dann geben Sie folgende Zeilen ein:
--------------------------- *schnipp* -----------------------------

(Bottles.pas) }
02: { Philipp Winterberg, http://www.winterbergs.de
}
03:
04: PROGRAMA Bottles;
05: VAR b: BIGINT; a, c: STRING[20];
06: INICIO
a:= ' bottle(s) of beer'; c:= ' on the wall';
07:
PARA b:=99 PARAMENOS 1 FACA
08:
GRAVELN(b, a, c, ', '+chr(13)+chr(10), b, a, '.'+
09:
chr(13)+chr(10)+'Take one down, pass it around,'+
10:
chr(13)+chr(10),(b-1),a,c,'.'+chr(13)+chr(10))
11:
12: FIM.
--------------------------- *schnapp* ----------------------------<F9>

 Seltsamerweise meldet der Compiler lediglich Compilando


und tut weiter nichts. Faules Stck! Schade.

bottles.pas

52: PasScript
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

PasScript 6.53; 2002; 0,8MB; Interpreter


Windows
Gratis; Freeware
http://users.ints.net/virtlabor/passcript
-

Zunchst entpacken wir die frisch heruntergeladene Datei passcript.zip und


starten die Installation durch Ausfhren der Datei PasScriptV6-53.exe.
Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Programme/PasScript PasScript.exe starten  Programm eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

// PasScript version of 99 Bottles of beer (Bottles.pas)


// Philipp Winterberg, http://www.winterbergs.de
program Bottles;
var
WordApp, Range: variant;
b: integer;
Strophe: string;
begin
CoInitialize;
try

01: { PascalX [Portuguese] version of 99 Bottles of beer

65

66

12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:

WordApp:= CreateOleObject('Word.Application');
WordApp.Visible:= true;
WordApp.Documents.Add;
Range:= WordApp.Documents.Item(1).Range;
for b:=99 downto 1 do
begin
Strophe:= inttostr(b) + ' bottle(s) of beer on the
wall,' +#13#10+
inttostr(b) + ' bottle(s) of beer.' +#13#10+
'Take one down, pass it around,' +#13#10+
inttostr(b-1) + ' bottle(s) of beer on the
wall.' +#13#10;
Range.Text:= Range.Text + Strophe
end
finally
CoUninitialize
end
end.

03:
04: program Bottles(output); var b: integer; {$c+,t+}
05: begin
for b:= 99 downto 1 do
06:
writeln(b, ' bottle(s) of beer on the wall,', #13#10,
07:
b, ' bottle(s) of beer.', #13#10,
08:
'Take one down, pass it around,', #13#10,
09:
(b-1), ' bottle(s) of beer on the wall.', #13#10)
10:
11: end.
--------------------------- *schnapp* -----------------------------

Kommandozeile:
translat
bottles.pas
bottles.pcd

Kommandozeile: interpre bottles.pcd  Fertig. READ.ME enthlt
weitere Infos.

--------------------------- *schnapp* ----------------------------File | Save bottles.pas<Enter>  Mit <F9> das Programm starten  Es
wird ein Word-Dokument geffnet und der Songtext darin ausgegeben.

53: Port. ISO Std. Pascal


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Portable ISO Standard Pascal 3.8; 1990; 0,1MB;


Interpreter
DOS
Gratis; Public Domain
http://www.programmersheaven.com/zone24/cat351/426
2.htm
-

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


P_PASCAL.ZIP. Wir erzeugen mit einem Texteditor eine Datei, fllen sie
mit unserem Quelltext und speichern sie unter dem Namen Bottles.pas im
Unterverzeichnis \P_PASCAL ab.
--------------------------- *schnipp* ----------------------------01: { Portable ISO Standard Pascal version of 99 Bottles of beer
(Bottles.pas) }
02: { Philipp Winterberg, http://www.winterbergs.de
}

67

54: ProvideX
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ProvideX 6.0; 2004; 13,9MB


Windows
Gratis; Testversion
http://www.pvx.com/downloads/providex/windows/home
.html
-

Wir starten die Installation durch Ausfhren der Datei ProvideX


V6.00.exe. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Start | Programme | Best Software Canada Ltd | ProvideX V6.00 |
ProvideX V6.00 starten  Testversion-Hinweis wegklicken  Unser
Programm Zeile fr Zeile am ProvideX-Programm-Prompt eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

0010
0020
0030
0040
0042
0050
0060
0070
0080
0090
0099

! ProvideX version of 99 Bottles of beer (Bottles.bbx)


! Philipp Winterberg, http://www.winterbergs.de
CLEAR
FOR b=99 TO 1 STEP -1
? b," bottle(s) of beer on the wall,"
? b," bottle(s) of beer."
? "Take one down, pass it around,"
? b-1," bottle(s) of beer on the wall."+$0A$+$0D$
NEXT
STOP

--------------------------- *schnapp* -----------------------------

68

Mit list<Enter> kann man sich eine gefrbte Variante ausgeben lassen, mit
run<Enter> wird das Programm ausgefhrt. In den vielfach verschachtelten,
unbersichtlichen Mens herumzutauchen, ist waghalsiger, als sich bei
schlechter Sicht in einer Unterwassergrotte mit starker Strmung
aufzuhalten:

etc.). PureBasic startet nun automatisch. Zu den Einschrnkungen sagen


wir OK und geben unseren Code ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

; PureBasic version of 99 Bottles of beer (Bottles.pb)


; Philipp Winterberg, http://www.winterbergs.de
OpenConsole():ConsoleColor(0,15):a$=" bottle(s) of beer"
ConsoleTitle("99"+a$):c$ = " on the wall":ClearConsole()
For b = 99 To 1 Step -1
PrintN(" "+Str(b)+a$+c$+","):PrintN(" "+Str(b)+a$+".")
PrintN(" Take one down, pass it around,")
PrintN(Chr(32)+Str(b-1)+a$+c$+Chr(46)):PrintN(Chr(32))
Next b
Input():End

--------------------------- *schnapp* -----------------------------

Mit <F5> starten wir das Programm. Es wird in einem sich neu ffnenden
Fenster ausgefhrt. Super. Die im Hintergrund erzeugte Datei heit
PureBasic7969953.exe o.. und ist ca. 25kb gro. Ein hbsches Andenken.

Lassen Sie sich nicht locken von grellbunten Fenstern und lustig antik
anmutenden Funktionen Sie werden sich sonst spter grimmig auf die
Lippe beien und wnschen, Sie htten gleich die einzig richtige
Entscheidung gefllt: Auf das rote Feld mit dem X klicken und abreisen.

Wir

starten

PureBasic 3.90; 2004; 6,0MB; Compiler


Windows
$59,00; Demo
http://www.purebasic.com
-

die

PureBasic_Demo.exe.

69

Installation durch Ausfhren


Jetzt durchklicken (Okay, Ja, Weiter,

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Py 3.0a; 2001; 0,4MB; Interpreter


DOS
Gratis; Freeware
http://webs.lanset.com/dcuny/py.htm
It's a mixture of Python, C, JavaScript, Basic,
and (of course) Euphoria (py.htm)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


py_30a_compiled.zip. Wir erzeugen mit einem beliebigen Texteditor
(allerdings nicht Word, sondern Notepad o..) eine Datei, fllen sie mit
unserem Quelltext und speichern sie unter dem Namen bottles.py ab.

55: PureBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

56: Py

--------------------------- *schnipp* -----------------------------

der

Datei

Danke, Fertig

01:
02:
03:
04:
05:
06:
07:

-- Py version of 99 Bottles of beer (Bottles.py)


-- Philipp Winterberg, http://www.winterbergs.de
var a = " bottle(s) of beer", c = " on the wall"
var d = "Take one down, pass it around,"
for b = 99 to 1 by -1 do
printf("%d%s%s,\n%d%s.\n%s\n%d%s%s.\n\n", b, a, c, b, a, d,

70

(b - 1), a, c)
08: end for
--------------------------- *schnapp* -----------------------------

Drag & Drop von bottles.py auf PY.EXE oder Kommandozeile: py


bottles  Herrlich. Fertig. Mit dem Binder kann man das eigene
Programm an PY.EXE binden und so eine eigenstndige ausfhrbare Datei
erzeugen: binder bottles.py generiert z.B. BOTTLES.EXE. Weitere
Dokumentation in PY.TXT.

57: Quikcode
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Quikcode 2.15; 2000; 0,1MB; Interpreter


DOS
Gratis; Freeware
http://www.quikcode.bizland.com
Quikcode is a procedural language similar to the
Quikjob language (readme.txt)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


quikcode.zip. Eine Installation ist nicht ntig. Wir erzeugen mit einem
Texteditor eine Datei, fllen sie mit unserem Quelltext und speichern sie
unter dem Namen bottles.q ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:

* Quikcode version of 99 Bottles of beer (Bottles.q)


* Philipp Winterberg, http://www.winterbergs.de
equate b wst1-2-I
move 99 to b
loop:
display b ' bottle(s) of beer on the wall,'
display b ' bottle(s) of beer.'
display 'Take one down, pass it around,'
subtract 1 from b
display b ' bottle(s) of beer on the wall.'
display
if b < 1
go to done
else
go to loop
done: end.

Wir fhren das Programm anschlieend aus per Drag & Drop von
bottles.q auf QUIKCODE.EXE. Weitere Informationen zu Quikcode enthlt
die Referenz in der Datei quikcode.txt.

58: R
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

R 1.9.0; 2004; 21,1MB;


Windows
Gratis; Freeware
http://www.r-project.org
-

Wir starten die Installation durch Ausfhren der Datei rw1090.exe. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Start | Programme | R | R 1.9.0 starten  Im Fenster mit dem Titel R
Console folgende Zeilen eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:

# R version of 99 Bottles of beer (Bottles.r)


# Philipp Winterberg, http://www.winterbergs.de
for (b in 99:1){
print(b)
print(" bottle(s) of beer on the wall,")
print(b)
print(" bottle(s) of beer.")
print("Take one down, pass it around,")
print(b-1)
print(" bottle(s) of beer on the wall.")
print("")
}

--------------------------- *schnapp* -----------------------------

In dem Moment, in dem wir die letzte geschweifte Klammer schlieen und
<Enter> drcken, wird unser Programm auch schon ausgefhrt. In Blau.

--------------------------- *schnapp* -----------------------------

71

72

59: Rapid-Q
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Rapid-Q 1.0.0; 2000; 1,1MB; Compiler


Windows
Gratis; Freeware
http://www.basicguru.com/rapidq
-

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


rqbeta.zip in ein beliebiges Verzeichnis.
RAPIDQ.EXE starten  Quelltext eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

' Rapid-Q version of 99 Bottles of beer (Bottles.rqb)


' Philipp Winterberg, http://www.winterbergs.de
$APPTYPE CONSOLE : $OPTIMIZE ON : $ESCAPECHARS ON : a$ = " _
\98\111\116\116\108\101\40\115\41 \111\102\32\98\101\101\11_
4" : b = 99 : while (b > 0) : print b, a$, " \111\110\32\11_
6\104\101\32\119\97\108\108," : print b, a$, ".\r\n\84\97\1_
07\101 \111\110\101 \100\111\119\110, \112\97\115\115 \105\_
116\32\97\114\111\117\110\100," : b = b - 1 : print b, a$, _
"\32\111\110\32\116\104\101\32\119\97\108\108\46\r\n" : wend

--------------------------- *schnapp* -----------------------------

Mit <F5> starten  Ein Fenster blitzt auf, der Songtext flitzt vorbei. RapidQ erzeugt darber hinaus im Hintergrund die Datei $noname.exe mit einer
Gre von stolzen 307kb. Danke Rapid-Q.

60: RapidBATCH
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

RapidBatch 1.1;
DOS
Gratis; Freeware
http://www.rapidbatch.com
-

Wir starten die Installation durch Ausfhren der Datei SETUP.EXE, die wir
vorfinden, nachdem wir das Archiv rbatch.zip entpackten. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).

73

Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.rb im Verzeichnis
C:\jmksf\RBATCH.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:

% RapidBATCH version of 99 Bottles of beer (Bottles.rb)


% Philipp Winterberg, http://www.winterbergs.de
Dec [b]
Let [b]=99
%next
EchoLn [b]
EchoLn bottle(s) of beer on the wall,
EchoLn [b]
EchoLn bottle(s) of beer.
EchoLn Take one down, pass it around,
CalcVar [b]=[b]-'1'
EchoLn [b]
EchoLn bottle(s) of beer on the wall.
If Not [b]='0' GoTo next
End

--------------------------- *schnapp* -----------------------------

Ausfhren per Drag & Drop von bottles.rb auf


mandozeile rbi bottles.rb. Fertig.

RBI.EXE

oder Kom-

61: RBASIC
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

RBASIC 1.21; 2002; 0,7MB; Interpreter


Windows; WiNRADiO
Gratis; Freeware
http://www.rbasic.com
RBASIC steht fr Radio Basic

Die RBASIC-Website bietet unter Installation und Starting Up eine so


profunde Beschreibung des Installationsvorgangs und der ersten Schritte,
dass an dieser Stelle keine ntig ist.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:

# RBASIC version of 99 Bottles of beer (Bottles.rbp)


# Philipp Winterberg, http://www.winterbergs.de
a$=" bottle(s) of beer":c$=" on the wall":d$=chr$(13)+chr$(10)
for b = 99 to 1 step -1

74

06:
disp str$(b)+a$+c$+","+d$+str$(b)+a$+"."
07:
print "Take one down, pass it around, "
print str$(b-1)+a$+c$+"."+d$+d$
08:
09: next b
10: rpower=0:end
--------------------------- *schnapp* -----------------------------

Ein Lob den Entwicklern! Wre alles so einfach, bruchte die Welt ohne
Wetter keine Reisefhrer wie diesen

62: REBOL/Core
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

REBOL/Core 2.5.6; 0,2MB; Interpreter


Windows
Gratis; Freeware
http://www.rebol.com/download.html
-

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


core031.zip und erzeugen mit einem Texteditor eine Datei, fllen sie mit
unserem Quelltext und speichern sie unter dem Namen bottles.r ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:

; REBOL/Core version of 99 Bottles of beer (Bottles.r)


; Philipp Winterberg, http://www.winterbergs.de
REBOL [Title: "99 Bottles of beer"]
for b 99 1 -1 [
prin b print " bottle(s) of beer on the wall,"
prin b print " bottle(s) of beer."
print "Take one down, pass it around,"
prin b - 1 print " bottle(s) of beer on the wall."
print ""
]

63: ScriptBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ScriptBasic 1.0; 2001; 4,2MB; Interpreter


DOS
Gratis; Freeware
http://script.basic.hu/html
-

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei scribav1.0b29-bin.zip. Im Verzeichnis ScriptBasic\bin befindet sich der
Interpreter scriba.exe. Wir erzeugen mit einem Texteditor eine Datei,
fllen sie mit unserem Quelltext und speichern sie unter dem Namen
bottles.bas ab.
--------------------------- *schnipp* ----------------------------01: ' ScriptBasic version of 99 Bottles of beer (Bottles.bas)
02: ' Philipp Winterberg, http://www.winterbergs.de
03:
04: a$ = " \98\111\116\116\108\101\40\115\41\32\111\102\32\98\1
01\101\114"
05: c$ = " \111\110\32\116\104\101\32\119\97\108\108\99\32\32\8
\8\8\8\108"
06: for b = 99 to 1 step -1
07:
print "\13\10",b,a$,c$,"\44\n",b,a$,"\46\n\84\97\107\101\
32\111\110"
08:
print "\101\32\100\111\119\110", ",\32\112\97\115\115\32\
105\116\32"
09:
print "\97\114\111\117\110\100\44\13\10",(b-1),a$,c$,"\46
\32 \13\10"
10: next b
11: end
--------------------------- *schnapp* -----------------------------

Nun fhren wir unser Programm lssig per Drag & Drop von bottles.bas
auf den Interpreter scriba.exe oder per Kommandozeile scriba
bottles.bas aus. Sehr gut. Prchtig.

--------------------------- *schnapp* -----------------------------

Drag & Drop der Datei bottles.r auf rebol031.exe  Ein Fenster ffnet
sich, der Songtext wird ausgegeben, das Fenster schliet sich wieder.
Schn. Danke, REBOL/Core.

75

76

64: ScriptEase
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ScriptEase 4.40f; 2002; 5,2MB; Interpreter


Windows
$19.95; Shareware
http://www.sedesk.com/us/desktop
Auch bekannt unter "ScriptEase Desktop Win32"

Wir starten die Installation durch Ausfhren der Datei seset32b.exe. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.) und beliebigen
Usernamen eingeben.
Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.jsa im Verzeichnis
c:\SEdesk ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

// ScriptEase version of 99 Bottles of beer (Bottles.jsa)


// Philipp Winterberg, http://www.winterbergs.de
#include <inout.jsh>
a = " bottle(s) of beer";
c = " on the wall";
d = "Take one down, pass it around,";
for (b = 99 ; b > 0 ; b--)
Clib.printf("%d%s%s,\n%d%s.\n%s\n%d%s%s.\n\n", b, a, c, b,
a, d, (b - 1), a, c);

12:
13: PauseForWin('');
14: Clib.exit(EXIT_SUCCESS);
--------------------------- *schnapp* -----------------------------

Drag & Drop von bottles.jsa auf SEwin32.exe. Schon fertig. Die Datei
sedesk.chm enthlt das umfangreiche Manual.

65: SheerPower
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

SheerPower 4GL 3.5; 2004; 2,6MB; Interpreter


Windows
Gratis; Freeware
http://nkserver.ttinet.com/sheerpower
-

Wir starten die Installation durch Ausfhren der Datei sp_install.exe.


Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Die Entwicklungsumgebung startet automatisch. Die Frage, ob wir Hilfe
wollen beantworten wir mit No. Spter vielleicht. :-) Jetzt sind wir in der
unglaublich mchtigen SheerPower Rapid Development Enviroment
angekommen. Wir whlen File | New und geben ein bottles <Enter>.
Sofort gibt uns SheerPower eine kleine Demonstration seiner Macht: Es
erscheint ein Dialog mit dem Titel Get Program Info, in dem
Informationen zum Programm abgefragt werden. Wir tragen nichts ein,
klicken einfach ergeben OK. Sogleich wird SheerPower wieder fleig aktiv
und schreibt in unsere frische Datei ohne zu fragen einen Rohbau, den wir
so nie gewollt haben. Also markieren wir ihn und lschen alles wieder.
Dann geben wir unseren Code ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

// SheerPower version of 99 Bottles of beer (Bottles.spsrc)


// Philipp Winterberg, http://www.winterbergs.de
clear
declare string a, c
declare integer b
a=" bottle(s) of beer"
c=" on the wall"
for b=99 to 1 step -1
print b; a; c; ","
print b; a; "."
print bold:"Take one down, pass it around,"
print b-1; a; c; "."
print
next b

--------------------------- *schnapp* ----------------------------<Alt><R> und das Programm wird in einem neuen Fenster ausgefhrt. In
grn. Wie nett. Mchtig, auch.

77

78

Hobbiests and Non-Profit Organization License Key


Key:
Name:
Email:

Doppelklick. Die Datei SHOWTEXT.DOC enthlt das Manual. Mit dem Aufruf
von ALL2EXE.BAT kann man alle Beispiele in einem Rutsch kompilieren.

F0CE-2E43-7583-3130-3030-3030-3131-0003-873F-000A
non-commercial
non-commercial

67: SmallBasic
Reiseziel:

66: ShowText
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ShowText 1.9; 1995; 0,2MB; Compiler


DOS
Gratis; Freeware
http://www.programmersheaven.com/zone22/cat254/267
2.htm
ShowText is a very versatile DOS-based colorascii-text-mode programming language with built-in
mouse support (FILE_ID.DIZ) +++ Zwar behauptet
ShowText von sich, es sei Shareware, doch sind
nirgendwo Bestellinformationen zu finden

Ausrstung:
Kosten:
Anreise:
Bemerkungen:

SmallBasic for Windows 0.7.0.15;


Interpreter
Windows
Gratis; Freeware
http://smallbasic.sourceforge.net
-

2001;

0,5MB;

Welterfahren entpacken wir die gar nicht so smalle, frisch heruntergeladene


SmallBasic-Archiv-Datei SBW32070.zip.
Hiernach starten wir die Datei SBPad.exe per Doppelklick und geben
folgenden kurzen Quelltext ein:
--------------------------- *schnipp* -----------------------------

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


SHWTXT19.ZIP. Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit
unserem Quelltext und speichern sie unter dem Namen bottles.st ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:

' ShowText version of 99 Bottles of beer (Bottles.st)


' Philipp Winterberg, http://www.winterbergs.de
INTKEYS CLEAR OFF\RST KEYCLK\NOCHK\CSR OFF\MOUSE OFF
COLOR 15,0\CLS\P+\P@ 25,1
%B=99
WHILE %B>0
PRINT %B,2Z;\PRINT " bottle(s) of beer on the wall,"
PRINT %B,2Z;\PRINT " bottle(s) of beer."
PRINT "Take one down, pass it around,"
%B--\PRINT %B,2Z;\PRINT " bottle(s) of beer on the wall."
SCROLL UP (1,1,25,80)\WAIT 1
WEND
EXITC

01:
02:
03:
04:
05:
06:

# SmallBasic version of 99 Bottles of beer (Bottles.bas)


# Philipp Winterberg, http://www.winterbergs.de

a=" bottle(s) of beer":c=" on the wall":cls


for b=99 to 1 step -1
?b;a+c+",":?b;a+".":?"Take one down, pass it around,":
?b-1;a+c+".":?
07: next

--------------------------- *schnapp* ----------------------------<F9> startet das Programm  *


stolz. Wir freuen uns mit.

DONE *

freut sich SmallBasic hinterher

--------------------------- *schnapp* -----------------------------

Kommandozeile stc bottles  BOTTLES.EXE (Total File Size (in


Bytes): 22672)  Aufruf mit Kommandozeile bottles oder per

79

80

68: SuperEASY
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

SuperEASY 1.0; 1997; 0,1MB; Compiler


DOS
Gratis; Freeware
http://mitglied.lycos.de/movaxworldhq/basic_compil
er.htm
If the IDE crashes and every time you try to
start it again, it refuses to run, try deleting
your IDEPREFS.DAT and make sure there's no
IDEPREFS .DATs on your system (SEASYW.TXT)

Superentspannt entpacken wir die frisch heruntergeladene Archiv-Datei


sebeta1.zip und starten IDE.EXE. Die Frage nach Defaultwerten
beantworten wir dankbar mit y <Enter>. SuperEASY, das.
Ein Blinky-Startbildschirm erscheint. O-ha. Press F1 for help at any
time na wenigstens das. Beruhigend. Wir drcken also <F1>. Der
Startbildschirm verschwindet, aber es kommt keine Hilfe. Beunruhigend.
Wir geben unser Programm ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:

' SuperEASY version of 99 Bottles of beer (Bottles.ez)


' Philipp Winterberg, http://www.winterbergs.de
a$=" bottle(s) of beer"
c$=a$+" on the wall"
d$="Take one down, pass it around,"
LOOP b FROM 101 TO 3 BY -1
SAY b+c$+","!+b+a$+"."!+d$
SAY b-1
SAY c$+"."!!
CYCLE

--------------------------- *schnapp* -----------------------------

69: T
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

T 2.0; 0,1MB; Interpreter


Windows
Gratis; Freeware
http://www.programmersheaven.com/zone22/cat254/164
80.htm
The T programming language is easy to
learn and user friendly (FILE_ID.DIZ)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei TN2.ZIP.


Die Setup-Routine (SETUP.EXE) ignorieren wir kurzerhand und starten
direkt TN.EXE. Mit <Strg><N> legen wir eine neue Datei an und geben
folgende Zeilen ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

% T version of 99 Bottles of beer (Bottles.t)


% Philipp Winterberg, http://www.winterbergs.de
program
var b : int := 99
loop
exit when b = 0
put b, " bottle(s) of beer on the wall,"
put b, " bottle(s) of beer."
put "Take one down, pass it around,"
b := b - 1
put b, " bottle(s) of beer on the wall."
end loop
end program

--------------------------- *schnapp* -----------------------------

Im Men whlen wir EASY | Make EXE File  NONAME.EXE wird generiert.
Okay. Mit <F5> starten wir das Programm. Funktioniert. Herrlich. Inzwischen bringt <F1> auch jederzeit Hilfe. Beruhigend.

81

Diese Datei mit File | Save As speichern unter bottles.t. Nun erzeugen
wir noch eine weitere neue Datei (<Strg><N>) in die wir nur eine einzige
Zeile schreiben bottles.t. Diese Datei mit dem Menbefehl File |
Save As speichern unter bottles.prt (im Speichern-Dialog als Dateityp
Projekt Files (*.prt) whlen).
Jetzt im Men Project | Load Project whlen und bottles.prt als
Dateinamen eingeben. Danach ist es mglich, das Projekt mit <F9> zu

82

starten. Es erscheint ein neues Fenster, in dem der Songtext ausgegeben


wird. Zufrieden meldet T noch All done! Gut so.
Hilfe bringt jederzeit <F1>. Sehen Sie sich bei Gelegenheit einige der TBeispielprojekte an

70: TMMLPTEALPAITAFNFAL
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

TMMLPTEALPAITAFNFAL; 2000; 0,1MB; Interpreter


Windows
Gratis; Freeware
http://p-nandq.com/humor/programming_languages/tmmlpteal.html
TMMLPTEALPAITAFNFAL ("The Multi-Million Language
Project To End All Language Projects And Isn't
That A Fine Name For A Language") is not a single
language, it is approximately 100.000.000.000.000.
000.000.000.000.000.000 languages in one small 26K
compiler
(p-nand-q.com/humor/programming_languag
es/tmmlpteal.html) +++ Esoterische Programmiersprache

Aufgeregt entpacken wir die frisch heruntergeladene Archiv-Datei t.zip


und erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext
und
speichern
sie
unter
dem
Namen
Bottles.TMMLPTEALPAITAFNFAL ab.
--------------------------- *schnipp* ----------------------------01: // TMMLPTEALPAITAFNFAL version of 99 Bottles of beer
(Bottles.TMMLPTEALPAITAFNFAL)
02: // Philipp Winterberg, http://www.winterbergs.de
03: //
04: // How to use:
05: // 1. Install TMMLPTEALPAITAFNFAL
06: // 2. Set system date to 2002-06-28 (important!!!)
07: // 3. Run and enjoy ;)
08: //
DECLARE CELL 100 AS READPOS
09:
DECLARE CELL 99 AS B
10:
DECLARE 10 AS NEWLINE
11:
DECLARE 0 AS ZERO
12:
WRITE CHAR NEWLINE
13:
COPY 99 TO B
14:
WRITE INTEGER B
15:

83

16:
17:
18: LINE 100:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40: LINE 200:
41:
42:

WHILE B > ZERO DO GOSUB 100


STOP
COPY "bottle(s) of beer on the wall,"
COPY 0 TO READPOS
WRITE INTEGER B
WHILE READPOS INDIRECT DO GOSUB 200
WRITE CHAR NEWLINE
WRITE INTEGER B
COPY "bottle(s) of beer.
"
COPY 0 TO READPOS
WHILE READPOS INDIRECT DO GOSUB 200
WRITE CHAR NEWLINE
COPY "Take one down, pass it around,"
COPY 0 TO READPOS
WHILE READPOS INDIRECT DO GOSUB 200
WRITE CHAR NEWLINE
COPY "bottle(s) of beer on the wall."
COPY 0 TO READPOS
SUB 1 FROM B
WRITE INTEGER B
WHILE READPOS INDIRECT DO GOSUB 200
WRITE CHAR NEWLINE
WRITE CHAR NEWLINE
RETURN
WRITE CHAR READPOS INDIRECT
ADD 1 TO READPOS
RETURN

TO CELL 0

TO CELL 0

TO CELL 0

TO CELL 0

--------------------------- *schnapp* -----------------------------

Stellen Sie das System-Datum Ihres PCs unbedingt vor dem Ausfhren des
Programms auf 2002-06-28, denn TMMLPTEALPAITAFNFAL ("The
Multi-Million Language Project To End All Language Projects And Isn't
That A Fine Name For A Language") is not a single language, it is
approximately 100.000.000.000.000. 000.000.000.000.000.000 languages
und deshalb gibt es jeden Tag unterschiedliche Befehle, Variablenrume
etc. Wow! An einem anderen Tag wrde das Programm also wahrscheinlich
gar nicht funktionieren.
Unbeirrter Drag & Drop von Bottles.TMMLPTEALPAITAFNFAL auf
TMMLPTEALPAITAFNFAL.exe oder Kommandozeile TMMLPTEALPAITAFNFAL
Bottles. TMMLPTEALPAITAFNFAL. Luft. Klasse.

84

71: TMT Pascal


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

TMT Pascal 3.90; 2002; 2,3MB; Compiler


Windows
Gratis; Freeware
http://www.tmt.com
-

starten. Wir erzeugen mit einem Texteditor eine Datei, fllen


sie mit unserem Quelltext und speichern sie unter dem Namen bottles.pas
im Unterverzeichnis \BIN.
tmtp390d.exe

Windows Hilfedatei
Pascal zu finden ist.

--------------------------- *schnapp* -----------------------------

Kommandozeile in diesem Verzeichnis: tmtpc bottles  Es wird eine


Datei bottles.exe (20kb) generiert, die wir mit dem befehl bottles
<Enter> gekonnt starten. Yeah. Im Unterverzeichnis \HELP liegt die

85

in der alles Wissenswerte ber TMT

72: Tokiwa
Reiseziel:
Ausrstung:
Kosten:
Anreise:

--------------------------- *schnipp* ----------------------------01: // TMT Pascal version of 99 Bottles of beer (Bottles.pas)


02: // Philipp Winterberg, http://www.winterbergs.de
03:
04:
program BoB99;
05:
06:
{$ifdef __GUI__}
07:
uses WinCRT; {+}
08:
{$endif} {+++++}
09:
var b: byte; a,
10:
c: string; begin
11:
a:= #32+#98+#111
12:
+#116+#116+#108+#101
13:
+#40+#115+#41+#32+#111
14:
+#102+#32+#98+#101+#101+
15:
#114; b:= 99; c:= #32+++
16:
#111+#110+#32+#116+#104+
17:
#101+#32+#119+#97+#108++
18:
#108; repeat writeln(b:2
19:
, a+c+#44+#13+#10,b:2, a
20:
+#46+#13+#10+#84+#97++++
21:
#107+#101+#32+#111+#110+
22:
#101+#32+#100+#111+#119+
23:
#110+#44+#32+#112+#97+++
24:
#115+#115+#32+#105+#116+
25:
#32+#97+#114+#111+#117++
26:
#110+#100+#44+#0);dec(b)
27:
;writeln(b:2, a+c+#46+++
28:
#13+#10);until b=0; end.

TMTHELP.HLP,

Bemerkungen:

Tokiwa 5.55; 1996; 0,1MB; Compiler


DOS
Gratis; Freeware
http://www.terra.es/personal/oxigeno2/BASIC.es/com
piladores_basic.htm
-

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


tokiwa.zip. Eine Installation ist nicht ntig. Wir erzeugen mit einem
Texteditor eine Datei, fllen sie mit unserem Quelltext und speichern sie
unter dem Namen bottles.bas ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:

* Tokiwa version of 99 Bottles of beer (Bottles.bas)


* Philipp Winterberg, http://www.winterbergs.de
call bottles(1," bottle(s) of beer"," on the wall")
subroutine bottles(b,a$,c$)
integer b
if b<100 then
call bottles(b+1,a$,c$)
print b; a$; c$; ","
print b; a$; "."
print "Take one down, pass it around,"
print b-1; a$; c$; "."; chr$(13); chr$(10)
endif
return
subend
end

--------------------------- *schnapp* -----------------------------

Kommandozeile: tbc bottles.bas  bottles.exe (780 Bytes)  Mit:


Kommandozeile bottles Programm starten; alternativ tbc bottles.bas
/c  bottles.com (748 Bytes). Fertig!

86

73: TRANSCRIPT
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

TRANSSCRIPT; 2002; 0,1MB; Interpreter


Windows; Perl
Gratis; Freeware
http://www.corknut.org/code/transcript
Esoterische Programmiersprache;

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


transcript15May2002.tar.gz. Da TRANSSCRIPT in Perl geschrieben
wurde, bentigen wir noch eine aktuelle Perl-Version: Wir laden also eine
herunter (http://www.activestate.com/Products/ActivePerl/?_x=1) und
starten die Installation durch Ausfhren der Datei ActivePerl-5.6.1.635MSWin32-x86.msi. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Dann erzeugen wir mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.trn ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:

' TRANSCRIPT version of 99 Bottles of beer (Bottles.trn)


' Philipp Winterberg, http://www.winterbergs.de

At Home with Friends


You are at home in your room with a few friends and lots of
beer.
06: That really looks like a Mission. ;-)
07: Joe, Till, Dominik, Peter and Juliet are here.
08: You can see some bottles, your wall, and some beer here.
09:
10: >GET BOTTLES
11: Taken.
12:
13: >SET WALL TO 99
14: You line up all 99 bottles in a long row.
15:
16: >SET BEER TO 99
17: You recheck the amount of bottles. YES! There are
18: 99 bottles and all of them do contain beer.
19:
20: >JOE, +BEER bottle(s) of beer on the wall,
21: Joe gets what you want and smiles.
22:
23: >TILL, +BEER bottle(s) of beer.
24: Till nods. Joe and Till will sing the first two lines
of the famous beer song.
25:
26: >DOMINIK, Take one down, pass it around,

87

27: Dominik agrees, but Peter also wants to sing that line
and freaks out.
28:
29: >PETER, Shut up!
30: He calms down...
31:
32: >JULIET, +BEER bottle(s) of beer on the wall.
33: She looks so sweet. I think she likes you.
34:
35: >KISS JULIET
36: Now everything is ready for the beer song. Really everything?
37:
38: >LIFT BOTTLES
39: Good job.
40:
41: >ATTACH BOTTLES TO WALL
42: All bottels are save now.
43:
44: >EXAMINE JOE
45: Joe sings his part and takes a sip.
46:
47: >EXAMINE TILL
48: Till looks funny.
49:
50: >EXAMINE DOMINIK
51: Dominik is tall and soon to be drunk.
52:
53: >DROP BEER
54: First one done. Some more to come.
55:
56: >EXAMINE JULIET
57: She sings her line, walks over to you and kisses you.
58:
59: >DETACH BOTTLES FROM WALL
60: You empty the other 97 bottles in just about no time.
61: Now you might want to leave this place and find a party.
62:
63: >QUIT
64: You have left the building.
--------------------------- *schnapp* -----------------------------

Kommandozeile im Verzeichnis perl transcript.pl bottles.trn. In


der Datei README.txt gibt es nheres zur Sprache, im Unterverzeichnis
\samples sind einige Beispiele.

88

74: True Basic


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

True Basic Bronze; 1998; 0,9MB; Interpreter


Windows
Gratis; Demo
http://www.truebasic.com/demo.asp
-

75: TsrBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.tru ab. Die
Installation von True Basic starten wir durch Ausfhren der Datei
BrDemSetup.exe. Dann durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

! True Basic version of 99 Bottles of beer (Bottles.tru)


! Philipp Winterberg, http://www.winterbergs.de

Erwartungsvoll entpacken wir die frisch heruntergeladene Archiv-Datei


TSRBASIC.ZIP. Achtung: entpacken Sie TsrBasic so, dass es in einem
Verzeichnis liegt, dessen Name nicht mehr als 8 Buchstaben hat. Das Ding
kommt aus einer anderen Welt und kann mit Verzeichnissen la
Superprogramm\tsrBasic nicht umgehen. Wir erzeugen ferner mit einem
Texteditor eine Datei, fllen sie mit unserem Quelltext und speichern sie
unter dem Namen bottles.bas ab.

FOR b = 99 TO 1 STEP -1
--------------------------- *schnipp* ----------------------------PRINT
PRINT
PRINT
PRINT
PRINT

b;" bottle(s) of beer on the wall,"


b;" bottle(s) of beer."
"Take one down, pass it around,"
b-1;" bottle(s) of beer on the wall."
" "

NEXT b
END

--------------------------- *schnapp* -----------------------------

Im Datei ffnen Dialog Bottles.tru whlen <Enter>  Im Men des


Source Window Run | Run whlen  Fertig. Ein neues Fenster (Output
Window) ffnet sich, in dem das Programm ausgefhrt wird. Schn.

89

TsrBasic 2.2; 1992; 0,1MB; Interpreter


DOS
Gratis; Freeware
http://www.programmersheaven.com/zone6/cat700/1639
9.htm
-

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:

10
20
30
40
42
50
60
70
80
90
99

' TsrBasic version of 99 Bottles of beer (Bottles.bas)


' Philipp Winterberg, http://www.winterbergs.de
a = " bottle(s) of beer" : c = " on the wall": init
csroff : foreground 0 : background 7 : blank : border
for b = 99 to 1 step -1
print b; a; c; "," : print b; a; "."
print "Take one down, pass it around,"
print (b-1); a; c; "." : print " "
next b
csron : end

--------------------------- *schnapp* -----------------------------

Dann starten wir TSRBASIC.EXE, geben am > Prompt load bottles.bas


<Enter> ein und starten das Programm mit dem Befehl run <Enter>.
Yeah! Schwarz auf Grau. Mit quit <Enter> beenden Sie TsrBasic.

90

76: Turbo C
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Turbo C 2.01; 1989; 1,0MB; Compiler


DOS
Gratis; Freeware
http://community.borland.com/article/0,1410,20841,
00.html
-

Interessiert entpacken wir die frisch heruntergeladene Archiv-Datei


tc201.zip und kopieren alle Dateien aus den Unterverzeichnissen DISK1,
DISK2, DISK3 in ein Verzeichnis. Dann starten wir INSTALL.EXE und geben
bei der Installation als Quelle das Verzeichnis an, das alle Dateien enthlt.
Im neuen Turbo C Verzeichnis (z.B. C:\TC) starten wir TC.EXE und geben
folgenden Code-Schnipsel ein:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

/* Turbo C version of 99 Bottles of beer (Bottles.c) */


/* Philipp Winterberg, http://www.winterbergs.de
*/
#include <stdio.h>
int b;

main() {
for (b = 99; b > 0; b--)
printf("%d bottle(s) of beer on the wall,\n%d %s\n%s
\n%d %s", b, b,
"bottle(s) of beer.", "Take one down, pass
11:
12: it around,", (b-1),
"bottle(s) of beer on the wall.\n\n");
13: }
--------------------------- *schnapp* -----------------------------

Mit <Strg><F9> kompilieren und starten wir das Programm. 8.541 Bytes hat
die im Hintergrund generierte Datei NONAME.EXE. Wenn Sie sie mitnehmen
wollen, sollten Sie die Datei umbenennen. :-)

77: Turbo Pascal for Win.


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Turbo Pascal for Windows; 1991; 0,4MB; Compiler


Windows 3.1
Gratis; Freeware
Verschollen
Luft leider nicht unter Windows XP

Sofern Ihnen harmoniemindernde Reiseumstnde ein Greul sind, ist von


der Reise dringend abzuraten. Sollten Sie wider Erwarten unbeugsam,
unerschtterlich und unternehmungslustig sein, bewahren Sie die folgenden
hilfreichen 28 Zeilen fr den unwahrscheinlichen Fall des Erfolgs
sicher in Ihrem Herzen:
--------------------------- *schnipp* ----------------------------01: { Turbo Pascal for Windows version of 99 Bottles of beer
(Bottles.pas) }
02: { Philipp Winterberg, http://www.winterbergs.de }
03:
04: program Bottles;
05:
06: uses wincrt;
07: var b: byte;
08:
09: function plural(anz_flaschen: byte): string;
10: begin
if anz_flaschen <> 1
11:
12:
then plural:= 's'
13:
else plural:= ''
14: end; {plural}
15:
16: begin
17:
screensize.y:= 1 + 99 * 5;
18:
inactivetitle:= ' 99 Bottles of beer ';
19:
initwincrt;
20:
for b:=99 downto 1 do
21:
begin
22:
writeln(b :2, ' bottle' + plural(b) + ' of beer on
the wall, ');
23:
writeln(b :2, ' bottle' + plural(b) + ' of beer.');
24:
writeln('Take one down, pass it around,');
25:
writeln((b-1) :2, ' bottle' + plural(b-1) + ' of beer on
the wall.');
26:
writeln
27:
end
28: end. {Bottles}
--------------------------- *schnapp* -----------------------------

91

92

TPWTEST.ZIP entpacken  Eine Installation ist nicht ntig  Datei |


Neu  Programm eingeben und mit <Strg><F9> ausfhren: ein neues
Fenster ffnet sich, in dem gemchlich der Songtext erscheint. Die Datei
Noname00.exe wird parallel und automatisch im Hintergrund erzeugt (10kb).

21:
22:
23:
24:
25:

writeln((b-1), ' bottle' + plural(b-1) + ' of beer on


the wall.');
dec(b)
until b = 0;
readln;
end. {Bottles}

--------------------------- *schnapp* -----------------------------

78: Turbo Pascal


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Turbo Pascal 5.5; 1989; 0,9MB; Compiler


DOS
Gratis; Freeware
http://community.borland.com/article/0,1410,20803,
00.html
-

Neugierig entpacken wir die frisch heruntergeladene Archiv-Datei tp55.zip


und kopieren alle Dateien aus den Unterverzeichnissen DISK1 und DISK2 in
das Verzeichnis c:\TP, dann starten wir INSTALL.EXE und geben bei der
Installation als Quell-/Zielverzeichnis c:\TP an. Im neuen Turbo Pascal
Verzeichnis TURBO.EXE starten und Sode eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:

{ Turbo Pascal version of 99 Bottles of beer (Bottles.pas) }


{ Philipp Winterberg, http://www.winterbergs.de }
program Bottles;

79: Turbo PL
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Turbo PL 1.2; 2001; 0,9MB; Compiler


DOS
Gratis; Freeware
http://www.turbo-pl.com
-

Erwartungsvoll entpacken wir die frisch heruntergeladene Archiv-Datei


turbo12.zip und starten die Installation durch Ausfhren der Datei
SETUP.EXE. Dann durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
TURBO.BAT im Verzeichnis C:\jmksf\TURBO starten wir und befehlen new
Turbo
Main
bottles.tmc <Enter>  pe antwortet: Creating:
Code...Done  Wir befehlen edit <Enter>, lschen den vordefinierten
Code und ersetzen ihn durch unser Programm:

var b: byte;
--------------------------- *schnipp* ----------------------------function plural(anz_flaschen: byte): string;
begin
if anz_flaschen <> 1
then plural:= 's'
else plural:= ''
end; {plural}

begin
b:= 99;
repeat
writeln(b, ' bottle' + plural(b) + ' of beer on the
wall, ');
19:
writeln(b, ' bottle' + plural(b) + ' of beer.');
20:
writeln('Take one down, pass it around,');

93

Mit <Strg><F9> ausfhren. Compiler | Destination von Memory auf


Disk umstellen und <Alt><F9> drcken  3.312 Bytes - NONAME.EXE.

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:

> Turbo PL version of 99 Bottles of beer (Bottles.tmc)


> Philipp Winterberg, http://www.winterbergs.de
Clear.
Declare %b%.
Set %b%='99'.
Loop %b%>'1'.
Pout %b%:
Pout " bottle(s) of beer on the wall,".
Pout %b%:
Pout " bottle(s) of beer.".
Pout "Take one down, pass it around,".
%Calc %b%-'1'.
Pout %b%:
Pout " bottle(s) of beer on the wall.".

94

81: unbabtized

15:
Pout "".
16: Endloop.
17: Sec '1'.
--------------------------- *schnapp* -----------------------------

Mit Datei | Speichern sichern wir die Datei, dann Datei | Beenden.
Zurck in der PE befehlen wir sogleich run <Enter> zum Starten des
Programms. Luft. Herrlich. Schnell noch eine .EXE-Datei erzeugen?
Geben Sie compile <Enter> ein. File was compiled sucessfully!
Super. BOTTLES.EXE (72kb) wurde generiert. Kostenlos. In der Datei
MANUAL.MAN im Unterverzeichnis MANUALS finden Sie eine ausfhrliche
deutsche Anleitung.

80: UBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

UBasic 8.8c; 1998; 0,1MB; Interpreter


DOS
Gratis; Freeware
ftp://ftp.simtel.net/pub/simtelnet/msdos/ubasic
-

--------------------------- *schnipp* ----------------------------10


20
30
40
50
60
70
80
90
99

' UBasic version of 99 Bottles of beer (Bottles.bas)


' Philipp Winterberg, http://www.winterbergs.de
for b=99 to 1 step -1
? b, " bottle(s) of beer on the wall,"
? b, " bottle(s) of beer."
? "Take one down, pass it around,"
? b-1, " bottle(s) of beer on the wall."
?
next

95

Da unbabtized in Python geschrieben wurde, bentigen wir zunchst eine


aktuelle Version von http://www.python.org/download: Python-2.3.3.exe.
Starten Sie den Installer und klicken Sie sich durch. Entpacken Sie
anschlieend unbabtized.zip.
Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext (nur die Zahlenreihen) und speichern sie unter dem Namen
Bottles.u ab.

<Enter>.

01: unbabtized version of 99 Bottles of beer (Bottles.u)


02: Philipp Winterberg, http://www.winterbergs.de
03:
04: !0,99.!1,1.,.@0.:98.:111.:116.:116.:108.:101.:40.:115.:41.
:32.:111
05: .:102.:32.:98.:101.:101.:114.:32.:111.:110.:32.:116.:104.:1
01.:32
06: .:119.:97.:108.:108.:44.:13.:10.@0.:98.:111.:116.:116.:108
.:101
07: .:40.:115.:41.:32.:111.:102.:32.:98.:101.:101.:114.:46.:13.
:10.:84
08: .:97.:107.:101.:32.:111.:110.:101.:32.:100.:111.:119.:110.:
44.:32
09: .:112.:97.:115.:115.:32.:105.:116.:32.:97.:114.:111.:117.:1
10.:100
10: .:44.:13.:10.(0,1.@0.:98.:111.:116.:116.:108.:101.:40.:115
.:41.:32
11: .:111.:102.:32.:98.:101.:101.:114.:32.:111.:110.:32.:116.:1
04.:101
12: .:32.:119.:97.:108.:108.:46.:13.:10.:13.:10.-0
--------------------------- *schnapp* -----------------------------

--------------------------- *schnapp* -----------------------------

In eine neue Zeile schreiben wir run und drcken


guten alten Zeiten.

Bemerkungen:

unbabtized; 2000; 0,1MB; Interpreter


Windows; Python
Gratis; Freeware
http://p-nandq.com/humor/programming_languages/unbabtized.html
Esoterische Programmiersprache

--------------------------- *schnipp* -----------------------------

Gekonnt entpacken wir die frisch heruntergeladene UBasic-Archiv-Datei


ub16i88c.zip, starten ubibm.exe und geben folgenden Quelltext ein:
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

Reiseziel:
Ausrstung:
Kosten:
Anreise:

Luft. Wie in

Kommandozeile: c:\python23\python unbabtized.py bottles.u 


Riesiges Chaos: Maximale Rekursionstiefe berschritten etc. wenn wir in
der ersten zeile !0,99 in !0,3 ndern, geht es. Dann ist der Songtext
zwar nicht komplett, aber wenigstens strzt der Interpreter nicht ab.
Hausaufgabe: Schreiben Sie einen Interpreter, der besser und stabiler ist!

96

82: VBA/Access
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Visual Basic for Applications in Microsoft Access


Windows
Variabel; Software
http://www.microsoft.com
-

83: VBScript
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

VBScript
Windows
Variabel; Software
http://www.microsoft.com
-

Eine VBA-Version (VBA = Visual Basic for Applications), die mit


Microsoft Access ausgefhrt werden kann:

Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen Bottles.vbs ab.

--------------------------- *schnipp* -----------------------------

--------------------------- *schnipp* -----------------------------

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

' VBA/Access version of 99 Bottles of beer (Bottles.mdb)


' Philipp Winterberg, http://www.winterbergs.de
'
' How to use:
' 1. Create a new database (Bottles.mdb)
' 2. Create a new module
' 3. Paste this code snippet
' 4. Click "Play"-button and enjoy ;)
'
Public Function Bottles()
On Error GoTo Bottles_Err
Dim b As Integer
For b = 99 To 1 Step -1
If MsgBox(b & " bottle(s) of beer on the wall, " & vbCr & b
& " bottle(s) of beer." & vbCr & _
"Take one down, pass it around, " & vbCr & (b - 1)
& " bottle(s) of beer on the wall.", _
65, "99 Bottles of Beer") = 2 Then
Exit Function
End If
Next

17:
18:
19:
20:
21:
22: Bottles_Exit:
23:
Exit Function
24:
25: Bottles_Err:
26:
MsgBox Error$
27:
Resume Bottles_Exit
28:
29: End Function

--------------------------- *schnapp* -----------------------------

Wie das geht erkunden Sie ausnahmsweise wieder selbst. Das schaffen Sie.
Ich vertraue. Viel Erfolg.

97

01: ' *short* VBScript/WSH version of 99 Bottles of beer


(Bottles.vbs)
02: ' Philipp Winterberg, http://www.winterbergs.de
03: For b = 99 To 1 Step -1
04:
WScript.Echo b & " bottle(s) of beer on the wall, " & b
& " bottle(s) of beer."
05:
WScript.Echo "Take one down, pass it around, " & (b-1)
& " bottle(s) of beer on the wall."
06: Next
--------------------------- *schnapp* -----------------------------

Per Doppelklick kann die Datei nun mit dem Windows Script Host (WSH)
ausgefhrt werden. Dabei empfiehlt es sich, CScript.exe zum Ausfhren
zu benutzen, da WScript.exe die Echo-Standardausgabe in einer Dialogbox
macht, was etwas nerven kann...

84: Visual DialogScript


Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Visual DialogScript 5.01; 2004; 3,2MB; Interpreter


Windows
$99,00; Shareware
http://www.dialogscript.com
-

Wir starten die Installation durch Ausfhren der Datei vds501en.exe. Jetzt
durchklicken (Okay, Ja, Weiter, Danke, Fertig etc. Visual DialogScript wird
von Installer gestartet. Danke.
Den Tipp des Tages klicken wir weg, legen eine neue Datei mit
<Strg><N> an und geben folgenden Source Code ein:

98

--------------------------- *schnipp* ----------------------------01: rem Visual DialogScript version of 99 Bottles of beer


(Bottles.dsc)
02: rem Philipp Winterberg, http://www.winterbergs.de
03:
04: DIALOG CREATE,99 Bottles of Beer,-1,0,600,400
05: DIALOG ADD,TEXT,B,23,23,400,200
06: DIALOG SHOW
07: %A = " bottle(s) of beer"
08: %B = 99
09: %C = " on the wall"
10: %D = Take one down, pass it around,
11: WHILE @GREATER(%B, 0)
DIALOG SET,B,%B%A%C","@CR()%B%A.@CR()%D@CR()@PRED(%B)%A%C.
12:
@CR()@CR()
%B = @PRED(%B)
13:
WAIT 2
14:
15: WEND
16: DIALOG CLOSE
17: EXIT

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:

// WebL version of 99 Bottles of beer (Bottles.webl)


// Philipp Winterberg, http://www.winterbergs.de
var b = 99;

while b > 0 do
PrintLn(b, " bottle(s) of beer on the wall,\n",
b, " bottle(s) of beer.\n", "Take one down,
pass it around,\n",
(b - 1), " bottle(s) of beer on the wall.\n");
09:
b = b - 1
10:
11: end

--------------------------- *schnapp* -----------------------------

Kommandozeile java
luft gar nicht...

jar webL.jar bottles.webl

 Schade: WebL

--------------------------- *schnapp* -----------------------------

Ausfhren knnen wir das Programm mit <F9>: ein Dialogfenster ffnet
sich, in dem das Lied Strophe fr Strophe ausgegeben wird. Wenn Sie aktiv
mitsingen mchten, passen Sie den Befehl wait 2 einfach Ihrer
persnlichen Singgeschwindigkeit an.

86: WIL
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

85: WebL
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

WebL 3.0h; 1999; 1,2MB; Interpreter


Windows; Java Virtual Machine
Fraglich; Freeware
http://research.compaq.com/SRC/WebL
WebL steht fr Compaq's Web Language

WebL bentigt zunchst eine mchtige Java Virtual Machine


(http://www.java.com/de/download/manual.jsp  Download  Installation durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.)). Gespannt
entpacken wir die frisch heruntergeladene Archiv-Datei WebL3.0h.zip und
erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem Quelltext
und speichern sie unter dem Namen bottles.webl ab.

99

WIL in WebBatch; 1,1MB; Interpreter


Windows
Variabel; Shareware
http://webbatch.windowware.com/webcgi/webbatch.exe
?budu/weber.web+index.weber+60dayeval+null
WILL steht fr Windows Interface Language und
wird in WebBatch verwendet; Fr WebBatch muss ein
kostenloser
Evaluationskey
auf
der
Website
angefordert werden

Entpacken Sie vorsichtig die Datei eb44i06c.zip und starten Sie behutsam
die Installationsroutine ber Setup.exe. Klicken Sie sich weise bis zum
Ende durch und geben Sie den Evaluationskey ein, den Sie per E-Mail
erhalten haben (siehe Bemerkungen). Unter Start | Programme | Webbatch
wartet das Abenteuer! Wo ist WIL versteckt? Wohin mit dem Programm?
Wo wird es gefhrlich? Fragen, auf die Sie ausnahmsweise keine Antwort
erhalten. Auer dieser: Alles ist da. Sogar noch mehr. Umwege erhhen die
Ortskenntnis. Sie schaffen das. Und los!
--------------------------- *schnipp* ----------------------------01: ; WIL version of 99 Bottles of beer (Bottles.wbt)
02: ; Philipp Winterberg, http://www.winterbergs.de

100

03:
04:
05:
06:
07:
08:

c = " on the wall"


a = " bottle(s) of beer"
d = "Take one down, pass it around,"
for b = 1 to 99
display(2, "", StrCat(100-b,a,c,",",@CRLF,
100-b,a,".",@CRLF,d,@CRLF,99-b,a,c,"."))
09: next
10: exit
--------------------------- *schnapp* -----------------------------

Geheimtipp: WIL ist auch in WinBatch versteckt. Sie knnen also auch mit
obigem Code die nchste Reise antreten. Zwar haben Sie dann keine
hbsche Eule im Fenster, aber angekommen ist angekommen:

Interessiert entpacken wir die frisch heruntergeladene Archiv-Datei


Wir starten die Installation durch Ausfhren der Datei
setup.exe. Dann durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen Bottles.wbt ab.
wb44i06c.zip.

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:

; WinBatch version of 99 Bottles of beer (Bottles.wbt)


; Philipp Winterberg, http://www.winterbergs.de
a=" bottle(s) of beer"
b=99
c=" on the wall"
d="Take one down, pass it around,"
BoxOpen("99 Bottles of Beer", "")
while b>0
BoxText (StrCat(b,a,c,",",@CRLF,b,a,".",@CRLF,d,@CRLF,
b-1,a,c,"."))
TimeDelay(2)
b=b-1
endwhile
BoxShut()
Exit

--------------------------- *schnapp* ----------------------------Bottles.wbt

im Explorer doppelklicken. Fertig:

87: WinBatch
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

101

WinBatch 2006c; 2006; 4,5MB; Interpreter


Windows
$99,95; Shareware
http://www.winbatch.com/winbatch.html
-

102

88: wxBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

wxBasic 0.52; 2002; 0,5MB; Interpreter


Windows
Gratis; Freeware
http://wxbasic.sourceforge.net
-

Erwartungsvoll entpacken wir die frisch heruntergeladene Archiv-Datei


wxbasic-0.52.zip und erzeugen mit einem Texteditor eine Datei, fllen sie
mit unserem Quelltext und speichern sie unter dem Namen bottles.wx ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:

// wxBasic version of 99 Bottles of beer (Bottles.wx)


// Philipp Winterberg, http://www.winterbergs.de
a$=" bottle(s) of beer" : A$= a$ + " on the wall"
B$=".\nTake one down, pass it around,\n"
for b = 99 to 1 step -1
? b; A$; ",\n"; b; a$; B$; b-1; A$; ".\n"
next

--------------------------- *schnapp* -----------------------------

Drag & Drop von bottles.wx auf wxbasic.exe  Es ffnet sich ein
kleines Konsolenfenster (Titel: Console), in dem das Programm
ausgefhrt wird. Fertig.
Die ber 100seitige Dokumentation wxbasic.pdf, die auf der Website
erhltlich ist, sei wxBasic-Interessenten ans Herz gelegt.

89: XBasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Xbasic 6.2.3; 2000; 2,8MB; Interpreter


Windows
Gratis; Freeware
http://www.xbasic.org
-

Wir starten die Installation durch Ausfhren der Datei xbasic-6.2.3.exe.


Dann durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).

103

Start | Programme | XBasic | XBasic  Ein hssliches Kind, diese


XBasic IDE: grau, schbige symbole. Unser Programm schreiben wir lieber
im Texteditor und speichern es unter dem Namen bottles.x.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:

' XBasic version of 99 Bottles of beer (Bottles.x)


' Philipp Winterberg, http://www.winterbergs.de
'
PROGRAM "99 Bottles of beer"
VERSION "1.0"
DECLARE FUNCTION Bottles ()
FUNCTION Bottles ()
FOR b = 99 TO 1 STEP -1
PRINT b; " bottle(s) of beer on the wall,"
PRINT b; " bottle(s) of beer."
PRINT "Take one down, pass it around,"
PRINT b-1; " bottle(s) of beer on the wall."
PRINT " "
NEXT b
END FUNCTION
END PROGRAM

--------------------------- *schnapp* -----------------------------

In XBasic whlen wir mit der Maus den Menbefehl file | load. Im
Dialog doppelklicken wir dann auf unsere Datei Bottles.x. Mit run |
start fhren wir unser Programm aus. Der Songtext wird im Fenster mit
dem Titel Console ausgegeben. XBasic meldet zufrieden: compiled 14
lines -> 1040 bytes. Zufrieden sind auch wir.

90: XLISP-PLUS
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

XLISP-PLUS 3.04; 2000; 0,3MB; Interpreter


Windows
Gratis; Freeware
http://almy.us/xlisp.html
-

Interessiert entpacken wir die frisch heruntergeladene Archiv-Datei


xl304win.zip. Ein Installation ist nicht erforderlich. Wir erzeugen mit
einem Texteditor eine Datei, fllen sie mit unserem Quelltext und
speichern sie unter dem Namen Bottles.lsp ab.

104

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:

;;; XLISP-PLUS version of 99 Bottles of beer (Bottles.lsp)


;;; Philipp Winterberg, http://www.winterbergs.de
(setq b 99)
(loop
(format t "~D bottle(s) of beer on the wall,~%" b)
(format t "~D bottle(s) of beer.~%" b)
(format t "Take one down, pass it around,~%")
(setq b (- b 1))
(format t "~D bottle(s) of beer on the wall.~%~%" b)
(when (= b 0) (return))
)

--------------------------- *schnapp* -----------------------------

Drag & Drop von Bottles.lsp auf xlwin32.exe im Unterverzeichnis \bin


des Verzeichnisses, in das wir die Datei xl304win.zip entpackten. Es ffnet
sich ein XLISP-PLUS Fenster und das Programm wird zuverlssig
ausgefhrt. Brav.

--------------------------- *schnipp* ----------------------------01:


02:
03:
04:
05:
06:
07:
08:
09:
10:

# XOTcl version of 99 Bottles of beer (Bottles.xotcl)


# Philipp Winterberg, http://www.winterbergs.de
for {set b 99} {$b > 0} {} {
puts "$b bottle(s) of beer on the wall,"
puts "$b bottle(s) of beer."
puts "take one down, pass it around,"
incr b -1
puts "$b bottle(s) of beer on the wall.\n"
}

--------------------------- *schnapp* -----------------------------

Jetzt Tcl starten c:\tcl\bin\tclsh84

und package require


eingeben, dann mit
dem Kommando tclsh c:/tcl/bottles.xotcl <Enter> unser Programm
starten. Cool! Mit dem Befehl exit beenden Sie Tcl.
<Enter>

XOTcl; namespace import -force xotcl::* <Enter>

92: XPL0
91: XOTcl
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

XOTcl 1.2.0; 2004; 1,1MB; Interpreter


Windows; Tcl/Tk
Gratis; Freeware
http://www.xotcl.org
XOTcl is an extension to the object-oriented
scripting language OTcl which itself extends Tcl
(Tool Command Language) (tutorial.html)

XOTcl bentigt eine installierte Version von Tcl 8.4, also herunterladen
(http://www.activestate.com/Products/Download/Download.plex?id=Acti
veTcl) und die Installation durch Ausfhren der Datei ActiveTcl8.4.6.0win32-ix86-93230.exe starten. Jetzt durchklicken (Okay, Ja, Weiter, Danke,
Fertig etc.) und standardmig ins Verzeichnis c:\tcl installieren.
Gespannt entpacken wir anschlieend die ebenfalls frisch heruntergeladene
Archiv-Datei xotcl-1.2.0-win32-tcl8.4.5.zip und installieren XOTcl mit:
Kommandozeile: c:\tcl\bin\tclsh84 installwin.tcl c:/tcl <Enter>.
Wir erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen c:\tcl\bottles.xotcl ab.

105

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

XPL0 2.4.5; 2003; 0,3MB; Compiler


DOS
Gratis; Freeware
http://www.idcomm.com/personal/lorenblaney
Less cryptic than C, less formal than Pascal, and
more powerful than BASIC (FILE_ID.DIZ)

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei XPL0245.ZIP und erzeugen mit einem Texteditor eine Datei, fllen sie mit
unserem Quelltext und speichern sie unter dem Namen bottles.xpl ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

\ XPL0 version of 99 Bottles of beer (Bottles.xpl)


\ Philipp Winterberg, http://www.winterbergs.de
code CRLF=9, INTOUT=11, TEXT=12;
integer B;
begin
B:= 99;
repeat
INTOUT(0, B); TEXT(0, " bottle(s) of beer on
the wall,"); CRLF(0);

106

11:
12:
13:
14:

INTOUT(0, B); TEXT(0, " bottle(s) of beer."); CRLF(0);


TEXT(0, "Take one down, pass it around,"); CRLF(0);
B:= B - 1;
INTOUT(0, B); TEXT(0, " bottle(s) of beer on
the wall."); CRLF(0);
CRLF(0)
15:
until B = 0
16:
17: end
--------------------------- *schnapp* -----------------------------

Kommandozeile x bottles <Enter>  BOTTLES.COM (17kb); XPLO


meldet: SAVING .COM FILE TO DISK... FILE SAVED; PROGRAM CREATED
Na, wenn das kein Grund zur Freude ist! Programm ausfhren mit:
Kommandozeile bottles <Enter>.
Das ber 100 Seiten starke Manual (MANUAL.DOC) bringt Ihnen alle Aspekte
der Sprache nahe wenn Sie sich die Zeit dafr nehmen.

around,\n", n - 1, " bottle(s) of beer on the wall.


\n"</print>
06: </for>
--------------------------- *schnapp* -----------------------------

Kommandozeile: c:\python23\python xs2py.py bottles.xs <Enter> 


XS arbeitet kurz, meldet dann: Finished. Type python temp.py to
execute Ganz so einfach ist es nicht, da wir ja noch die Pfadangabe fr
Python bercksichtigen mssen, also tippen wir c:\python23\python
temp.py<Enter>  Wunderbar!
Viel mehr ist in XS leider zur Zeit nicht mglich: I just implemented
enough features to get hello world and 99 bottles of beer to
work

schreibt der Autor in der Dokumentation. Aha.

94: xScript
93: XS
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

XS; 2002; 0,1MB; Crossinterpreter


Windows ; Python
Gratis; Freeware
http://www.markcarter.me.uk/computing/xs.html
Zwar steht oben 0,1MB, da dies die kleinste dort
angebbare Gre ist, genau genommen ist XS aber
nur winzige 2kb gro

Da der XS-Crossinterpreter in Python geschrieben wurde, bentigen wir


zunchst eine aktuelle Version von http://www.python.org/download:
Python-2.3.3.exe. Starten Sie den Installer und klicken Sie sich durch.
Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei xs.zip
und erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.xs ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:

107

<for
c1 = "XS version of 99 Bottles of beer (Bottles.xs)"
c2 = "Philipp Winterberg, http://www.winterbergs.de"
var = "n" from = "99" to = "0" step = "-1">
<print>n, " bottle(s) of beer on the wall,\n", n,
" bottle(s) of beer.\nTake one down, and pass it

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

xScript 3.0; 2002; 7,7MB; Interpreter


Windows
519,00; Demo
http://www.intelligent-datasystems.de/products/xcdownload.html
Die Sprache xScript wird innerhalb des Programms
xCOMPOSER.pro verwendet

Wir starten die Installation durch Ausfhren der frisch heruntergeladenen


Datei pro_demo.exe. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig
etc.). Desktop: xComposer Icon doppelklicken  Im Startdialog neue
Prsentation erzeugen anklicken  <Strg><Shift><S> drcken fr
xScript-Ereignissteuerung; onConstruct markieren, dann Button >>
klicken  In der Textbox unterhalb der Ereignisliste unser Programm
eingeben:
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:

rem xScript version of 99 Bottles of beer (Bottles.xs)


rem Philipp Winterberg, http://www.winterbergs.de
int b
string a,c,d,n
a = " bottle(s) of beer"
c = " on the wall"

108

08: d = "Take one down, pass it around,"


09: n = chr(13) + chr(10)
for b = 99 to 1 step -1
10:
DisplayString cstr(b)+a+c+","+n+cstr(b)+a+"."
11:
+n+d+n+cstr(b-1)+a+c+"."
next
12:

Datei Doppelklicken  Ausfhrung  Am Ende fordert der


Interpreter ---Program done, press RETURN---. Okay. Wird gemacht.
Start | Programme | Yabasic | Docu ffnet bei Bedarf die YabasicDokumentation.

--------------------------- *schnapp* -----------------------------

Button OK klicken. <Strg><T> startet das xScript. Jede Strophe erscheint


in einem Dialog, den man mit OK besttigen muss. Etwas nervig,
zugegeben. Unter Hilfe | xScript... gibt es ausfhrliche Informationen
zur Struktur der Sprache und zu jedem Befehl. Vielleicht haben Sie ja auch
Lust, einfach eine Prsentation zu erstellen die Gelegenheit ist gnstig.

95: Yabasic
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Yabasic 2.744; 2004; 0,2MB; Interpreter


Windows
Gratis ; Freeware
http://www.yabasic.de
yabasic implements some more advanced programming-constructs like subroutines or libraries
(yabasic.htm)

Wir starten die Installation durch Ausfhren der Datei yabasic2.744.bin.exe. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.). Wir
erzeugen mit einem Texteditor eine Datei, fllen sie mit unserem Quelltext
und speichern sie unter dem Namen Bottles.yab ab.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:

rem Yabasic version of 99 Bottles of beer (Bottles.yab)


rem Philipp Winterberg, http://www.winterbergs.de

b = 99
while (b > 0)
print b, " bottle(s) of beer on the wall,"
print b, " bottle(s) of beer."
print "Take one down, pass it around,"
b = b - 1
print b, " bottle(s) of beer on the wall." + chr$(13)
+ chr$(10)
11: wend

96: Yacas
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Yacas 1.0.54; 2003; 0,5MB; Interpreter


Windows
Gratis; Freeware
http://yacas.sourceforge.net/yacas.html
Yacas steht fr Yet Another Computer
System

Algebra

Gespannt entpacken wir die frisch heruntergeladene Archiv-Datei


YacasWindowsBinary-1.0.54.zip und erzeugen mit einem Texteditor eine
Datei, fllen sie mit unserem Quelltext und speichern sie unter dem
Namen bottles.ys im Unterverzeichnis \winrel des Verzeichnisses, in das
die Dateien entpackt wurden.
--------------------------- *schnipp* ----------------------------01: // Yacas version of 99 Bottles of beer (Bottles.ys)
02: // Philipp Winterberg, http://www.winterbergs.de
03:
04: For (b := 99, b > 0, b--)
Echo({b, "bottle(s) of beer on the wall," : Nl(),
05:
06:
b, "bottle(s) of beer." : Nl(),
07:
"Take one down, pass it around," : Nl(),
b - 1, "bottle(s) of beer on the wall." : Nl()});
08:
--------------------------- *schnapp* -----------------------------

Kommandozeile: yacas bottles.ys  Luft! Nach vollendeter Arbeit


verkndet Yacas noch kurz, dass es jetzt wieder aufhrt: Quitting.... In
Ordnung. Tschs.

--------------------------- *schnapp* -----------------------------

109

110

97: Yoix
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

98: Zeno

Yoix 1.1.0a; 2000; 1,8MB; Interpreter


Windows; Java Virtual Machine
Gratis ; Freeware
http://www.research.att.com/sw/tools/yoix/index.ht
ml
many familiar constructs from both Java and C
plus a few twists of its own. (yoix_intro.pdf)

Ein Name wie ein Sterbe- oder Wrgegerusch aus einem Comic. Vielleicht
auch ein Laut der verblfften Ratlosigkeit? Entscheiden Sie. Da der YoixInterpreter in Java programmiert wurde, bentigen wir fr unsere
Unternehmung zunchst eine gewaltige und mchtige virtuelle Maschine,
eine Java Virtual Machine (http://www.java.com/de/download/manual.jsp
 Download  Installieren).
Kommandozeile: java Yoix1_1_0a im Verzeichnis, in das
Yoix1_1_0a.class heruntergeladen wurde  Yoix Installer durchklicken.
Wir erzeugen nun mit einem Texteditor eine Datei, fllen sie mit unserem
Quelltext und speichern sie unter dem Namen bottles.yx im
unterverzeichnis \bin des Verzeichnisses, in das Yoix installiert wurde 
Drag & Drop der Datei bottles.yx auf yoix.bat oder Kommandozeile
yoix bottles.yx  Fertig!
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:

// Yoix version of 99 Bottles of beer (Bottles.yx)


// Philipp Winterberg, http://www.winterbergs.de
import yoix.stdio.printf;

for (b = 99 ; b > 0 ; b--)


printf("%d %s\n%d %s\n%s\n%d %s\n\n", b, "bottle(s) of beer
on the wall,",
08:
b, "bottle(s) of beer.", "Take one down, pass it
around,",
(b - 1), "bottle(s) of beer on the wall.");
09:
--------------------------- *schnapp* -----------------------------

Die

Dokumentation gibt

es

als

Download

oder

online

Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

Zeno 1.2; 2003; 0,8MB; Interpreter


Windows
$50,00; Shareware
http://home.att.net/~srschmitt/zeno.html
180 Tage Evaluation

Gekonnt entpacken wir die frisch heruntergeladene Archiv-Datei


ZENO12.zip und starten die Installation durch Ausfhren der Datei
SETUP.EXE. Jetzt durchklicken (Okay, Ja, Weiter, Danke, Fertig etc.).
Start | Programme | Zeno 1.2  Programm eingeben  Speichern mit
<Strg><S> unter dem Namen bottles.zen  <F7> zum Ausfhren.
--------------------------- *schnipp* ----------------------------01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

% Zeno version of 99 Bottles of beer (Bottles.zen)


% Philipp Winterberg, http://www.winterbergs.de
var b : int := 99
program
while b > 0
put b:2, " bottle(s) of beer on the wall,"
put b:2, " bottle(s) of beer."
put "Take one down, pass it around,"
decr b
put b:2, " bottle(s) of beer on the wall."
put " "
end while
end program

--------------------------- *schnapp* -----------------------------

Clear the output window fragt Zeno, Ja sagen wir. Der Songtext wird
korrekt ausgegeben, dann meldet Zeno militrisch --- All done! ---.
Okay! Danke! Wegtreten!

unter

http://www.research.att.com/sw/tools/yoix/doc/index.html

111

112

99: ZT
Reiseziel:
Ausrstung:
Kosten:
Anreise:
Bemerkungen:

ZT 1.0; 2002; 0,1MB; Interpreter


Plattformunabhngig
Gratis; Freeware
http://www.p78.de/software/zt.php
ZT steht fr Zer0 Tolerance
gesprochen

und

wird

Hier schliet sich der Kreis: Die Weltreise endet wie sie begann
vergleichsweise mild: Keine Installation, keine wilden Packete. Wir surfen
mit
einem
Browser
Ihrer
Wahl
zur
Interpreter-URL
(http://www.78.de/software/ztint.php) und sind bereits am Ziel. ZT.
Glckwunsch! Das war einfach.
Wir lschen den Inhalt der Textbox mit der Beschriftung Quelltext und
fgen dort folgende Zeilen ein:
--------------------------- *schnipp* ----------------------------01: ZT<>..........................................................
..............
02: <>ZT.....ZT version of 99 Bottles of beer (Bottles.zt)........
..............
03: ...>ZT>..Philipp Winterberg, http://www.winterbergs.de........
..............
04: .<63<.........................................................
..............
05: ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT
<>ZT<>ZT<>....
06: <>0<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>
ZT<>ZT<>ZT<>..
07: ZT<>20<>62<>6F<>74<>74<>74<>6C<>65<>28<>73<>29<>20<>6F<>66<>20
<>62<>65<>65<>
08: ><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><
ZT><ZT><ZT<<ZT
09: ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
>>ZT>>ZT>>ZT>>
10: <>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
ZT>>ZT>>ZT>>ZT
11: ZT<>72<>20<>6F<>6E<>20<>74<>68<>65<>20<>77<>61<>6C<>6C<>2C<>0D
<>0A<>ZT<>ZT<>
12: ><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><
ZT><ZT><ZT<<ZT
13: ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
>>ZT>>ZT>>ZT>>
14: <>0>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
ZT>>ZT>>ZT>>ZT

113

15: ZT<>20<>62<>6F<>74<>74<>74<>6C<>65<>28<>73<>29<>20<>6F<>66<>20
<>62<>65<>65<>
16: ><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><
ZT><ZT><ZT<<ZT
17: ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
>>ZT>>ZT>>ZT>>
18: <>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
ZT>>ZT>>ZT>>ZT
19: ZT<>72<>2E<>0D<>0A<>54<>61<>6B<<65<>20<>6F<>6E<>65<>20<>64<>6F
<>77<>6E<>2C<>
20: ><ZT><ZT><ZT><ZT><ZT>XXX><ZT><JF><ZT><ZT><ZT><ZT>XXX><ZT><ZT><
ZT><ZT><ZT<<ZT
21: ZT<>ZT>>ZT>>ZT>>ZT>>XXXXXT>>ZT<<ZT>>ZT>>ZT>>ZT>>XXXXXT>>ZT>>ZT
>>ZT>>ZT>>ZT<>
22: <>ZT>>ZT>>ZT>>ZT>>ZTXXXXX>ZT><ZT<>ZT>>ZT>>ZT>>ZTXXXXX>ZT>>ZT>>
ZT>>ZT>>ZT<<ZT
23: ZT<>ZT<>ZT<>ZT<>ZT<>ZXX>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZXX>ZT<>ZT<>ZT
<>ZT<>ZT<>ZT<>
24: ><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><
ZT><ZT><ZT<<ZT
25: ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
>>ZT>>ZT>>ZT>>
26: <>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
ZT>>ZT>>ZT>>ZT
27: ZT<>20<>70<>61<>73<>73<>20<>69<>74<>20<>61<>72<>6F<>75<>6E<>64
<>2C<>0D<>0A<>
28: ><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><
ZT><ZT><-1<<ZT
29: ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
>>ZT>>ZT>>ZT>>
30: <>0>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
ZT>>ZT>>ZT>>ZT
31: ZT<>20<>62<>6F<>74<>74<>74<>6C<>65<>28<>73<>29<>20<>6F<>66<>20
<>62<>65<>65<>
32: ><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><
ZT><ZT><ZT<<ZT
33: ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
>>ZT>>ZT>>ZT>>
34: <>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
ZT>>ZT>>ZT>>ZT
35: ZT<>72<>20<>6F<>6E<>20<>74<>68<>65<>20<>77<>61<>6C<>6C<>2E<>0D
<>0A<<0D<>0A<>
36: ><ZT><ZT><ZT><ZT>XXX><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT>XXX><ZT><
ZT><JF><ZT<<ZT
37: ZT<>ZT>>ZT>>ZT>>ZTXXXT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>XXX>ZT>>ZT
><CMP>ZT>>ZT>>
38: <>ZT<>ZT<>ZT<>ZT<>XXXXZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZXXXXT<>ZT<>
ZT<<ZT<<ZT<<ZT
39: ZT<>ZT>>ZT<>ZT<>ZT<XXXXXZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZXXXXX<>ZT<>ZT

114

<<EX<>ZT>>ZT<>
40: <>ZT<>ZT<>ZT<>ZT<>ZTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>ZT<>ZT><
ZT<<ZT<<ZT<>ZT
41: ZT<>ZT>>ZT<>ZT<>ZT<>ZTXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>ZT<>ZT<>ZT
<>ZT><ZT<>ZT<>
42: <>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>
ZT><ZT<>ZT<>ZT
--------------------------- *schnapp* -----------------------------

Anschlieend klicken wir selbstbewusst und sicher auf den Button


Interpreter starten! und freuen uns ber die Ausgabe des 99 Bottles
of Beer-Songs in der Textbox mit der Beschriftung Konsole. Ein voller
Erfolg. Herzlichen Glckwunsch!
Auf der Website der Programmiersprache finden Sie weitere Gimmicks,
Beispiele und eine ausfhrliche Anleitung (siehe auch Anhang B).

115

Anhang
A: 99 Bottles of Beer Song
99 bottle(s) of beer on the wall,
99 bottle(s) of beer.
Take one down, pass it around,
98 bottle(s) of beer on the wall.

90 bottle(s) of beer on the wall,


90 bottle(s) of beer.
Take one down, pass it around,
89 bottle(s) of beer on the wall.

98 bottle(s) of beer on the wall,


98 bottle(s) of beer.
Take one down, pass it around,
97 bottle(s) of beer on the wall.

89 bottle(s) of beer on the wall,


89 bottle(s) of beer.
Take one down, pass it around,
88 bottle(s) of beer on the wall.

97 bottle(s) of beer on the wall,


97 bottle(s) of beer.
Take one down, pass it around,
96 bottle(s) of beer on the wall.

88 bottle(s) of beer on the wall,


88 bottle(s) of beer.
Take one down, pass it around,
87 bottle(s) of beer on the wall.

96 bottle(s) of beer on the wall,


96 bottle(s) of beer.
Take one down, pass it around,
95 bottle(s) of beer on the wall.

87 bottle(s) of beer on the wall,


87 bottle(s) of beer.
Take one down, pass it around,
86 bottle(s) of beer on the wall.

95 bottle(s) of beer on the wall,


95 bottle(s) of beer.
Take one down, pass it around,
94 bottle(s) of beer on the wall.

86 bottle(s) of beer on the wall,


86 bottle(s) of beer.
Take one down, pass it around,
85 bottle(s) of beer on the wall.

94 bottle(s) of beer on the wall,


94 bottle(s) of beer.
Take one down, pass it around,
93 bottle(s) of beer on the wall.

85 bottle(s) of beer on the wall,


85 bottle(s) of beer.
Take one down, pass it around,
84 bottle(s) of beer on the wall.

93 bottle(s) of beer on the wall,


93 bottle(s) of beer.
Take one down, pass it around,
92 bottle(s) of beer on the wall.

84 bottle(s) of beer on the wall,


84 bottle(s) of beer.
Take one down, pass it around,
83 bottle(s) of beer on the wall.

92 bottle(s) of beer on the wall,


92 bottle(s) of beer.
Take one down, pass it around,
91 bottle(s) of beer on the wall.

83 bottle(s) of beer on the wall,


83 bottle(s) of beer.
Take one down, pass it around,
82 bottle(s) of beer on the wall.

91 bottle(s) of beer on the wall,


91 bottle(s) of beer.
Take one down, pass it around,
90 bottle(s) of beer on the wall.

82 bottle(s) of beer on the wall,


82 bottle(s) of beer.
Take one down, pass it around,
81 bottle(s) of beer on the wall.

116

81 bottle(s) of beer on the wall,


81 bottle(s) of beer.
Take one down, pass it around,
80 bottle(s) of beer on the wall.

70 bottle(s) of beer on the wall,


70 bottle(s) of beer.
Take one down, pass it around,
69 bottle(s) of beer on the wall.

59 bottle(s) of beer on the wall,


59 bottle(s) of beer.
Take one down, pass it around,
58 bottle(s) of beer on the wall.

48 bottle(s) of beer on the wall,


48 bottle(s) of beer.
Take one down, pass it around,
47 bottle(s) of beer on the wall.

80 bottle(s) of beer on the wall,


80 bottle(s) of beer.
Take one down, pass it around,
79 bottle(s) of beer on the wall.

69 bottle(s) of beer on the wall,


69 bottle(s) of beer.
Take one down, pass it around,
68 bottle(s) of beer on the wall.

58 bottle(s) of beer on the wall,


58 bottle(s) of beer.
Take one down, pass it around,
57 bottle(s) of beer on the wall.

47 bottle(s) of beer on the wall,


47 bottle(s) of beer.
Take one down, pass it around,
46 bottle(s) of beer on the wall.

79 bottle(s) of beer on the wall,


79 bottle(s) of beer.
Take one down, pass it around,
78 bottle(s) of beer on the wall.

68 bottle(s) of beer on the wall,


68 bottle(s) of beer.
Take one down, pass it around,
67 bottle(s) of beer on the wall.

57 bottle(s) of beer on the wall,


57 bottle(s) of beer.
Take one down, pass it around,
56 bottle(s) of beer on the wall.

46 bottle(s) of beer on the wall,


46 bottle(s) of beer.
Take one down, pass it around,
45 bottle(s) of beer on the wall.

78 bottle(s) of beer on the wall,


78 bottle(s) of beer.
Take one down, pass it around,
77 bottle(s) of beer on the wall.

67 bottle(s) of beer on the wall,


67 bottle(s) of beer.
Take one down, pass it around,
66 bottle(s) of beer on the wall.

56 bottle(s) of beer on the wall,


56 bottle(s) of beer.
Take one down, pass it around,
55 bottle(s) of beer on the wall.

45 bottle(s) of beer on the wall,


45 bottle(s) of beer.
Take one down, pass it around,
44 bottle(s) of beer on the wall.

77 bottle(s) of beer on the wall,


77 bottle(s) of beer.
Take one down, pass it around,
76 bottle(s) of beer on the wall.

66 bottle(s) of beer on the wall,


66 bottle(s) of beer.
Take one down, pass it around,
65 bottle(s) of beer on the wall.

55 bottle(s) of beer on the wall,


55 bottle(s) of beer.
Take one down, pass it around,
54 bottle(s) of beer on the wall.

44 bottle(s) of beer on the wall,


44 bottle(s) of beer.
Take one down, pass it around,
43 bottle(s) of beer on the wall.

76 bottle(s) of beer on the wall,


76 bottle(s) of beer.
Take one down, pass it around,
75 bottle(s) of beer on the wall.

65 bottle(s) of beer on the wall,


65 bottle(s) of beer.
Take one down, pass it around,
64 bottle(s) of beer on the wall.

54 bottle(s) of beer on the wall,


54 bottle(s) of beer.
Take one down, pass it around,
53 bottle(s) of beer on the wall.

43 bottle(s) of beer on the wall,


43 bottle(s) of beer.
Take one down, pass it around,
42 bottle(s) of beer on the wall.

75 bottle(s) of beer on the wall,


75 bottle(s) of beer.
Take one down, pass it around,
74 bottle(s) of beer on the wall.

64 bottle(s) of beer on the wall,


64 bottle(s) of beer.
Take one down, pass it around,
63 bottle(s) of beer on the wall.

53 bottle(s) of beer on the wall,


53 bottle(s) of beer.
Take one down, pass it around,
52 bottle(s) of beer on the wall.

42 bottle(s) of beer on the wall,


42 bottle(s) of beer.
Take one down, pass it around,
41 bottle(s) of beer on the wall.

74 bottle(s) of beer on the wall,


74 bottle(s) of beer.
Take one down, pass it around,
73 bottle(s) of beer on the wall.

63 bottle(s) of beer on the wall,


63 bottle(s) of beer.
Take one down, pass it around,
62 bottle(s) of beer on the wall.

52 bottle(s) of beer on the wall,


52 bottle(s) of beer.
Take one down, pass it around,
51 bottle(s) of beer on the wall.

41 bottle(s) of beer on the wall,


41 bottle(s) of beer.
Take one down, pass it around,
40 bottle(s) of beer on the wall.

73 bottle(s) of beer on the wall,


73 bottle(s) of beer.
Take one down, pass it around,
72 bottle(s) of beer on the wall.

62 bottle(s) of beer on the wall,


62 bottle(s) of beer.
Take one down, pass it around,
61 bottle(s) of beer on the wall.

51 bottle(s) of beer on the wall,


51 bottle(s) of beer.
Take one down, pass it around,
50 bottle(s) of beer on the wall.

40 bottle(s) of beer on the wall,


40 bottle(s) of beer.
Take one down, pass it around,
39 bottle(s) of beer on the wall.

72 bottle(s) of beer on the wall,


72 bottle(s) of beer.
Take one down, pass it around,
71 bottle(s) of beer on the wall.

61 bottle(s) of beer on the wall,


61 bottle(s) of beer.
Take one down, pass it around,
60 bottle(s) of beer on the wall.

50 bottle(s) of beer on the wall,


50 bottle(s) of beer.
Take one down, pass it around,
49 bottle(s) of beer on the wall.

39 bottle(s) of beer on the wall,


39 bottle(s) of beer.
Take one down, pass it around,
38 bottle(s) of beer on the wall.

71 bottle(s) of beer on the wall,


71 bottle(s) of beer.
Take one down, pass it around,
70 bottle(s) of beer on the wall.

60 bottle(s) of beer on the wall,


60 bottle(s) of beer.
Take one down, pass it around,
59 bottle(s) of beer on the wall.

49 bottle(s) of beer on the wall,


49 bottle(s) of beer.
Take one down, pass it around,
48 bottle(s) of beer on the wall.

38 bottle(s) of beer on the wall,


38 bottle(s) of beer.
Take one down, pass it around,
37 bottle(s) of beer on the wall.

117

118

37 bottle(s) of beer on the wall,


37 bottle(s) of beer.
Take one down, pass it around,
36 bottle(s) of beer on the wall.

26 bottle(s) of beer on the wall,


26 bottle(s) of beer.
Take one down, pass it around,
25 bottle(s) of beer on the wall.

15 bottle(s) of beer on the wall,


15 bottle(s) of beer.
Take one down, pass it around,
14 bottle(s) of beer on the wall.

4 bottle(s) of
4 bottle(s) of
Take one down,
3 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

36 bottle(s) of beer on the wall,


36 bottle(s) of beer.
Take one down, pass it around,
35 bottle(s) of beer on the wall.

25 bottle(s) of beer on the wall,


25 bottle(s) of beer.
Take one down, pass it around,
24 bottle(s) of beer on the wall.

14 bottle(s) of beer on the wall,


14 bottle(s) of beer.
Take one down, pass it around,
13 bottle(s) of beer on the wall.

3 bottle(s) of
3 bottle(s) of
Take one down,
2 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

35 bottle(s) of beer on the wall,


35 bottle(s) of beer.
Take one down, pass it around,
34 bottle(s) of beer on the wall.

24 bottle(s) of beer on the wall,


24 bottle(s) of beer.
Take one down, pass it around,
23 bottle(s) of beer on the wall.

13 bottle(s) of beer on the wall,


13 bottle(s) of beer.
Take one down, pass it around,
12 bottle(s) of beer on the wall.

2 bottle(s) of
2 bottle(s) of
Take one down,
1 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

34 bottle(s) of beer on the wall,


34 bottle(s) of beer.
Take one down, pass it around,
33 bottle(s) of beer on the wall.

23 bottle(s) of beer on the wall,


23 bottle(s) of beer.
Take one down, pass it around,
22 bottle(s) of beer on the wall.

12 bottle(s) of beer on the wall,


12 bottle(s) of beer.
Take one down, pass it around,
11 bottle(s) of beer on the wall.

1 bottle(s) of
1 bottle(s) of
Take one down,
0 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

33 bottle(s) of beer on the wall,


33 bottle(s) of beer.
Take one down, pass it around,
32 bottle(s) of beer on the wall.

22 bottle(s) of beer on the wall,


22 bottle(s) of beer.
Take one down, pass it around,
21 bottle(s) of beer on the wall.

11 bottle(s) of beer on the wall,


11 bottle(s) of beer.
Take one down, pass it around,
10 bottle(s) of beer on the wall.

32 bottle(s) of beer on the wall,


32 bottle(s) of beer.
Take one down, pass it around,
31 bottle(s) of beer on the wall.

21 bottle(s) of beer on the wall,


21 bottle(s) of beer.
Take one down, pass it around,
20 bottle(s) of beer on the wall.

10 bottle(s) of beer on the wall,


10 bottle(s) of beer.
Take one down, pass it around,
9 bottle(s) of beer on the wall.

31 bottle(s) of beer on the wall,


31 bottle(s) of beer.
Take one down, pass it around,
30 bottle(s) of beer on the wall.

20 bottle(s) of beer on the wall,


20 bottle(s) of beer.
Take one down, pass it around,
19 bottle(s) of beer on the wall.

9 bottle(s) of
9 bottle(s) of
Take one down,
8 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

30 bottle(s) of beer on the wall,


30 bottle(s) of beer.
Take one down, pass it around,
29 bottle(s) of beer on the wall.

19 bottle(s) of beer on the wall,


19 bottle(s) of beer.
Take one down, pass it around,
18 bottle(s) of beer on the wall.

8 bottle(s) of
8 bottle(s) of
Take one down,
7 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

29 bottle(s) of beer on the wall,


29 bottle(s) of beer.
Take one down, pass it around,
28 bottle(s) of beer on the wall.

18 bottle(s) of beer on the wall,


18 bottle(s) of beer.
Take one down, pass it around,
17 bottle(s) of beer on the wall.

7 bottle(s) of
7 bottle(s) of
Take one down,
6 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

28 bottle(s) of beer on the wall,


28 bottle(s) of beer.
Take one down, pass it around,
27 bottle(s) of beer on the wall.

17 bottle(s) of beer on the wall,


17 bottle(s) of beer.
Take one down, pass it around,
16 bottle(s) of beer on the wall.

6 bottle(s) of
6 bottle(s) of
Take one down,
5 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

27 bottle(s) of beer on the wall,


27 bottle(s) of beer.
Take one down, pass it around,
26 bottle(s) of beer on the wall.

16 bottle(s) of beer on the wall,


16 bottle(s) of beer.
Take one down, pass it around,
15 bottle(s) of beer on the wall.

5 bottle(s) of
5 bottle(s) of
Take one down,
4 bottle(s) of

beer on the wall,


beer.
pass it around,
beer on the wall.

119

120

B: ZT Dokumentation
_____________
/zZzZzZzZzZzZz/
/zZ/
/Zz/
/Zz/
/zZ/
/zZ/
/Zz/
/Zz/________
/ZzZzZzZzZzZz/

_____________
/tTtTtTtTtTtTt/
/tT/
/Tt/
/tT/
/Tt/
/tT/
/Tt/
/tT/
/Tt/

die Mglichkeit der Wiederverwertung von bereits geschriebenem ZT


Quelltext auf ein Minimum zu reduzieren.
Andere Programmiersprachen wie Brainfuck etc. sind viel zu
benutzerfreundlich in dieser Beziehung: Nach nur kurzer Zeit des
intensiven Lernens kann man kleine Programme schreiben und deren
Quelltexte wiederverwenden, um die nchste Applikation sogar noch
schneller zu kreieren. Falls Sie einen viablen Weg finden, dies in ZT zu
tun, lassen Sie es mich wissen!
Nebenbei: Der Name ZT ("Zer0 Tolerance") wird normalerweise einfach "Z"
gesprochen, aber lassen Sie sich nicht davon abhalten, neue Mglichkeiten
zu erfinden. ;-)

Grundlagen
---------ZT Programmiersprache - Dokumentation

Verfasst von Philipp Winterberg


Juli 2002

Ein ZT Programm besteht aus vielen vielen kleinen weiblichen und


mnnlichen Personen, genannt Romeos und Juliets. Jede Person hat - wie im
richtigen Leben - einen Kopf (H = head), einen Krper (XY) und Fe (F):
H
X
Y
F

<--<--<--<---

head
body
body
feet

Abbildung 1: Struktur einer ZT Person (mnnlich)

Kopf und Fe werden benutzt, um den weiteren Programmfluss zu steuern,


der Krper enthlt Daten. Da der normale Programmfluss langweilig ist und
alle Juliets da drauen etwas einzigartiges wollen, werden ZT Programme
diagonal in allen Richtungen abgearbeitet:

Einfhrung
---------Willkommen zu ZT. Sie haben sich entschieden, eine der biestigsten
Programmiersprachen des Planeten zu lernen. Obwohl die Syntax von ZT
leicht zu erlernen ist, ist es ein kleines Abenteuer, darin zu
programmieren.
Einige strukturelle berlegungen in ZT sind inspiriert von 4DL, Numberix
und unbabtized.
ZT hat sich umarmende Datenpaare und Kommandos, die allein durch den
Programmfluss definiert werden. Um die Sache nicht zu einfach zu machen,
ist der Programmfluss brigens diagonal. All diese Features dienen dazu,

121

_
_
|\
/|
\
/
+---------------+
| Programmfluss |
+---------------+
/
\
|/_
_\|

Abbildung 2: Richtungen des ZT Programmflusses

Weil Romeo und Juliet sich lieben, umarmen sie einander oft und gerne.
Wie Sie wahrscheinlich schon vermuteten, tun sie es permanent in ZT
Programmen. Das sieht in etwa folgendermaen aus:

122

xyfH
hFXY

Daten ("ZT"). Ihr Kopf ("<") und ihre Fe ("<") sagen dem ZT
Interpreter, wo es weitergeht. Die verschiedenen mglichen Richtungen,
die Juliet einschlagen kann, sind (um die bersichtlichkeit zu
verbessern, wurde Romeo komplett durch Punkte ersetzt):

Abbildung 3: Romeo umarmt Juliet

Weil sie sich sehr sehr lieben, strt es Romeo und Juliet nicht einmal,
dass sie einander die Fe in dieser ungewhnlichen 69er Stellung kssen.
Dies machen sie speziell fr Sie, damit der ZT Quelltext kompakter wird.
brigens, Juliet ist oben. :-)

Juliets Fe

Juliets Kops

ZT<.
<...

ZT>.
<...

/
|/_

(weiter beim nchsten Romeo in Richtung links unten)

ZT>.
>...

_
|\
\

(weiter beim nchsten Romeo in Richtung links oben)

______
v
xyfH <-- Romeos Kopf
--> hFXY
^------ Romeos Fe

\
_\| (weiter beim nchsten Romeo in Richtung rechts unten)

_
/|
/
(weiter beim nchsten Romeo in Richtung rechts oben)

ZT<.
>...
Abbildung 4: Romeo ksst Juliets Fe

Wenn sie sich so umarmen, bilden Romeo und Juliet ein gut stapelbares
Packet. Jede Menge dieser Pakete knnen in Zeilen und Spalten angeordnet
werden. Wir verlassen nun die Welt der langweiligen HXYF-Abbildungen und
werfen einen Blick auf ein echtes ZT Program:

1st Juliet -->


2nd Juliet -->

ZT<>
<<2A
XX<>
<>ZT

<-- 1st Romeo

Abbildung 7: Juliets Kopf und Fe sagen dem ZT Interpreter wo es


weitergeht

Glcklicherweise war der ZT Interpreter Psychologe in einem frheren


Leben. Er versteht daher die verschiedenen Sprachen von Mnnern und
Frauen. Das wird im weiteren Verlauf noch wichtiger, allerdings ist schon
jetzt nicht zu bersehen, dass Romeo und Juliet die gleichen Worte bzw.
Zeichen fr sehr unterschiedliche Dinge benutzen:

<-- 2nd Romeo


...>
.>ZT

\
_\| (weiter bei der nchsten Juliet in Richtung rechts u.)

Abbildung 5: ZT Programm mit zwei "Romeo & Juliet"-Prchen

Wir knnen schneller vorangehen? Okay, sehr gut, im Folgenden sehen Sie
das gleiche ZT Programm wie in Abbildung 5, aber mit sehr viel mehr
Prchen:

ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>
<<2A<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT
XX<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>
<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT

<--<--<--<---

7
7
7
7

Juliets
Romeos
Juliets
Romeos

Abbildung 6: Viele "Romeo & Juliet"-Prchen

Jetzt im Detail: Ein ZT Programm beginnt in der linken oberen Ecke mit
Juliet (Ladies first!). Wie Sie sich erinnern, beinhaltet Juliets Krper

123

...>
.<ZT

/
|/_

(weiter bei der nchsten Juliet in Richtung links unten)

...<
.<ZT

_
|\
\

(weiter bei der nchsten Juliet in Richtung links oben)

...<
.>ZT

_
/|
/

(weiter bei der nchsten Juliet in Richtung rechts oben)

Abbildung 8: Romeos Kopf und Fe sagen dem ZT Interpreter wo es


weitergeht
Gratulation! Sie haben gerade den ersten groen Schritt auf dem Weg zum
professionellen ZT Entwickler gemeistert! Sie haben die Struktur von ZT
Personen verstanden, das Konzept der "Romeo & Juliet"-Prchen und den

124

diagonalen Programmfluss kennen gelernt. Jetzt geht es weiter mit einer


satten Portion Action...

Memory & Kommandos


------------------

Romeo und Juliet knnen beide "TALK", "JUMP", "MATH" und "SET" Kommandos
verstehen. Aber es gibt da diese kleinen Unterschiede: Romeo redet nur
ber Zahlen, Juliet kann nicht sehr weit springen... Deshalb whlt der
erfahrene ZT Programmierer sorgfltig die Person aus, die die Aufgabe am
besten bewltigen kann.

ZT erlaubt Romeo und Juliet etwas, wovon echte Paare sehr oft trumen zumindest in den ersten zwei Wochen der Beziehung -, sie drfen ihre
Gedanken miteinander teilen (ihren Speicher bzw. ihr Memory, um exakt zu
sein).

Aber wie sagt man Romeo, dass er springen soll? Oder Juliet, sie mge
reden? Es ist ganz simpel: Sie sagen es ihnen durch den Programmfluss!
Jeder Romeo und jede Juliet hat einen Datenkrper, der normalerweise
Hexadezimaldaten enthlt. Wenn nun beispielsweise der Programmfluss von
links oben kommt, dann benutzt Juliet die hex-Daten, um darber zu reden
(sprich: sie gibt die hex-Daten als ASCII Zeichen auf dem Bildschirm
aus).

+---------------+
| Programmfluss |
+---------------+
\
_\|
4A<.
<...

--> TALK --> "J" (hex 4a) auf dem


Bildschirm ausgeben

Abbildung 9: Programmfluss lsst Juliet reden

Manchmal - naja, okay, wahrscheinlich oft - mchte man wirklich, das


Juliet still ist und ausnahmsweise mal den Mund hlt. Dies kann - anders
als im wahren Leben - schnell und ohne Diskussion erreicht werden: Fllen
Sie ihren Datenkrper mit "ZT" und es herrscht Stille.

+---------------+
| Programmfluss |
+---------------+
\
_\|
ZT<.
<...

Es gibt 16 (hex 0..F) Speicherpltze, die entweder ber einen Index


Pointer angesprochen werden, oder direkt aus dem Datenkrper: "[0..F]"
(statt "" darf alternativ auch "^", "*" oder sogar "?" verwendet
werden).
Wie Sie bereits wissen, wird das Kommando durch den Programmfluss und den
Datenkrper (XY) bestimmt. Wenn der Datenkrper "ZT" beinhaltet, wird der
Programmfluss fortgesetzt, ohne dass die normalerweise fllige Aktion von
Romeo oder Juliet ausgefhrt wird.

Juliets TALK Aktion:


^^^^^^
+---------------+
| Programmfluss |
+---------------+
\
_\|
XYF.
H...

--> TALK "XY"

Abbildung 11: Programmfluss fordert Juliet zum Reden auf

TALK: XY als ASCII Zeichen auf dem Bildschirm ausgeben (XY: hex-Wert),
dann MOVE in Richtung HF (definiert durch H und F. Siehe Abbildung 7).

Beispiel: 5A<.
<...

0<.
>...

--> "Z" (hex 5A) ausgeben,

dann

\
_\|
_
/|

--> memory[0] als ASCII ausgeben, dann

--> DON'T TALK!

Abbildung 10: Mit "ZT" in ihrem Datenkrper muss Juliet still sein,
obwohl der Programmfluss sie zum Reden auffordert

125

126

Juliets JUMP Aktion:


^^^^^^

XYF.
F...

--> JUMP

_
/|
/ , wenn memory[index] <> 0,
sonst JUMP _\|

_
/|

???.
?...

ZT<.
>...

/
+---------------+
| Programmfluss |
+---------------+

Abbildung 12: Programmfluss fordert Juliet zum Springen auf


_
\
/|
JUMP: Wenn memory[index] = 0 spring einen Schritt _\| , sonst / .
Dieses Kommando ignoriert alle HXYF Werte, schreiben Sie also hinein, was
Sie wollen (auer "ZT").

--> Quit ZT Programm


_
/|
--> Nicht Quit, aber MOVE

Juliets MATH Aktion:


^^^^^^
XYF.
H... _--> MATH XY
|\
\
+---------------+
| Programmfluss |
+---------------+

Abbildung 14: Programmfluss fordert Juliet auf, das MATH-Kommando


auszufhren
Beispiel: UMP.
J...

???.
?...

ZT<.
>...

--> jump

_
/|
/ , wenn memory[index] <> 0, sonst JUMP

\
_\|

--> jump

_
/|
/ , wenn memory[index] <> 0, sonst JUMP

\
_\|

--> Nicht springen, aber MOVE

--> index = index + 1, dann

\
_\|

Abbildung 13: Programmfluss lsst Juliet die SET Aktion ausfhren

SET: All SET? Go party! (XY <> "ZT"). Dieses Kommando ignoriert alle
HXYF Werte, schreiben Sie also hinein, was Sie wollen (auer "ZT").

127

Beispiel: 01<.
<...

_
/|

Juliets SET Aktion:


^^^^^^
+--------------+
| Programfluss |
+--------------+
/
|/_
XYF.
H... --> All SET? Dann ZT Programm beenden und Party machen!

Beispiel: UIT.
Q...

MATH: index = (index + XY) mod 16 (X: '-' oder hex-Wert, Y: hex-Wert),
dann MOVE in Richtung HF (definiert durch H und F. Siehe Abbildung 7).

-2<.
>...

_
/|
--> index = index - 2, dann

Romeos TALK Aktion:


^^^^^
+---------------+
| Programmfluss |
+---------------+
\
_\|
...H
.FXY

--> TALK "XY"

Abbildung 15: Programmfluss fordert Romeo zum Sprechen auf

TALK: XY als Dezimalzahl auf dem Bildschirm ausgeben (XY: hex-Wert), dann
MOVE in Richtung HF (definiert durch H und F. Siehe Abbildung 8).
--> Quit ZT Programm

128

Beispiel: ...>
.>63

...<
.>0

--> output "99" (hex 63), dann

\
_\|

Beispiel: ...>
.>63

--> output memory[0],

_
/|
/

...<
.>0

--> set memory[index] = memory[0], dann

...>
.>-3

--> set memory[index] = - 3

\
_\|

Romeos JUMP Aktion:


^^^^^

...H
.FXY
_
/|

dann

--> JUMP "HF"

/
+---------------+
| Programmfluss |
+---------------+
Abbildung 16: Programmfluss fordert Romeo zum Springen auf

JUMP: Spring Y Schritte MOVE in Richtung HF (definiert durch H und F.


Siehe Abbildung 8), X wird wahrgenommen, aber ROMEO ist nicht fhig, so
weit zu springen.

Beispiel: ...>
.>63

...<
.>0

--> jump 3 Schritte

\
_\|

--> jump memory[0] Schritte

dann

\
_\|
_
/|

, dann

Romeos MATH Aktion:


^^^^^
...H
.FXY _--> MATH XY
|\
\
+---------------+
| Programmfluss |
+---------------+

Abbildung 18: Programmfluss fordert Romeo zum Rechnen auf

MATH: Memory[index] = memory[index] + XY (X: '-' oder hex-Wert, Y: hexWert), dann MOVE in Richtung HF (definiert durch H und F. Siehe
Abbildung 8).

_
/|
[aber nicht mehr als

16]

Romeos SET Aktion:


^^^^^
+---------------+
| Programmfluss |
+---------------+
/
|/_
...H
.FXY --> SET memory[index] = "XY"

Abbildung 17: Programmfluss fordert Romeo zum Setzen eines Wertes auf

SET: Setze memory[index] auf Wert XY (hex-Wert, gespeichert als


Dezimalzahl), dann MOVE in Richtung HF (definiert durch H und F. Siehe
Abbildung 8).

129

--> set memory[index] = 99,

Beispiel: ...>
.>63

--> memory[index] = memory[index] + 99,

dann

\
_\|
_
/|

...<
.>0

--> memory[index] = memory[index] + memory[0], dann

...>
.>-3

--> memory[index] = memory[index] - 3,

\
_\|

dann

Eingaben
-------Ich folge in diesem Punkt der 'unbabtized'-Input-Philosophie von Gerson
Kurz: "There is no input. There is a philosophy behind this, you know! To
my view, there are two kinds of input, user input and hardcoded input.
User input sucks, and hardcoded input rules, so there." (2002-07-02,
http://www.p-nand-q.com/unbabtized.htm)

130

Beispiele
--------ZT bietet eine gigantische Welt voller Mglichkeiten, die Sie jetzt
selbststndig erforschen drfen. Um Ihnen dabei ein wenig Hilfe und einen
abschlieenden berblick zu geben, sehen Sie hier noch einige kleine ZT
Beispielprogramme:
5A<>........
<>ZT........
....65<>....
....<>ZT....
........72<>
...Zer0.<<00
.Tolerance..

48<>>>>>ZT<>ZT<> Hello |
<>ZT>>ZT<>ZT<>ZT World!|
<<<<65<>6F<>6F<>6C<>>>>>
>>>2<>ZT<>ZT<>ZT<>ZT<<<8
ZT<<<<<<6C<>20<>72<>64<<
><ZT<<<<<>ZT<>ZT<>ZT><<5
>>>>ZT><<<<<6C<>57<>ZT<<
>>ZT><ZT><<<<<ZT<<ZT><<7
ZT<<21<>ZT><ZT>>ZT<<<<<|
><ZT<>ZT><42<<<<<>ZT by|
>>>>ZT><21<>>>> Philipp|
>>>>><ZT<<ZT Winterberg|
-------EXIT--[ ZT ]----|
-[www.winterbergs.de]-/

Abbildung 22: Klassisches "Hello World" Programm in ZT


Abbildung 19: ZT Programm, das "Zer0" ausgibt

47<>.....................
<>ZT.....................
...>6F>>.................
.>FF<>ZT.................
....ZT<.21<>...>ZT><.....
....>...<>ZT.<ZT<<-1.....
............ZT<>....ZT><.
............<>0....><ZT.
................20<<CMP>.
................<>ZT<<ZT.
....................EXIT.
.[ loop counting 255-0 ].

Abbildung 20: ZT Programm, dass von 255-0 runterzhlt und die Zahlen
ausgibt

ZT<> // MOVE -_>


<<2A // 42 ausgeben, MOVE <_NICE // ZT beenden
CODE

Abbildung 21: Krzestes komplettes ZT Programm mit Kommentaren

131

Wie bereits in Abbildung 20 gezeigt wurde, kann ein ZT Programm sehr


seltsam aussehen, da Platz, der vom Programmfluss nicht erreicht wird,
fr Kommentare oder "source code art" genutzt werden kann. Der Smily im
nchsten Beispiel gibt nur eine vage Idee von dem, was tatschlich
mglich ist: Ausfhrbare ASCII Zeichnungen!
ZT<>........................................................................
<>ZT.....ZT version of 99 Bottles of beer (Bottles.zt)......................
...>ZT>..Philipp Winterberg, http://www.winterbergs.de......................
.<63<.......................................................................
ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>....
<>0<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>..
ZT<>20<>62<>6F<>74<>74<>74<>6C<>65<>28<>73<>29<>20<>6F<>66<>20<>62<>65<>65<>
><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT<<ZT
ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
ZT<>72<>20<>6F<>6E<>20<>74<>68<>65<>20<>77<>61<>6C<>6C<>2C<>0D<>0A<>ZT<>ZT<>
><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT<<ZT
ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
<>0>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
ZT<>20<>62<>6F<>74<>74<>74<>6C<>65<>28<>73<>29<>20<>6F<>66<>20<>62<>65<>65<>
><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT<<ZT
ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
ZT<>72<>2E<>0D<>0A<>54<>61<>6B<<65<>20<>6F<>6E<>65<>20<>64<>6F<>77<>6E<>2C<>
><ZT><ZT><ZT><ZT><ZT>XXX><ZT><JF><ZT><ZT><ZT><ZT>XXX><ZT><ZT><ZT><ZT><ZT<<ZT
ZT<>ZT>>ZT>>ZT>>ZT>>XXXXXT>>ZT<<ZT>>ZT>>ZT>>ZT>>XXXXXT>>ZT>>ZT>>ZT>>ZT>>ZT<>
<>ZT>>ZT>>ZT>>ZT>>ZTXXXXX>ZT><ZT<>ZT>>ZT>>ZT>>ZTXXXXX>ZT>>ZT>>ZT>>ZT>>ZT<<ZT
ZT<>ZT<>ZT<>ZT<>ZT<>ZXX>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZXX>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>
><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT<<ZT
ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
ZT<>20<>70<>61<>73<>73<>20<>69<>74<>20<>61<>72<>6F<>75<>6E<>64<>2C<>0D<>0A<>
><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><-1<<ZT
ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
<>0>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
ZT<>20<>62<>6F<>74<>74<>74<>6C<>65<>28<>73<>29<>20<>6F<>66<>20<>62<>65<>65<>
><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT<<ZT

132

ZT<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>
<>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT
ZT<>72<>20<>6F<>6E<>20<>74<>68<>65<>20<>77<>61<>6C<>6C<>2E<>0D<>0A<<0D<>0A<>
><ZT><ZT><ZT><ZT>XXX><ZT><ZT><ZT><ZT><ZT><ZT><ZT><ZT>XXX><ZT><ZT><JF><ZT<<ZT
ZT<>ZT>>ZT>>ZT>>ZTXXXT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>ZT>>XXX>ZT>>ZT><CMP>ZT>>ZT>>
<>ZT<>ZT<>ZT<>ZT<>XXXXZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZXXXXT<>ZT<>ZT<<ZT<<ZT<<ZT
ZT<>ZT>>ZT<>ZT<>ZT<XXXXXZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZXXXXX<>ZT<>ZT<<EX<>ZT>>ZT<>
<>ZT<>ZT<>ZT<>ZT<>ZTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>ZT<>ZT><ZT<<ZT<<ZT<>ZT
ZT<>ZT>>ZT<>ZT<>ZT<>ZTXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>ZT<>ZT<>ZT<>ZT><ZT<>ZT<>
<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT<>ZT><ZT<>ZT<>ZT

Abbildung 23: Schlechte "99 Bottles of Beer" Version in ZT, die zeigt,
dass ZT Quelltext lcheln kann

Ziel
---Yeah! Cool! Sie haben es den ganzen Weg durch diese Dokumentation
geschafft - und das in Rekordzeit. Die romantische Welt von ZT liegt nun
wie ein offenes Buch vor Ihnen. Zgern Sie nicht, mir Ihre ZT
Meisterwerke zu schicken: p(at)p78(punkt)[d]e, subject:
"ZT Killer Application"
Der ZT Interpreter ist open source und darf unter GNU GPL vertrieben
werden. Falls Sie einen weiteren ZT Interpreter/Compiler schreiben,
schicken Sie mir doch eine Kopie. Danke.

Dieses schlechte "99 Bottles of Beer" ZT Program zeigt, dass, obwohl die
Sprache ZT designed wurde, Wiederverwendbarkeit von Quelltext zu
verhindern, es - mit Hilfe hsslicher Techniken - immer noch mglich ist,
wiederverwertbaren Quelltext zu schreiben. Aber der Quelltext wird
dadurch unntig aufgeblasen und verliert seine Eleganz. Falls Sie die
Zeit haben, schreiben Sie eine bessere Version!

Anhang A
--------

Randnotiz: Im August 2010, acht Jahre nach Verffentlichung von ZT,


schickte mir berraschend Yoshiki Kumagai eine hervorragende Version des
"99 Bottles of Beer" Beispiel-programms in ZT:

F: "Leitet '//' Kommentare ein?"

ZT<>...........>...>...>...>...>pF>>...>...>p1>>...>p1<>...>pE<>...>...>
<>ZT.........>-1.>+1.>ZT.>ZT.>ZT<>ZT.>ZT.>ZT<>ZT.>-1<>ZT.>+1<>ZT.>-1.<JD
pD<>ZT><ZT<>...>6C<>66<.20<>62<>2E<.0D<<0A<>6E<>65<>20<>70<>20<>20<>72<<
><63<>ZT<>*0.>ZT<>ZT>...>>ZT<>ZT>...><J3<<ZT>>ZT<>ZT<>ZT<>ZT<>ZT<>ZT><J2
ZT<<IF*>...>20<>62<>65<<IF*>73>>65><IF*>ZT<<IF*>54<>20<>61<>61<>69<>61<<
<>ZT*>ZT.>J4><J3<>ZT<>ZT*>ZT<>ZT<>ZT*>ZT<>ZT*>ZT<>ZT<>ZT<>ZT<>ZT<>ZT><J5
...>ZT><ZT<>ZT<<ZT>>6F<>...>20><65<>p1><20<>...>47>>61<>64<>6E<>73<>74<<
.>+1><ZT>>ZT><ZT<>JA<>ZT.>ZT<<J6<>ZT><ZT<>ZT.>ZT<<JC<>ZT<>ZT<>ZT<>ZT><J6
p1<>6D<>ZT>>65<>p1<<...>74<>6F<<....72<>ZT><6F<>6F<>p1<>6B<>6F<>64<>73<<
<>ZT<>ZT>>ZT<>ZT><ZT.>ZT<>ZT><J8....><ZT<<ZT<>ZT>>ZT<>ZT<>ZT<>ZT<>ZT><J9
...>64<>65<>20>>2C><...>65<>74<<...>Fin<IF*>...>6E<>20<>77<>65<>77<>20<<
.>+1<>ZT>>ZT<>ZT<<J9.>ZT<>ZT><J8.>ZT*>ZT*>ZT.>ZT>>J3<>ZT<>ZT<>ZT<>ZT><JA
...>6F>>20>>6D<>20<>...>6F<>20<<pE<>0A<....>0D<>0A<....>74<>61<>20<>6E<<
.>ZT<>ZT<>ZT<>ZT>>J5.>ZT<>ZT><J4<>ZT>....<J6>>ZT>....<JA<>ZT<>ZT<>ZT><JD
...>20>>62<>75>>6F<>....20<>72<<pE<>4E<<ZT<>ZT<>64<>pF<<ZT>>68<>6C<>6F<>
.>ZT<>ZT>>ZT<>ZT>>ZT....<>ZT><J4<>ZT<>ZT><J3<>ZT<>ZT><ZT<<J7<>ZT<>ZT><J6
...>74>>6F>>79<>20<>73><....6D<<pF<<6E<<IF*>...>6F<>2C<>ZT<<pF><65<>6C<<
.>ZT<>ZT<>ZT>>ZT>>ZT<<JA....><JA><ZT>>ZT*>ZT.>J3<>ZT<>ZT><ZT<<+1<>ZT><J9
...>68>>72<>65<>20>>6F<<...>72<>...<ZT>....<ZT<<...>75<>20<<...>pF>>20<>
.>ZT<>ZT>>ZT>>ZT<>ZT><JB.>ZT>>ZT.<J6>....<J5><J7.<J4<>ZT><J6.>ZT>>ZT><J4
....65<.20<.73<>61<<6E<<...>20>.6F<<...<IF*<ZT<<p1<<ZT><6E<<IF*>2E<>0D<<
....>...>...<>ZT><J6><JA.>ZT<...><JF.>ZT*>ZT><JF><ZT<<JA>>ZT*>ZT>>ZT><J3
.. 99 bottles ..74<.p1<<p1><74>.pE<<....ZT><ZT<.....ZT<<ZT><p1><2C<.20<.
.. by Mebius. ..>...><00<<ZT<...><00....><ZT>.......><ZT<<ZT<<ZT>...>...

Figure 24: Herrliche "99 Bottles of Beer" version in ZT - herzlichen


Dank an Yoshiki Kumagai aka Mebius

133

Nach ersten Reaktionen wird deutlich, dass ein FAQ (frequently asked
questions) nicht schaden kann. Deshalb:

A: Nein. Das ist bei einigen Beispielen missverstndlich, weil ich '//'
aus Gewohnheit einfach geschrieben habe. Entschuldigung. Dass Kommentare
nicht als solche gekennzeichnet werden mssen, wird deutlich, wenn man
sich die Programmverarbeitung durch den ZT Interpreter verdeutlicht: Der
Interpreter startet links oben und folgt dann Romeos und Juliets
Richtungsangaben. Er luft also von Person zu Person und wo er nicht
hinkommt, kann man Kommentare unterbringen (Denn merke: Was der
Interpreter nicht wei, macht den Interpreter nicht hei).

F: "Was ist 'JUMP ZT' fr Romeo?"


A: 'JUMP
Richtung
gemacht,
Ergebnis

ZT' bei Romeo bewirkt das Gleiche wie 'JUMP 01': HF geben die
an, XY die Sprungweite. Bei '01' wird ein normaler Schritt
bei 'ZT' wird der JUMP Befehl komplett ignoriert, was aber im
auch in einem normalen Schritt mndet.

F: "berhaupt JUMP: Angenommen Folgendes


111122223333
111122223333
4444..<.5555
4444>...5555
666677778888
666677778888
Sprich, Juliet will hpfen. Wenn memory[index] <> 0, dann gehts nach 3,
sonst nach 8 oder nach _feld-rechts-unten?"

134

A: Ein Juliet-JUMP erfolgt - wie der normale Programmfluss - immer


diagonal zum nchsten Romeo (also NICHT diagonal zum nchsten Prchen).
Im Beispiel she das so aus:
111122223333
111122RA3333
4444JJ<.5555
4444>.RB5555
666677778888
666677778888
Juliet (JJ) hpft, wenn memory[index] <> 0, zu Romeo (RA) im 2er-Block
(hmmm, geht sie fremd?), sonst zu ihrem eigenen Romeo (RB).

F: "Endlich gleichzeitig programmieren und ASCII-Art? Wenn, ja *wenn* ZT


doch nur reines ASCII wre ... Eine Sache missfiel mir nmlich:
| Es gibt 16 (hex 0..F) Speicherpltze, die entweder ber einen
| Index Pointer angesprochen werden, oder direkt aus dem
| Datenkrper: "[0..F]".
Musste es denn ausgerechnet ein sein? Das Zeichen ist doch nichtmal in
ASCII enthalten (und auf meiner finnischen Tastatur nichtmal drauf :)).
Gibt es Hoffnung, dass das in der nchsten Version von ZT durch ein
ASCII-Zeichen ersetzt wird?"

Diese Dokumentation wird, falls ntig, berarbeitet:


[
[
[
[
[

2010-08-24
2004-11-10
2002-07-29
2002-07-07
2002-07-05

Abb. 24 hinzugefgt: Besseres Beispiel ]


URL in der Dokumentation aktualisiert ]
Neue: statt "" darf auch "^"/"*"/"?" verw. werden ]
Fehler in der Dok. von Juliets MATH Aktion behoben + FAQ ]
Erste Verffentlichung]

ZT programming language, "Zer0 Tolerance"


2002-2010 Philipp Winterberg, http://www.philipp-winterberg.com
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
[eof]

A: Guter Punkt. Specs und Interpreter wurden erweitert: statt "" darf
auch "^", "*" oder sogar "?" verwendet werden. Die sind alle ASCII und
hoffentlich auch auf einer finnischen Tastatur vorhanden.
Anhang B
-------+
+
+
| Juliet
| Romeo
|
|
|
|
+-----+------------------+------------------+
TALK | Datenkrper oder | Datenkrper oder |
| memory[index]als | memory[index]als |
| ASCII ausgeben
| Zahl ausgeben
|
+-----+------------------+------------------+
JUMP | Bedingter Sprung | Normaler Sprung |
| memory[index]=0? | in Richtung HF
|
+-----+------------------+------------------+
SET | ZT Programm
| Wert setzen:
|
| beenden
| memory[index]
|
+-----+------------------+------------------+
MATH | Wert des Index
| Wert ndern:
|
| Pointers ndern | memory[index]
|
+-----+------------------+------------------+

135

136

Register
23 14
Alice Pascal 15
ASHE 16
ASIC 18
Basic 70
BasicBasic 19
BBC BASIC for Windows 21
Blaster Master Pascal 22
bwBasic 24
C 70
C-- 25
Careware 57
Chipmunk Basic 26
COCOA 27
ComWic 28
Curl 29
D 30
D++ 31
DarkBasic 32
Delphi 33
Dialect 34
DiNGS Game Basic 35
DPas 36
EasyBatch 37
eC 38
elastiC 39
Euphoria 41, 70
FirstBasic 42
FranzBasic 43
Free Pascal 43
GABasic 45
GBasic 46

137

GFA Basic 46
GPLZ.easy 47
Greenware 25
Hello World 132
HotTEA 48
HQ9+ 49
HTA 50
HTBasic 50
IBasic 51
Impacto 52
Input-Philosophie 130
Irie Pascal 53
ISETL 54
Java 56, 99, 111
JavaScript 70
JScript 55
Juliet 123, 135
Kiev 56
KiXtart 57
Liberty Basic 58
MacroX 59
MoonRock 60
NeoBook 61
Numberix 62, 121
O'Basic 63
Objective Caml 49, 64
PascalX 65
PasScript 66
Perl 87
Portable ISO Standard Pascal
67
PowerBasic 42

ProvideX 68
PureBasic 69
Py 70
Python 47, 49, 70, 96, 107
Quikcode 71
R 72
RapidBATCH 73
Rapid-Q 73
RBASIC 74
REBOL/Core 75
Romeo 123, 135
ScriptBasic 76
ScriptEase 77
SheerPower 78
ShowText 79
SmallBasic 80
Sphinx C-- 25
SuperEASY 81
T 82
Tcl/Tk 105
TMMLPTEALPAITAFNFAL
83
TMT Pascal 5, 85
Tokiwa 86
TRANSCRIPT 87
True Basic 89
TsrBasic 90
Turbo C 91

Turbo Pascal 93
Turbo Pascal for Windows 92
Turbo PL 94
UBasic 95
Umweltschutz 25
unbabtized 96, 121, 130
VBA 97
VBScript 98
Virtual Machine 56, 99, 111
Visual DialogScript 98
WebL 99
WIL 100
WinBatch 101
wxBasic 103
XBasic 103
xComposer 108
XLISP-PLUS 104
XOTcl 105
XPL0 106
XS 107
xScript 108
Yabasic 109
Yacas 110
Yoix 111
Zeno 112
Zer0 Tolerance 113
ZT 113, 121

138

139

140