WikiDer > Gehirnfick

Brainfuck

Gehirnfick ist ein esoterische Programmiersprache die herum 1993 durch Urban Müller gemacht wird. Die Sprache ist manchmal hirnf*ck, hirnf***, oder BF angerufen, wenn man höflich sein will.

Überblick

Müllers Ziel war es, turing-voll Programmiersprache, die mit dem kleinstmöglichen Compiler implementiert werden könnte. Die Sprache besteht aus acht Aussagen. Die zweite Version des ursprünglichen Compilers[1], geschrieben für die Amiga, ist nur 240 Bytes groß. Urban wurde von der Programmiersprache inspiriert Falsch, dessen Compiler 1024 Byte groß war.

Wie der Name schon sagt, sind Brainfuck-Programme im Allgemeinen schwer zu verstehen. Im Gegensatz dazu ist jeder Turing Maschine, und damit auch Brainfuck, kann jede mathematische Aufgabe lösen. Wenn wir die Schwierigkeiten bei der Programmierung bestimmter Aufgaben außer Acht lassen, ist dies tatsächlich möglich.

Die Sprache basiert auf einem sehr einfachen virtuelle Maschine die außerhalb des Programms aus einer Reihe von auf Null gesetzten Bytes besteht, a, Zeiger auf ein Element der Zeile (der Startwert des Zeigers ist das erste Byte) und zwei Zeilen von Bytes, die die Ein- und Ausgabe bilden. Brainfuck-Code kann so einfach sein CCode kann umgeschrieben werden (siehe Tabelle) Die acht Anweisungen, die jeweils aus einem einzelnen Zeichen bestehen, lauten wie folgt:

CharakterBedeutungC-Äquivalent*
>heben Sie den Zeiger an. ptr;
<senken Sie den Zeiger.--ptr;
Erhöhen Sie das Byte, auf das der Zeiger zeigt. (*ptr);
-Verringern Sie das Byte, auf das der Zeiger zeigt.--(*ptr);
.Geben Sie das Byte, auf das der Zeiger zeigt, als ASCII-Ausgabe an.putchar(*ptr);
,Verwenden Sie das folgende ASCII-Eingabebyte, um das Byte auszufüllen, auf das der Zeiger zeigt.*ptr = getchar();
[Springe zur Anweisung nach dem entsprechenden ] wenn das Byte, auf das der Zeiger zeigt, eine Null ist.während(*ptr) {
]springen Sie zurück zur Aussage hinter dem entsprechenden [ wenn das Byte, auf das der Zeiger zeigt, nicht null ist.}
  • "ptr" ist eine Variable vom Typ unsigniertes Zeichen*, kann es beispielsweise für ein 100-Zeichen-Array wie folgt initialisiert werden:
    char* ptr = malloc(100*sizeof(char));

Zeichen, die nicht zur Sprache gehören, sollten vom . ignoriert werden Compiler. In einigen Brainfuck-Derivaten wird die Sprache um zusätzliche Zeichen erweitert: das #-Zeichen, um Debug-Informationen anzuzeigen, oder ein anderes Sonderzeichen, um das Ende des Codes anzuzeigen. Verwendung ist die Umbenennung von Ableitungen von brainfuck, wie bei den bestehenden Ableitungen BrainFork oder Extended brainfuck Type I.

Hallo Welt

Der Code zur Verwendung von Brainfuck"Hallo Weltzu generieren ist folgendes:

          [> > > > <<<<-] Die Initialisierungsschleife zum Erstellen des Arrays> . Drucken Sie 'H'> . Drucken Sie 'e' . Drucken Sie 'l'. Drucken Sie 'l'. Drucken Sie 'o'> . ' '<< drucken. Drucken Sie 'W'>. Drucken Sie 'o'. Drucken Sie 'r'------. Drucken Sie 'l'--------. Drucken Sie 'd'> . Drucken Sie '!'>. Zeilenumbruch drucken

Zur besseren Lesbarkeit ist dieses Programm auf mehrere Zeilen verteilt, und es gibt en Bemerkungen bereitstellen. Dies ist möglich, sofern der Kommentar keine Sprachzeichen enthält (, . < > [ ] -), da der Compiler alle überflüssigen Zeichen ignoriert. Folglich ist der folgende Code äquivalent:

           [>       >          >   > <<<<-]>  .> .       ..   .>  .<<               .>.   .------.--------.> .>.

Siehe auch

Externe Links