Brainfuck
Ihre einfache und machtvolle Syntax erleichtert es Windows-Nutzern, ihre Kreativität zu demonstrieren, indem diese vollständig auf den Umgang damit verzichten.
Inhaltsverzeichnis
Geschichte
Der Schöpfer der Sprache, Nairb Eht, der sich später als Laboraffe outete und in etwa 30 Jahren die Weltherrschaft an sich reißen wird, ist laut einer Umfrage des statistischen Bundesamtes irgendwann in den 1950er Jahren - mutmaßlich an seiner eigenen Erfindung - umgekommen. Für die jüngere Geschichte siehe auch Tarnung.
Sprachprinzip
Ähnlich einer Turing-Maschine gibt es ein Speicherband nahezu unbegrenzter Länge und einen Zeiger, der auf diesem hin- und herfährt. Die Aktionen dieses Zeigers sind jedoch nur von äußersten Insidern vorhersehbar, und dass auch bloß dann wenn der Quellcode bereits mehrmalig interpretiert und ausgeführt wurde. Diese Charakteristik eines so genannten Wilden Zeigers wurde aufgrund ihrer vielfältigen Verwendbarkeit auch in den Programmiersprachen C und C++ aufgenommen.
Zeichen- und Befehlssatz
Dies sind die 8 grundlegenden Befehls-Zeichen der Sprache:
Zeichen | Wirkung |
---|---|
< | Verschiebt den Zeiger nach links |
> | Verschiebt den Zeiger nach oben |
+ | Erhöht die Länge des Quellcodes |
- | Vermindert die Lesbarkeit des Quellcodes |
[ | Leitet eine Endlos-Schleife ein |
] | Zeigt das Ende einer Endlos-Schleife an |
, | 'COME FROM'-Befehl (siehe auch Komma) |
. | Markiert das Ende des Brainfuck-Zeichensatzes |
Folgende 'Wörter' gibt es in Brainfuck nicht:
Bedeutung |
Zeichenfolge |
---|---|
Variable Definieren | ___ <=> \0\0\0iiiiiii\0\0\0 //3fache Nullterminierung des Integers ist Pflicht! |
Logisches UND | :> |
Logisches ODER | :P |
Logisches NICHT UND | ;< |
Logisches NICHT ODER | :q |
Logisches NIEMALS | --- |
Logisches MANCHMAL | ++--~~ |
While-Schleife | (++--~~var < iiiiiii) )0------------> { ________+++++ } //der logische MANCHMAL operator in der while ist ebenfalls Pflicht |
If-Verzweiflung | !!! var > iiiiii-ööhm-iiiii) 7H3n------------> { ______ ;) __ } |
Außerdem gibt es in Brainfuck keine vom Benutzer definierten Funktionen/Prozeduren, Klassen, oder sonstige störende Phänomene, und die Verwendung eines EOF ist strengstens untersagt.
Syntax
Die Befehle werden häufig schlicht aneinander gereiht. Jedoch darf hinter jedem Befehl zur besseren Wartbarkeit optional ein doppeltes Semikolon eingefügt werden. Populär sind darüber hinaus auch sporadische "BEGIN...END"-Blöcke oder geschweifte Klammern, die eingesetzt werden um dem Brainfuck-Interpreter ein spannendes Leseabenteuer zu gewährleisten.
Einzeilige Kommentare werden mit zwei '/' angekündigt. Sie werden aber von einigen Brainfuck-Programmierern geächtet weil aus ihnen (angeblich) schwer kalkulierbares Verhalten resultiert.
Beispiele
Jedes Zeichen einmal ausgeben
Dies ist der Beweis, Brainfuck ist die einfachste Programmiersprache:
+[.+]
Ein einfaches Beispiel: Ausgabe der Zahlen 1 bis 7
// >+++++++ Brainfuck Beispielprogramm "von 1 bis 7" [ :-) <3 :+) :> :> ) +++++++<
Gib die Zahl Eins aus! // (gibt 1 aus]
Gib die Zahl Zwei aus! // (gibt 2 aus)
Gib die Zahl Drei aus! // (gibt 3 aus)
Gib die Zahl Vier aus! // (gibt 4 aus)
Gib die Zahl Fünf aus! // (gibt 5 aus)
Gib die Zahl Sechs aus! // (gibt 6 aus)
Gib die Zahl Sieben aus! // (gibt 7 aus)
// <3 [ :->> Das war dann auch schon das Programm. + Kommentare mit Smilies !!! <<o: ]
Für die Fortgeschrittenen: Brainfuck in Firefox in Brainfuck
>++++++++[<++++++++ >-]<++.>++++++[<+++++++ >-]<++++++.>++++[<---- >-]<-.>++[<+++ >-]<++.+++++.>++[<--- >-]<--.>+++[<++++ >-]<+++.>++++[<---- >-]<--.>++[<+++ >-]<++.>++++++++[<--------- >-]<---.>++++++++[<+++++++++ >-]<+.>+++[<+++ >-]<+.+.>+++++++++[<--------- >-]<---.>++++++++[<++++++++ >-]<+++++.++++.+++++.>+++[<--- >-]<.>++++++++[<-------- >-]<-----.>+++++++++[<+++++++++ >-]<++.----.>++[<--- >-]<--.--.>+++[<+++ >-]<.>+++[<---- >-]<-.>+++[<++++ >-]<+..++++++.>+++[<---- >-]<---.>++++++++[<-------- >-]<-----.>++++++++[<++++++++ >-]<+++++.>+++[<++++ >-]<++.----.+++++.>+++[<---- >-]<---.>+++[<++++ >-]<+.>+++[<--- >-]<.>+++[<+++ >-]<+.>++++[<---- >-]<.+++++.---.>++++++++[<-------- >-]<-----.>++++++[<+++++++ >-]<++++++.>+++++[<++++++ >-]<++++.---.>++[<--- >-]<--.>+++[<+++ >-]<++.>++++[<---- >-]<-.>+++[<++++ >-]<..----.----.>+++[<++++ >-]<+.+.---.++.>++++[<---- >-]<-.++.+++++.---.>+++++++[<-------- >-]<-.>+++[<---- >-]<.>++++++++[<++++++++ >-]<+++++.>+++[<+++ >-]<.++++++.+++.>++[<--- >-]<--.+++.>+++[<---- >-]<.-.>+++[<+++ >-]<.>++++++++[<--------- >-]<------.>+++++++++[<+++++++++ >-]<+++++.>++[<--- >-]<-.--.>++++++++[<--------- >-]<-----.>+++++++[<+++++++ >-]<++.>++++[<++++ >-]<.+++++.>+++[<++++ >-]<+++.>++++[<---- >-]<--.++++.>++++[<++++ >-]<+.>++++[<----- >-]<-.>+++[<++++ >-]<+.>+++++++++[<--------- >-]<-.>+++++++[<+++++++ >-]<++++.>+++++[<+++++ >-]<++++.>++++[<---- >-]<.-.>+++[<++++ >-]<+.>++++++++[<--------- >-]<------.>++++++[<+++++++ >-]<+++.>++++++[<++++++ >-]<++++.>++++[<---- >-]<.>++[<+++ >-]<+..>++[<--- >-]<-.>+++[<++++ >-]<+.>+++++++++[<--------- >-]<-.>+++++++++[<+++++++++ >-]<++++.>++[<--- >-]<--.>++++++++[<--------- >-]<-----.>++++[<++++ >-]<+.>++[<+++ >-]<++..------.-----.>+++[<---- >-]<--.>++++++[<++++++ >-]<.>++++++[<++++++ >-]<+.----.>++++++++[<-------- >-]<-----.>+++++++[<+++++++ >-]<++.>+++++[<+++++ >-]<++++.++.>++++[<---- >-]<-.++.+++++.---.>++++++++[<-------- >-]<-----.>+++++++++[<+++++++++ >-]<++++++.>+++[<---- >-]<--.>+++[<+++ >-]<.>+++[<---- >-]<--.>++++++++[<-------- >-]<----.>++++++++[<+++++++++ >-]<+++++.>+++[<---- >-]<.>+++[<++++ >-]<+.>+++[<--- >-]<--.+++++.+++++.>+++[<---- >-]<.>+++[<+++ >-]<++.>++++++++[<--------- >-]<----.>++++++++[<++++++++ >-]<+.>++++[<+++++ >-]<.>++++[<---- >-]<--.+++++.>++++++++[<--------- >-]<.>+++++[<++++++ >-]<++++.>++++++[<+++++++ >-]<++++++.>++++[<---- >-]<-.>++[<+++ >-]<++.+++++.>++[<--- >-]<--.>+++++++[<-------- >-]<----.>+++++++[<++++++++ >-]<+.>++[<+++ >-]<++.>+++++++[<-------- >-]<-------.>+++[<---- >-]<.>+++++[<++++++ >-]<++++.>++++++[<+++++++ >-]<++++++.>++++[<---- >-]<-.>++[<+++ >-]<++.+++++.>++[<--- >-]<--.>+++++++[<-------- >-]<----...>+++[<--- >-]<-.>++++++++[<+++++++++ >-]<+++++++.>+++[<--- >-]<--.+.>+++[<++++ >-]<+.>+++++++++[<--------- >-]<-.>+++++[<++++++ >-]<++++.++++.>++++++[<------ >-]<--.>++++++++[<++++++++ >-]<+++++++.--.>+++[<+++ >-]<.>+++[<---- >-]<-.>+++[<++++ >-]<+..++++++.>++++++++[<-------- >-]<------.>
Fakten
- Vista wurde in Brainfuck programmiert (Das ist eine Leistung!!!)
- übermäßiges B.-Programmieren kann Nasenlähmung auslösen.
Sprachvarianten
Brainfuck ist die Erweiterung folgender Vorgängersprachen:
Brain - Die Basicvariante
Brain++ - Die Inkrementierte Variante
Brain# - Die "noch son Zeichen" Variante
Brainfire - Die krematierte Variante
Masterbrain - Für Spieler
Getthebrainoutofhere - Für Singleusersysteme
Braindead - Für das Leben danach
Tarnung
Wer sich heute fragt was aus dieser Sprache geworden ist, ist keiner von den Wenigen, die sich das aus reiner Neugier fragen. Für die die das doch interessiert die mögen sich jetzt festhalten, denn das ist wirklich unglaublich.
Dies ist eine sehr lange Geschichte die bis heute noch bekannt ist.
Eines Tages erfuhr John T. Chambers von Brainfuck. Dieser hatte vor CISCO Systems zu gründen um Leuten die sich im späteren Beruf mit der Vernetzung von Computern auseinandersetzen möchten das Gehirn aus dem Menschen durch das "aufploppen" der Schädeldecke hinauszuficken. Gefolgt von der Seele und ganz zu schweigen die Lust am Leben. So beschloss er sich Brainfuck als Basis zum konfigurieren der Maschinen die für die Erreichung dieser Ziele zuständig sind zu konfigurieren.
Eines sollte man Ihnen lassen. Nämlich was die Verdeutlichung angeht. Denn schließlich waren sie ja auch sehr Zielstrebig! Schlussendlich gaben sie dem neuen Brainfuck den Namen IOS. Und so wurde daraus das Betriebssystem zum Konfigurieren ihrer Routers und Switches.
Weblinks
http://de.wikipedia.org/wiki/Brainfuck - Brainfuck-Seite des Stupidedia-Klons
http://esolangs.org/wiki/Brainfuck - Brainfuck-Seite einer weiteren Stupidedia-Kopie
http://nagelkopf.de/php/php-brainfuck-klasse/ - Brainfuck-PHP Klasse für self -Brainfucks
wikiPage[] articleList = { A, Assembler, BASIC, Brainfuck, C, C++, C-Sharp, COBOL, D, Delphi, Eick#, Eiffel, Gehirnassembler, Haskell, HTML, Java, JavaScript, Logo, NXC, Pascal, Perl, PHP, Python, Robot Karol, SQL, Tcl, UML, Visual Basic, ZLORFIK };
} else if(article.Exists()) {
wikiPage[] articleList = { Programmer-Lang, Was deine Programmiersprache über dich verrät, Rekursive Programmierung};
} else {
}