Seiten

Donnerstag, 21. April 2011

Blogplan Teil 7

Programmiersprachen und Vertreter verschiedener Konzepte


Esoterische Programmiersprachen


Ich erkläre das Thema der Geschichte der Programmiersprachen hiermit als beendet. Als nächstes möchte ich mich um ein bischen Unterhaltung kümmern und gehe auf die etwas merkwürdigeren Vertreter aus der Gattung der Programmiersprachen ein.
Hierhin fallen auch alle sogenannten "Esotherischen Programmiersprachen",  welche laut Wikipedia zur Umsetzung ungewöhnlicher Sprachkonzepte da sind. Als einen Vertreter aus diesen Reihen möchte ich das nicht zu unrecht so genannte *Entschuldigung* "Brainfuck", nennen, auch Brainf*ck, Brainf*** oder BF genannt.
Laut Wikipedia dient Brainf*** unter anderem um Grundlagen der Computertechnik zu lernen.

Hier ein Codebeispiel:


++++++++++
 [
  >+++++++>++++++++++>+++>+<<<<-
 ]                       Schleife zur Vorbereitung der
                         Textausgabe
 >++.                    Ausgabe von 'H'
 >+.                     Ausgabe von 'e'
 +++++++.                'l'
 .                       'l'
 +++.                    'o'
 >++.                    Leerzeichen
 <<+++++++++++++++.      'W'
 >.                      'o'
 +++.                    'r'
 ------.                 'l'
 --------.               'd'
 >+.                     '!'
 >.                      Zeilenvorschub
 +++.                    Wagenrücklauf

Die Kommentare machen deutlich, dass es sich um eine Sprache handelt die stark an Assembler erinnert. Brainfuck besitzt lediglich acht Befehle, mit denen sich alle prozeduralen Funktionen ausführen lassen:

Zeichen C-Äquivalent Semantik
> ++ptr; inkrementiert den Zeiger
< --ptr; dekrementiert den Zeiger
+ ++*ptr; inkrementiert den aktuellen Zellenwert
- --*ptr; dekrementiert den aktuellen Zellenwert
. putchar(*ptr); Gibt den aktuellen Zellenwert als ASCII-Zeichen auf der Standardausgabe aus
, *ptr = getchar(); Liest ein Zeichen von der Standardeingabe und speichert dessen ASCII-Wert in der aktuellen Zelle
[ while (*ptr) { Springt nach vorne, hinter den passenden ]-Befehl, wenn der aktuelle Zellenwert null ist
] } Springt zurück, hinter den passenden [-Befehl, wenn der aktuelle Zellenwert verschieden von null ist

Der Entstehende Code ist aufgrund der wenigen Verwendeten Symbole und der kaum vorhandenen Struktur sehr schwer zu lesen, was der Sprache wohl zu Ihrem Namen verholfen hat.

Keine Kommentare:

Kommentar veröffentlichen