vorherigerMenunächster

Brainf**k / Ook

Funktionsweise und Beispiel

Brainfuck ist eine so genannte esoterische Programmiersprache, entworfen vom Schweizer Urban Müller um 1993. Die Sprache wird manchmal auch Brainf*ck, Brainf*** oder BF genannt. Brainfuck ist zwar für den ernsthaften Einsatz zu umständlich und ineffizient, aber gut geeignet, um Grundlagen der Computertechnik zu lernen. Speziell zeichnet sich Brainfuck durch ein extrem einfaches Sprachkonzept und hochkompakte Realisierung des Compilers aus, gleichzeitig wurde aber die (prinzipielle) universelle Einsetzbarkeit nicht eingeschränkt. BF besteht lediglich aus 8 Zeichen:

Das folgende Programm gibt den Text "Hello World!" und einen Zeilenumbruch aus.

Die Funktion des Programmcodes (für technisch versiertere Leser):
Zunächst wird die erste (die "nullte") Zelle des Datenfelds auf den Wert 10 gesetzt (a[0] = 10). Eine Schleife am Anfang des Programms errechnet dann mit Hilfe dieser Zelle weitere Werte für die zweite, dritte, vierte und fünfte Zelle. Für die zweite Zelle wird der Wert 70 errechnet, welcher nahe dem ASCII-Wert des Buchstaben 'H' (ASCII-Wert 72) liegt. Die dritte Zelle erhält den Wert 100, nahe dem Buchstaben 'e' (ASCII-Wert 101), die vierte den Wert 30 nahe dem Wert für Leerzeichen (ASCII-Wert 32), die fünfte den Wert 10, welches dem ASCII-Zeichen "Line Feed" entspricht und als Zeilenumbruch interpretiert wird.

Die Schleife errechnet die Werte, indem einfach auf die zu anfangs mit 0 initialisierten Zellen 10-mal 7, 10, 3 und 1 addiert wird. Nach jedem Schleifendurchlauf wird a[0] dabei um eins verringert, bis es den Wert 0 hat und die Schleife dadurch beendet wird.

Am Ende der Schleife hat das Datenfeld dann folgende Werte: a[0] = 0; a[1] = 70; a[2] = 100; a[3] = 30; a[4] = 10;

Als nächstes wird der Zeiger auf die zweite Zelle des Datenfelds (a[1]) positioniert und der Wert der Zelle um zwei erhöht. Damit hat es den Wert 72, welches dem ASCII-Wert des Zeichens 'H' entspricht. Dieses wird daraufhin ausgegeben. Nach demselben Schema werden die weiteren auszugebenden Buchstaben mit Hilfe der durch die Schleife initialisierten Werte, sowie der bereits verwendeten Werte, errechnet.

Quelle: Wikipedia

Ook! ist eine Variante der esoterischen Programmiersprache Brainfuck für Orang-Utans, entwickelt von David Morgan-Mar. Obwohl bei Ook! der humoristische Ansatz im Vordergrund steht, eignet es sich gut dazu einige Grundlagen zum Design von Programmiersprachen zu verdeutlichen. Wie Brainfuck ist auch Ook! Turing-vollständig (das heißt einfach gesagt, dass alle denkbaren Programme damit geschrieben werden können), obwohl es einen sehr kleinen Syntaxumfang hat. Die Designkriterien der Sprache sind:
  1. Eine Programmiersprache sollte schreib- und lesbar für Orang-Utans sein.
  2. Die Syntax sollte einfach sein, leicht zu merken und das Wort Monkey (engl. Affe) vermeiden.
  3. Bananen sind gut.
Augenscheinlich ist diese Programmiersprache angelehnt an die Bibliothekarsfigur aus den Scheibenweltromanen von Terry Pratchett (Vergleiche hierzu dessen Eigenschaft, jedes Wort und jeden Satz mit "Ook" ("Ugh" im Deutschen) ausdrücken zu können und seine Empfindlichkeit, wenn er als "Monkey" bezeichnet wird - er bevorzugt "Ape"). Ook hat nur drei Syntaxelemente: "Ook.", "Ook?" und "Ook!". Diese werden zu Zweiergruppen zusammengefasst. Die Ook-Tupel (Ook? Ook? wird nicht verwendet) lassen sich wie Brainfucksymbole nutzen, das ebenfalls nur acht Befehlsbezeichnungen kennt. Jedes Ook!-Programm besteht also aus einer geraden Zahl von Ooks.

Dies ist ein Beispielprogramm, das in Ook! programmiert ist. Es gibt "Hello World" auf der Standardausgabe aus.
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.
http://de.wikipedia.org/wiki/Ook!

Bedienung

Dies ist ein Interpreter für die beiden Programmiersprachen.

Eingabe
  1. Eingabe des Textes, welcher in Brainf**k oder Ook! übersetzt, bzw. eines Skriptes, aus welchem die Textausgabe generiert werden soll.
  2. Auswahl des Modus: Die beiden Modi "Ook zu ..." erlauben die einfache Eingabe der drei Satzzeichen (also braucht man nicht immer "Ook" mitzuschreiben). Ebenfalls filtern diese beiden Funktionen alle Nicht-Satzzeichen heraus, so dass sogar aus großen normalen Texten, Ook-Code extrahiert wird ;)
  3. "Los geht's!"-Button :)
  4. Wie schon beschrieben und in Bild 1b zu sehen, erscheint dieses Feld bei der Konvertierung von Skript zum Text. Das hat die Bewandnis, dass die Skripte voll funktionsfähige Computerprogramme sein können, die auch Nutzereingaben erwarten können. Diese kann man dann in dieses Feld eingeben. Im Normalfall kann man das aber beruhigt ignorieren.
Ausgabe
Der Ergebnistext in Anbhängigkeit vom ausgewählten Modus.