Brainfuck, ABAP F***, WTF?

User-Exits, Erweiterungen und Zusatzentwicklungen – alles notwendig in der SAP-Welt. Doch manchmal (wie wir es vom Fleischhauer kennen) darfs ein Bisserl mehr sein – In diesem Fall einen Brainfuck-Interpreter in ABAP.

Bereits während meines Studiums hatte ich mich mit der esoterischen Programmiersprache beschäftigt. Genauer gesagt wollte ich ein Prozessordesign entwickeln, das Brainfuck-Code direkt ausführt. Die regulären Kaffeehausbesuche waren damals ein fester Bestandteil meines Lebens und ein Grund warum das Design nie über Skizzen und Blockdiagramme hinausgegangen war.  Wirkliche Tests auf Tauglichkeit unter der Verwendung eines FPGAs oder ähnlichem gab es also nie.

Brainfuck: Esoterisch, doch kein Hokuspokus

Bei Brainfuck handelt es sich um eine esoterische Programmiersprache. Dabei muss erwähnt werden, dass sich der Begriff „esoterisch“ in diesem Fall nicht auf pseudowissenschaftlichen Hokuspokus bezieht, sondern viel mehr verdeutlichen soll, dass die Programmiersprache für die praktische Anwendungsentwicklung ungeeignet ist.

Da Brainfuck Turing-vollständig ist, ist es dennoch möglich, dieselben Berechnungen durchzuführen, die in anderen Programmiersprachen wie C oder ABAP umgesetzt werden können. Es dürfte im Allgemeinen aber weitaus schwieriger sein, Algorithmen in Brainfuck umzusetzen als in anderen Sprachen, denn der Befehlssatz ist absolut minimalistisch. Er besteht aus genau acht Befehlen, die jeweils durch ein Zeichen dargestellt werden (für Details zum Befehlssatz sei auf Wikipedia verwiesen).

Weiters gibt es beispielsweise keine Gleitkommatypen, Unterprogramme oder Befehle für die Multiplikation, Division oder einer logischen XOR-Verknüpfung. Und auch Verzweigungen mittels „if“ können nicht einfach verwendet werden. Diese müssten mittels Schleifen umgesetzt werden, deren Laufbedingung nur eine Prüfung auf 0-Gleichheit zulässt.

Und weil ich immer auf der Suche nach neuen Herausforderungen abseits von Entwicklungen mit betriebswirtschaftlichem Nutzen bin, habe ich Anfang des Jahres einen Brainfuck-Interpreter in ABAP umgesetzt.

Die Implementierung ist in unserem ABAP F***-Repository auf GitHub verfügbar. Nachstehend gibt es noch ein kleines Programm in Brainfuck, mit dem die ABAP-Implementierung getestet werden kann.

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

 

Ein bisschen Spaß muss eben sein.

 

Teilen

Kommentare

Ihr Kommentar