Esoterische Programmiersprachen

vom 30.08.2008, 09:18 Uhr

In diesem Fall meint esoterisch nichts spirituelles sondern die ursprüngliche Bedeutung: eine nur für einen bestimmten Personenkreis bestimmte Philosohpie, im Gegensatz zur Exoterik, dem "öffentlichen" Wissen. Setzt man das voraus, so gibt es in der Tat einige Programmiersprachen, die nur einem kleinen Personenkreis bekannt sind und auch für diesen Sinn machen.

Wozu diese esoterischen Programmiersprachen gut sind? Für seriöse Programmierung taugen diese Sprachen in der Regel nicht, es sind eher anspruchsvolle Kunstwerke, die oft geniale Ideen in die Tat umsetzen. Genial deswegen, weil kaum konventionelle Eigenschaften von Programmiersprachen verwendet werden, so dass eine Sprache ähnlich der Turingmaschine übrig bleibt. Die Turingmaschine ist ein grundlegendes Konzept der Informatik - diese Maschine kann jedes mathematische Problem lösen, das durch ein Algorithmus beschrieben werden kann.

False ist eine sehr minimalistische der esoterischen Programmiersprachen. Der Anspruch des niederländischen Entwicklers Wouter van Oortmerssen ist hier durchaus gut umgesetzt: die Sprache ist mächtig, hat ein verwirrende Syntax und ein extrem kleiner Compiler übersetzt die Anweisungen in Maschinencode. Für den Amiga ist der Compiler in der Tat nur 1024 Byte groß. Wer fit im Umgang mit der umgekehrt polnischen Notation (UPN) ist, der findet sich auch in False schnell zu recht. So kann man mit kompakten Code durchaus komplexe Routinen schreiben.

Von False angeregt entwickelte der Schweizer Urban MüllerBrainfuck, auch eine sehr minimalistische Programmiersprache, deren für den Amiga entwickelter Compiler zunächst 240 Byte groß, später dann noch mal auf 200 Byte reduziert wurde. Aber auch der Befehlssatz ist mit acht verschiedenen Instruktionen extrem klein - eine Speicherstelle lässt sich mit einem Zeichen aus der Eingabeeinheit beschreiben, der Speicher kann zellenweise durchlaufen werden (vorwärts oder rückwärts), die einzelnen Speicherstellen können nur dekrementiert oder inkrementiert werden, es gibt eine einfache Schleifenkonstruktion und zuguterletzt können die Speicherstellen als Zeichen ausgegeben werden. Diese Sprache kommt einer idealen Turingmaschine schon sehr nahe.

Auch sehr bemerkenswert ist be funge (zu Deutsch: sei ein Depp). Dem Entwickler Chris Pressey waren False und Brainfuck noch nicht komplex genug. Befunge lebt in einem zweidimensionalen Speicher – der Quelltext wird in einer 80 mal 25 Zeichen großen Anordnung erstellt und gelesen. Durch die Begrenzung des Speicher ist diese Sprache zwar nicht Turing-Vollständig. Der Code kann sich aber selbst modifizieren und befunge ist daher für Experimente in dieser Richtung bestens geeignet.

Bei der von den Wissenschaftlern Edwin Brady und Chris Morris entwickelten Sprache Whitespace ist der Name Programm. Im Gegensatz zu anderen Programmiersprachen werden hier nur die nicht sichtbaren Symbole Leerzeichen (ASCII 32), Tabulator (ASCII 9) und Zeilenumbruch (ASCII 10) zum Programmieren verwendet. Um damit programmieren zu können, werden Opcodes benutzt, die sich aus mehreren Bytes zusammensetzen. Da der Whitespace-Code aus den Zeichen besteht, die in anderen Programmiersprachen ignoriert werden, kann dieser Code in andere Quelltexte integriert werden. Das kann man dann gern als polyglotte Programmierung sehen oder auch als Steganografie.

Und wer jetzt erst auf den Geschmack gekommen ist, dem sei das Esolang-Wiki ans Herz gelegt, hier finden sich noch mal etwa 400 esoterische Programmiersprachen,.

» JotJot » Beiträge: 14058 » Talkpoints: 8,38 » Auszeichnung für 14000 Beiträge



Das sind ja echt komische Programmiersprachen. Hab von denen natürlich noch nie was gehört. Im Grundstudium bin ich in meinem Informatikstudium auch einer sehr komischen Programmiersprache begegnet; und zwar Haskell.

Das ist eine rein funktionale Programmiersprache, mit der man viele Algorithmen sehr einfach und mit relatic wenig Code implementieren kann. Sowas wie Fibonacci Zahlen berechnen hat man in 4 Zeilecode implementiert; oder noch besser Quicksort in 3 Zeilen :) Sowas kann man mit C++ oder Java nicht so einfach machen. Dafür kann man Komplexere Programme, wo man Ergebnisse zwischenspeichern muss, gar nicht oder nur sehr umständlich machen.

Am Anfang dachte ich mir auch schon, wo wir das in der Vorlesung behandelt haben, wer so eine Programmiersprache überhaupt braucht und einsetzt. Aber anscheinend benutzen diese Programmiersprache doch schon einige Leute, aber anscheinend auch nur ein spezieller Personenkreis. :)

» Killyouridols » Beiträge: 517 » Talkpoints: 35,37 » Auszeichnung für 500 Beiträge


Da ich als Programmierer einer ganzen Menge Programmiersprachen begegnet bin (beispielsweise Java, C, C++, COBOL habe ich "richtig" gelernt und dann noch einige so nebenher mal "mitgenommen", wie Basic, WSH, Javascript und so), bin ich auch irgendwann mal bei den esoterischen Sprachen gelandet.

Das Konzept von Brainfuck fand ich dann recht faszinierend, mein Ehrgeiz war geweckt und ich hab binnen einer oder zwei Stunden mein erstes Progrämmchen dort zusammengeschrieben, damals noch ein ganz einfaches, das einfach nur meinen Namen ausgegeben hat, nur in dem ich die Werte in einer Speicherzelle immer hoch und runter geändert und dann entsprechend ausgegeben habe.

Später habe ich mich dann aus Langeweile im Büro noch einmal damit auseinandergesetzt und angefangen mich dran gemacht, mehr Ausgaben zu bauen und dazu weniger Zeichen Code zu brauchen, also mit Schleifen optimieren, mehrere Speicherzellen benutzen und so weiter, wenn ich so 2010 etwa wieder etwas Leerlauf im Büro habe, plane ich noch einen Schritt weiter zu gehen und dann noch etwas komplexere Progrämmchen zu schreiben.

Benutzeravatar

» crissi » Beiträge: 1137 » Talkpoints: -9,86 » Auszeichnung für 1000 Beiträge



Ähnliche Themen

Weitere interessante Themen

^
cron