Brainfuck ist eine minimalistische esoterische Programmiersprache, die dafür
sorgt, das dein Gehirn schmerzt. Sie ist voll funktionsfähig, aber nicht dazu
gedacht, echte Software zu erstellen. Es ist mehr wie ein Kunstwerk, das den IQ
Status herausfordert.
Entwicklung
Brainfuck wurde 1993 von dem Schweizer Physikstudenten Urban Müller
entwickelt, dessen Ziel es war, eine Sprache mit einem möglichst kleinen
Compiler zu entwickeln. Sie wurde für das Amiga 2.0-Betriebssystem
entwickelt und der Compiler hat weniger als 200 Bytes (
160 Bytes). Auch wenn diese 160 Bytes eigentlich nicht der Syntax von C entsprechen,
wird der Code trotz Warnings compiliert.
s[99],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c&2,b=c%7?a&&(c&17?c&1?(*r+=b-1):(r+=b-1):syscall(4-!b,b,r,1),0):v;b&&c|a**r;v=d)main(!c,&a);d=v;}
Programmierung
Ein Brainfuck-Programm beginnt mit einem eindimensionalen Array von 30000
Byte. Alle Werte werden auf Null initialisiert, dann gibt es einen
beweglichen Zeiger, den man mit acht verschiedenen Befehlen manipulieren
kann.
Verwenden Sie das Größer- oder Kleiner-Zeichen, um den Zeiger um jeweils
eine Zelle nach links oder rechts zu verschieben. Erhöhen oder verringern
Sie den Wert in einer Zelle mit Plus oder Minus. Verwenden Sie einen Punkt,
um das Byte an der aktuellen Position des Zeigers auszugeben, oder verwenden
Sie ein Komma, um eine Eingabe zu akzeptieren und an der aktuellen Position
des Zeigers zu speichern. Und schließlich verwenden Sie öffnende und
schließende Klammern, um eine Schleife zu erstellen. Beachten Sie, dass
Brainfuck keine Variablen, Funktionen oder Klassen benötigt.
Zeichen |
C-Äquivalent |
Semantik |
> |
ptr++; |
inkrementiert den Zeiger |
< |
ptr--; |
dekrementiert den Zeiger |
+ |
ptr[0]++; |
inkrementiert den aktuellen Zellenwert |
- |
ptr[0]--; |
dekrementiert den aktuellen Zellenwert |
. |
putchar (ptr[0]); |
Gibt den aktuellen Zellenwert als ASCII-Zeichen auf der
Standardausgabe aus
|
, |
ptr[0] = getchar(); |
Liest ein Zeichen von der Standardeingabe und speichert dessen
ASCII-Wert in der aktuellen Zelle
|
[ |
while (ptr[0]) { |
Springt nach vorne, hinter den passenden ]-Befehl, wenn der
aktuelle Zellenwert 0 ist
|
] |
} |
Springt zurück, hinter den passenden [-Befehl, wenn der aktuelle
Zellenwert nicht 0 ist
|
Mit Brainfuck anfangen
Um mit Brainfuck zu beginnen, löschen Sie Ihr Betriebssystem und
installieren Sie Amiga OS. Dann erstellen Sie eine Datei mit der Endung .bf,
was für Brainfuck steht. Alle Zeichen, die nicht in der obrigen Tabelle
vorkommen, werden als Kommentar ignoriert.
Um jetzt einen String ausgeben zu können, müssen die einzelnen Arrayelemente
des anfänglich leeren Arrays auf die einzelnen Werte (ASCII Tabelle) des
Strings gesetzt werden.
Um diesen Code dann auszuprobieren, rufen Sie diese Website aus:
https://copy.sh/brainfuck/.
Viel Spaß!