Brainfuck_Logo

Brainfuck

Was ist das?

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.

Erklärung

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