JASm Core – eine esoterische Programmiersprache

Moderne Programmiersprachen glänzen durch einen umfangreichen Befehlssatz und effizienter Programmierlogik. Komplexe Algorithmen lassen sich teilweise gut verständlich abbilden und dass tief darunter ein Maschinencode entsteht, für den es auch einmal „maschinennahe“ Codiermöglichkeiten (Assembler) gab, hat man schnell vergessen.

Meine letzte Berührung mit Assembler ist – glücklicherweise – nun auch schon über 20 Jahre her und dennoch ist eine gewisses Faszination geblieben. Kombiniert für das Interesse an esoterischen Programmiersprachen ist es nicht mehr weit, bis ein über 20 Jahre altes Konzept noch einmal aus der mentalen Schublade hervorgekramt wird: JASm.

Esoterische Programmiersprachen

Der Titel klingt exotischer oder mystischer, als es eigentlich ist. Unter einer esoterischen Programmiersprache wird eine Sprache verstanden, mit der man zwar ein Computerprogramm implementieren kann, die aber mehr akademischen Charakter hat, da es ihr in der Regel an Effizienz mangelt. Bekannte und interessante Vertreter dieser Disziplin sind Brainfuck, Ook! oder auch die Shakespeare Programming Language (SPL).

Brainfuck kommt mit exakt sechs Zeichen (+, -, >, <, [ und ]) aus. Ook! verwendet 2er Tupel von drei verschiedenen Codes (Ook., Ook! und Ook?), während SPL Sonette á la Shakespeare zum Quelltext hat.

Tatsächlich ist, trotz ihres exotischen Daseins, bei diesen Sprachen eine Turing-Vollständigkeit gegeben, was letztlich bedeutet, dass sie alles abbilden können, was eine Programmiersprache abbilden können muss.

JASm

Mit meiner minimalistischen Programmiersprache gehe ich gar noch einen Weg weiter, indem ich postuliere, dass es nur exakt zweier Befehle bedarf, um eine vollständige Programmiersprache zu realisieren. Dabei sind die Befehle mehr an Assembler Befehle angelehnt, als es die oben genannten esoterischen Programmiersprachen sind. Es handelt sich hierbei um eine Subtraktion (SUB) und einen bedingten Sprung (JA), die unter anderem auch namensgebend sind..

Im Folgenden werde ich auf diese beiden Befehle, die den JASm Core bilden, näher eingehen und die JASm Maschine vorstellen. In einem weiteren Beitrag werden dann ein paar Erweiterungen vorgestellt, die die Programmierung in JASm etwas komfortabler machen, aber den Kern (die zwei Befehle) nicht verändern. In einem dritten Beitrag folgen dann einige Programmierbeispiele in JASm.

Beitrag vorlesen lassen

Kommentar hinterlassen

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.