eso

Esoterisches Hacken

Was sich hier findet entspringt der wunderbaren Welt der esoterischen Programmierung, wer damit nichts anfangen kann findet hier einen kleinen Einstieg. Natürlich steht aller Code auf dieser Seite, der von mir stammt unter der GPL

Argh!

Argh! ist mein erster Versuch eine Sprache zu entwerfen, die den Geist esoterischer Programmiersprachen in sich trägt.

Argh! bietet alles was man von einer ordendlichen Sprache erwartet und noch mehr:

Argh! legt Wert auf Lesbarkeit: Argh! ist simpel: Noch nicht überzeugt? ok hier ist ein Code-Beispiel, dass die Eleganz von Argh! demonstriert, so sieht ein einfaches unix "cat" in Argh! aus:
lllllllj
lllj   j  2 2 
kD2lgj lelSHSph
  1  j    lDj k
 LSdSh1DRxXqlFk
         llDk
Die vollständige Spezifikation von Argh! und Aargh! kann man hier nachlesen (englisch).

Try it now!

Hier kann Aargh! mit einem in Javascript geschriebenen Interpreter direkt im Browser ausprobiert werden.

Der Quellcode ist unter http://hg.intevation.org/argh/js/ zu finden.

Tutorial

In meinem blog habe ich einer Reihe Argh! Tutorials (in Englisch) veröffentlicht.

Download

argh-0.2.3.tgz
Das Archiv enthält einen Argh! und einen Aargh! Interpreter (in C), die Sprach-Spezifikation, einen Argh! Mode für GNU Emacs, einige Beispiel Programme sowie zusätzliche Beispiele und Tools die andere Autoren zu Argh! beigesteuert haben.

Der Argh! Mode für Emacs enthält einen vollständigen Aargh! Interpreter/Debugger, mit dem Argh! code interaktiv ausgeführt und die Arbeit des Argh!-Interpreters visualisiert werden kann.

Das öffentliche Mercurial Argh! Repository ist unter http://hg.intevation.org/argh/ zu finden.

Über Kommentare, Bugreports und natürlich Argh!-Programme jeder Art würde ich mich sehr freuen.

Laurent Vogel hat einen Argh! debugger in Perl geschrieben: argh.pl

Simeon Visser arbeitet an einen Argh! Interpreter in Haskell: arghwxhaskell


BrainFuck

BF von Urban Müller ist wohl eine der bekanntesten und beliebtesten esoterischen Programmiersprechen. Gute Infos zu BF finden sich z.B. hier.

yabfi2

Yet Another BrainFuck Interpreter 2 ist ein von mir geschriebener BF Interpreter, der im Gegensatz zu den meisten anderen BF-Interpretern on-the-fly einige Optimierungen durchführt. Das macht ihn für einen Interpreter relativ flott. Der Quellcode: yabfi2.c steht natürlich unter der GPL.

Die besten Ergebnisse erziehlt man mit reinem, unformatierten BF code, den man leicht mit folgendem Einzeiler erzeugen kann:

cat $BF-SOURCE | tr -d -c '[],.<>+-' > $STRIPED-BF-SOURCE

yabfi2 benutzt genauso wie sein Vorgänger mmap(2) und ist deshalb nicht sonderlich Portabel, sollte aber auf den meisten modernen Un*x-Systemen Problemlos laufen. yabfi2 wurde von mir bislang erfolgreich unter GNU/Linux, Irix 6.5, HP-UX 10.20 und Mac OS X 10.2 compiliert und getestet.

bff von Alex Pankratov verfolgt die selbe Idee, yabfi2 war als ich es schrieb bei meinen Tests geringfügig schneller, mittlerweile ist aber bff ca. doppelt so schnell. Wo bff nicht läuft (ich hatte schwierigkeiten unter Mac OS X) könnte yabfi2 aber noch eine Alternative sein...

Interessanter BF code, weitere Interpreter und Compiler u.f.m. findet sich im BrainFuck Archiv für Benchmarks habe ich unter anderem mandelbrot.b verwendet.

©2004-2009 Sascha Wilde