Warum druckt sich das Programm selbst aus?
Kurz mal Zeit für einen Nerd-Quicky: Da sitze ich und schreibe Artikel über esoterische Programmiersprachen (doch, das gibt's - und ja, das ist spannend), da stoße ich auf etwas namens Quine. Ein Quine ist ein Programm, das den eigenen Quellcode ausdruckt - für manch Coder offenbar eine Art Sport, dies in jedweder Sprache zu realisieren. Wer Spaß an Teckie-Quatsch und fünf Minuten Zeit für etwas "irgendwie lustiges" hat --->
Quine mit Esoterik
Ein Quine druckt sich also selbst aus - und mit normalen Programmiersprachen ist das nicht so trivial, wie es vielleicht klingt. Aber Ihr könnt es mittels esoterischer Programmiersprache im Browser oder ohne Esoterik in einem Linux-Terminal anschauen. Die Esoterik bietet HQ9+ als Lösung. Dem heutigen Google-Forschungsmitarbeiter Cliff L. Biffle viel auf, dass für (esoterische) Programmiersprachen immer wieder drei Beispiel genommen wurden: Ein Hallo-Welt-Programm (druckt "Hallo, Welt!"), die Ausgabe des Textes von 99 Flaschen Bier an der Wand und eben ein Quine - und entwickelte die doch recht spezielle Sprache HQ9+. Der komplette Befehlssatz: H, Q, 9, + - zum Ausgeben von "Hello World.", des Quelltexts und der Bier-Lyrics; per + auch gerne mehrfach. Glaubt'er nich'? Hier geht es zum Online-Interpreter.
Quine im Terminal
Im Linux-Terminal könnt Ihr mit Minimal-Code und dem Standard-Tool cat die Quick&Dirty-Version eines Quine basteln. Erstellt eine Textdatei, etwa "catting", und fügt folgenden Code ein:
#!/bin/cat
Hello World - It's me, Mario!
Nun macht die Datei noch ausführbar:
chmod +x catting
Und wenn Ihr die Datei nun mit
./catting
ausführt - ratet selbst, was dann passiert ;) Der "Trick" ist im Shebang, der ersten Zeile zu finden - in den meisten Sktipten werdet Ihr dort "#/bin/sh"" oder ähnliches vorfinden, eben Shell-Skripte. Und hier führt eben cat aus - und cat druckt eben Dateiinhalte aus. Eben drum. (Bevor wieder gemeckert wird: Es verkettet (cat = concatenate), es druckt nicht.)
Artefakte aus Nerd- und Programmierwelten - vermutlich kein Massenthema, aber ich find's gut. Wer noch? Hand hoch, wer schon mal was mit Quines machen musste! Wer mehr über esoterische Programmiersprachen wissen will - muss noch kurz Gedult haben, Artikel ist noch nicht online, Link folgt.