Eine esoterische Programmiersprache ist eine Programmiersprache, die die Normen des Sprachdesigns herausfordern soll. Es ist eine Sprache, um einen Punkt zu machen. Der Punkt könnte alles sein: die Herausforderung selbst, etwas Ungewöhnliches zu schaffen, einen ausgeklügelten Witz zu machen, eine Sprache als künstlerischen Ausdruck zu schaffen, vielversprechende Ideen für die Programmierung zu testen usw.
Dies sollte deutlich machen, dass es keine einfache Möglichkeit gibt, all die verschiedenen esoterischen Programmiersprachen richtig zu kategorisieren oder zu organisieren, da sie per Definition den Regeln trotzen. Aber wir könnten einige Konzepte und Organisationsprinzipien verwenden, um ein besseres Gefühl für die Gemeinschaft um sie herum zu bekommen. Damit wir verstehen können, wofür die Menschen sie verwenden, oder um diese Informationen als Inspiration zu verwenden, um Ihre eigene esoterische Sprache zu erstellen.
Laden Sie den Leitfaden mit 68 Ressourcen zum Erstellen von Programmiersprachen herunter
Erhalten Sie den Leitfaden in Ihren Posteingang, um ihn auf allen Ihren Geräten zu lesen, wenn Sie Zeit haben
Einige nützliche Konzepte
Turing Tarpit
Ein Turing Tarpit ist eine Programmiersprache, die Turing-vollständig, aber praktisch unbrauchbar ist. Eine Turing-vollständige Sprache kann jede Turing-Maschine simulieren. In der Praxis können Sie damit jedes Programm schreiben. Theoretisch sind also alle diese Sprachen gleich mächtig, aber diejenigen, die auch eine Turing-Tarpit sind, machen es unglaublich schwierig, irgendeine Art von Programm zu schreiben. Ein üblicher Weg, dies zu tun, besteht darin, die Anzahl der verfügbaren Symbole zu reduzieren: Versuchen Sie, sogar ein Hello World-Programm mit nur 8 Zeichen zu schreiben.
Quine
Ein Quine ist ein Programm, das als Ausgabe eine Kopie seines Quellcodes erzeugt. Das Programm kann nicht das leere Programm sein, selbst wenn das leere Programm ein gültiges Programm in der jeweiligen Sprache ist. Das Lesen des Quellcodes von der Festplatte oder dem Speicher wird ebenfalls als Betrug angesehen. Der Name „Quine“ wurde von Douglas Hofstadter in seinem Buch Gödel, Escher, Bach: Ein ewiger goldener Zopf zu Ehren des Philosophen Willard Van Orman Quine geprägt. Das Konzept von Quine ist also nicht nur in esoterischen Programmiersprachen zu finden, sondern stellt dennoch eine typische erste Herausforderung dar, die beim Schreiben einer solchen überwunden werden muss.
Code Golf
Ein Code Golf ist eine Art Wettbewerb, bei dem es darum geht, das kürzestmögliche Programm zu schreiben, das einen bestimmten Algorithmus implementiert. Kürzeste bedeutet in diesem Zusammenhang, den kürzesten Quellcode zu haben. Dies bedeutet nicht, dass der ausführbare Binärcode kleiner ist. Das Spielen von Code-Golf wird als „Golf-Scripting“ bezeichnet. Es gibt auch alle anderen Arten von Wettbewerben im Zusammenhang mit der Programmierung, die angesichts des Publikums häufig kreatives Betrügen fördern. Im Allgemeinen ist eine Herausforderung ein motivierender Faktor für viele esoterische Programmiersprachen.
Verschleierung
Das Konzept der Verschleierung, das heißt, um die wahre Bedeutung einer Nachricht zu verbergen, ist offensichtlich nicht exklusiv für esoterische Programmiersprachen oder sogar Programmierung im Allgemeinen. Aber es hat eine große Relevanz in vielen esoterischen Programmiersprachen. Vor allem, wenn Sie es im allgemeinen Sinne beabsichtigen, den Empfänger irrezuführen oder zu verwirren. Sie verstecken die Nachricht nicht, weil die Nachricht selbst wichtig ist, sondern weil die verborgene Form an sich das Ziel ist. Ein typischer Weg, dies zu erreichen, besteht darin, die Anzahl der Symbole der Sprache zu minimieren, aber Sie können eine Programmiersprache auch in etwas tarnen, das wie normaler Text oder ein Bild aussieht.
Nicht-Determinismus
In dieser größeren Bedeutung der Irreführung oder Verwirrung des Publikums kann Nicht-Determinismus auch verwendet werden, um dasselbe Ziel zu erreichen. Eine nicht deterministische Sprache ist eine Sprache, für die angesichts des aktuellen Zustands eines Programms der nächste Zustand nicht immer vorhergesagt werden kann. Das Konzept hat einige Verwendung in normalen Programmiersprachen, im Wesentlichen aufgrund unvorhersehbarer Bedingungen zur Laufzeit. Aber es wird von bestimmten esoterischen Programmiersprachen auf die Spitze getrieben, indem Variablen randomisiert oder sogar die Anweisungen selbst randomisiert werden.
Gruppen von esoterischen Programmiersprachen
Wie wir bereits gesagt haben, können wir keine erschöpfende Möglichkeit bieten, alle esoterischen Programmiersprachen zu organisieren. Und selbst wenn jemand es finden könnte, würde bald jemand anderes eine neue esoterische Programmiersprache erfinden, nur um es ungültig zu machen. Wir versuchen also einfach, einige Gruppen oder Kategorien anzubieten, um die Welt der esoterischen Programmiersprachen besser zu verstehen und zu erkunden.
- Sprachen mit einem objektiven Wert, obwohl dieser Wert nicht unbedingt ein extrinsischer oder typischer Wert ist. Ein grundlegendes Beispiel ist eine Sprache, die entwickelt wurde, um einen Code-Golf-Wettbewerb zu gewinnen: Ihr Wert kann gemessen werden, hat aber außerhalb der Gemeinschaft esoterischer Programmiersprachen keine Bedeutung. Die nützlicheren sind jedoch diejenigen, die ein ungewöhnliches Ziel erreichen sollen, z. B. das Umgehen von Sicherheitsmaßnahmen (siehe JSFuck ) oder das Definieren von Typ-0-Sprachen der Chomsky-Hierarchie (siehe Thue ).
- Unbrauchbare Sprachen. Dies sind Sprachen, die sehr schwierig zu bedienen sind. Dies kann ein explizites Ziel des Designers oder einfach ein Unfall des Designs selbst sein. Ein Benutzer kann sogar Spaß daran haben, sie für einige Zeit zu verwenden. Ein typischer Weg, um eine unbrauchbare Sprache zu erreichen, sowohl durch Design als auch durch Zufall, ist mit Minimalismus (siehe Brainfuck). Wenn Sie jedoch etwas fast Unmögliches verwenden möchten, benötigen Sie eine Sprache, die ein ternäres System verwendet und sich unter anderem absichtlich selbst verändert (siehe Malbolge ).
- Sprachen zum Testen einer Idee oder zum Beweisen von etwas. Dies sind Sprachen, die möglicherweise nicht direkt nützlich sind, aber sie sind ein gutes Testfeld für ein neues Konzept oder um etwas zu beweisen. Zum Beispiel eine Sprache, in der Programme in einem zweidimensionalen Raster angeordnet sind (siehe Befunge) oder eine fast reine funktionale Sprache (siehe Unlambda)
- Künstlerische Sprachen. Dies sind Sprachen, die mit der Idee entworfen wurden, einen künstlerischen Wert zu haben. Man könnte argumentieren, dass sie effektiv entweder zur Gruppe der Testsprachen oder zu denen mit objektivem Wert gehören. Wir haben sie in eine andere Kategorie eingeteilt, weil sie nicht wie Programmierung aussehen, aber sie sehen in der Regel interessant aus, auch wenn Sie sie möglicherweise nicht verwenden möchten. Zum Beispiel sehen sie aus wie abstrakte Kunst (siehe Piet) oder wie ein Shakespeare-Stück (siehe Shakespeare).
- Witze Sprachen. Dies sind Sprachen, die von Menschen mit einem seltsamen Sinn für Humor erfunden wurden. Wie eine Person, die sagt: „Willst du einen Witz hören? – dann liest es Krieg und Frieden, bevor wir schließen – Unser ganzes Leben ist ein Witz!“. Ein Beispiel ist eine satirische Sprache, in der sogar das Referenzhandbuch ein Witz ist (siehe INTERCAL)
Einige bemerkenswerte esoterische Sprachen
Natürlich ist dies keine erschöpfende Liste bemerkenswerter esoterischer Programmiersprachen, sondern eher eine Liste einiger weniger, die sich durch ihren Erfolg oder ihre Besonderheit auszeichnen.
Befunge
Das wichtigste esoterische Merkmal von Befunge ist, dass Programme in einem zweidimensionalen Raster angeordnet sind. Es ist auch eine stapelbasierte und reflektierende Sprache, sodass ein Programm sich selbst ändern kann. Das Hauptziel war es, eine Sprache zu entwerfen, für die es so schwierig wie möglich war, einen Compiler zu erstellen.
Die ursprüngliche Version, jetzt Befunge-93 genannt, ist nicht Turing vollständig, weil es eine Grenze von 80×25 auf die Rastergröße setzt. Aber eine neue Version, genannt Befunge-98, entfernt diese Grenze und es sollte Turing komplett sein. Befunge hat eine ganze Klasse von mehrdimensionalen Sprachen hervorgebracht, genannt Fungeoid.
Befunge verfügt über Befehle, die die Richtung nach oben, unten, links, rechts steuern und somit auch einen Zyklus erstellen können, zusammen mit traditionelleren Befehlen für die Ausgabe, binäre Operationen usw.
Ein Microsoft Word-Programm sieht so aus.
> vv ,,,,,"Hello"<>48*, vv,,,,,,"World!"<>25*,@
Brainfuck
Wahrscheinlich die berühmteste aller esoterischen Programmiersprachen, zeichnet sie sich durch ihren extremen Minimalismus aus. Sowohl in der Anzahl der verfügbaren Befehle als auch in einem sehr kleinen Compiler. Tatsächlich ist die zweite Bedingung der Grund für die erste, weil der Autor eine Sprache mit dem kleinstmöglichen Compiler erstellen wollte. Der Autor hat einen Compiler erstellt, der nur 240 Bytes verwendet. Manchmal hat später jemand anderes einen mit nur 100 Bytes erstellt. Eine natürliche Folge dieses Ziels ist, dass die Sprache schwer zu verwenden ist, obwohl sie Turing-vollständig ist. Kurz gesagt, es ist ein Turing Tarpit.
Es wird manchmal mit einer zensierten Schreibweise wie Brainf * ck oder vielen anderen Variationen bezeichnet.
Die Sprache besteht aus acht verschiedenen Befehlen, die einen Datenzeiger und zwei Byte-Ströme für die Eingabe und Ausgabe manipulieren. Es unterstützt auch Schleifen. Andere Zeichen außer denen, die die Befehle darstellen, werden als Kommentare betrachtet und vom Compiler ignoriert.
Dies ist ein Beispiel dafür, wie die Sprache funktioniert (aus dem Esolangs Wiki).
Code: Pseudo code:>> Move the pointer to cell2 Set cell2 to 0 << Move the pointer back to cell0 End while
Ein Hello World Programm sieht so aus.
++++++++>+>+>->>+<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Wenn Sie mehr erfahren möchten, können Sie auf der entsprechenden Wikipedia-Seite oder Esolangs-Seite nachsehen.
INTERCAL
INTERCAL war vielleicht nicht die erste esoterische Programmiersprache, aber es ist sicherlich die erste berühmte. Wie alt ist es? Es wurde 1972 erstellt und die erste Implementierung erfolgte mit Lochkarten. Die Sprache war als Parodie gedacht, aber auch, um etwas völlig Neues zu schaffen, das der Programmierwelt fremd ist. Der Name ist laut den Autoren kein Akronym:
Der vollständige Name des Compilers lautet „Compilersprache ohne aussprechbares Akronym,“Welches ist, aus offensichtlichen Gründen, abgekürzt „INTERCAL.“
Der Rest des INTERCAL-Referenzhandbuchs (PS-Format) ist ebenfalls voller unsinniger oder humorvoller Aussagen. Dies gilt sowohl für die Sprache, die sie beschreiben, als auch dafür, wie sie es tun. Zum Beispiel ist dies ein Abschnitt über Variablen
INTERCAL erlaubt nur 2 verschiedene Arten von Variablen, die 16-Bit-Ganzzahl und die 32-Bit-Ganzzahl. Diese
werden durch einen Punkt ( . ) bzw. two-spot ( : ), gefolgt von einer beliebigen Zahl zwischen 1 und 65535,
inklusive. Diese Variablen dürfen nur nicht negative Zahlen enthalten; daher haben sie die entsprechenden Bereiche von
Werten: 0 bis 65535 und 0 bis 4294967295. Beachten: .123 und :123 sind zwei verschiedene Variablen. Auf der anderen Seite
.1 und .0001 identisch sind. Darüber hinaus darf letzteres nicht als 1E-3 geschrieben werden .
Die Sprache erlaubt auch die Verwendung eines Modifikators PLEASE
. Es erfordert jedoch auch die Verwendung der richtigen Menge dieses Schlüsselworts. Es kann nicht zu wenig oder zu viel verwendet werden, das heißt, Sie müssen das richtige Maß an Höflichkeit zeigen. Der wirklich unlustige Teil ist, dass es eine undokumentierte Funktion im Originalhandbuch war. Ein Scherzhandbuch für ein Scherzhandbuch mag in Ordnung sein, aber eines, das unvollständig ist, ist inakzeptabel.
Dies ist ein Hallo Welt in einer Version von INTERCAL implementiert mit C: C-INTERCAL.
DO ,1 <- #13PLEASE DO ,1 SUB #1 <- #238DO ,1 SUB #2 <- #108DO ,1 SUB #3 <- #112DO ,1 SUB #4 <- #0DO ,1 SUB #5 <- #64DO ,1 SUB #6 <- #194DO ,1 SUB #7 <- #48PLEASE DO ,1 SUB #8 <- #22DO ,1 SUB #9 <- #248DO ,1 SUB #10 <- #168DO ,1 SUB #11 <- #24DO ,1 SUB #12 <- #16DO ,1 SUB #13 <- #162PLEASE READ OUT ,1PLEASE GIVE UP
Kurz gesagt, INTERCAL ist ein sehr aufwendiger Witz. Die Art von Witz, die Sie dazu bringen kann, seinen Schöpfer für seine Ausdauer zu bewundern oder an seiner Vernunft zu zweifeln, oder vielleicht beides.
JSFuck
Der Erfolg von Brainfuck hat die Schaffung vieler abgeleiteter Sprachen vorangetrieben, zu viele, um sie alle zu erwähnen. Aber das bemerkenswerteste ist JSFuck.
JSFuck ist keine richtige Sprache, aber es ist eher ein esoterischer Programmierstil von Javascript, der nur 6 Zeichen benötigt. Die resultierenden Programme sind gültige JavaScript-Programme und tatsächlich wurde es erfunden, um Sicherheitstechniken wie die Erkennung von Malware zu umgehen. Seine Eigenschaften machten es auch nützlich für die Code-Verschleierung.
Es funktioniert, weil Sie jeden Ausdruck in Javascript als beliebigen Typ auswerten können. repräsentiert also ein leeres Array, aber indem Sie ihm ein
+
voranstellen, können Sie es zwingen, es als Zahl 0 auszuwerten. Um einen Buchstaben wie a
zu erhalten, können Sie den Wert false
usw. bearbeiten. Das Endergebnis ist eine extrem ausführliche Sprache: Das Äquivalent von alert("Hello World!")
ist 22948 Zeichen lang.
Malbolge
Malbolge ist eine Sprache, die speziell entwickelt wurde, um fast unmöglich zu verwenden:
über eine kontraintuitive ‚verrückte Operation‘, Basis-Drei-Arithmetik und selbstverändernden Code
in den Worten seines eigenen Schöpfers.
Tatsächlich hat sogar der Autor nie ein Arbeitsprogramm damit geschrieben. Das erste Programm wurde von einem anderen Programm generiert, das einen heuristischen Suchalgorithmus implementierte. Die Sprache ist nicht Turing vollständig und es basiert auch auf einem Rechtschreibfehler von Malebolge, dem Achtkreis der Hölle in Dante Alighieris Inferno. Es hat also wirklich keine erlösende Qualität.
Ich werde nicht versuchen, es zu beschreiben, weil das Ganze explizit eine Übung in Frustration ist. Es gibt jedoch eine bemerkenswerte „verrückte Operation“, die erwähnenswert ist: Verschlüsselung. Die Sprache soll auf einer ternären virtuellen Maschine funktionieren und verfügt über drei Register, von denen eines einen Zeiger auf die aktuelle Anweisung enthält und heißt. Nachdem der Befehl ausgeführt wurde, ersetzt das Modulo 94 des Wertes in
den Wert in
, dann wird das Ergebnis gemäß einer Verschlüsselungstabelle verschlüsselt. Willkommen in der Hölle, in der Tat.
Some brave soul hat ein Hello World Programm erstellt.
(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc
Piet
Piet ist eine Sprache, in der Programme als abstrakte Gemälde im Stil von Piet Mondrian dargestellt werden. Es ist stapelbasiert und Turing komplett.
Es sind 18 farben bestellt nach farbton und helligkeit, plus schwarz und weiß. Diese letzten beiden haben eine besondere Bedeutung und werden für den Kontrollfluss verwendet. Die Programmausführung beruht auf zwei „Zeigern“: einem Richtungszeiger und einer Farbblockauswahl. Der DP kann nach oben, unten, links und rechts zeigen, während CC nur nach links und rechts zeigen kann. Die Kombination dieser beiden Zeiger bestimmt die Ausführung des Programms: Im Grunde genommen wird welcher Farbblock als nächstes ausgeführt. Die Größe eines Farbblocks stellt eine ganze Zahl dar. Wenn das Programm zwischen verschiedenen Farbblöcken wechselt, bestimmt deren Unterschied in Farbton und Helligkeit die Art des Befehls, der ausgeführt wird. Die Befehle sind die üblichen, wie einen Wert ausgeben, multiplizieren usw.
Das Hello World-Programm hat eine gewisse Schönheit.
Shakespeare
Shakespeare ist eine Sprache, die entworfen wurde, um zu haben: „schöner Quellcode, der Shakespeare-Stücken ähnelte“. Die Sprache hat wenige Befehle und ist funktional der Assemblersprache ähnlich, aber es überrascht nicht, dass sie ziemlich ausführlich ist.
Die Variablen müssen in einem Anfangsabschnitt deklariert werden und ihre Namen müssen gültige Shakespeare-Zeichen wie Romeo oder Julia sein. Diese Variablen sind Stapel, auf denen später Operationen wie Pop, Push und Input / Output ausgeführt werden. Der Name von Akten und Szenen dient als Goto-Beschriftung und als Ziel bestimmter bedingter Anweisungen. Zeichen, dh Variablen, müssen auf der Bühne aufgerufen werden, um manipuliert zu werden, und es können jeweils nur zwei auf der Bühne sein.
Die Linien stellen normalerweise numerische Konstanten dar: Einige Substantive und Adjektive werden in numerische Werte umgewandelt.
Hamlet: You lying stupid fatherless big smelly half-witted coward!Juliet: You are as villainous as the square root of Romeo!
Spezielle Wörter wie „Erinnern“ oder Kombinationen davon wie „Sprechen Sie Ihre Meinung“ führen Befehle aus. Dies sind normale Befehle wie das Verschieben von Werten auf das Stapelzeichen, das Ausgeben des Werts der aktuellen Variablen oder des entsprechenden ASCII-Zeichens.
Eine bedingte Anweisung wird durch eine Frage eines Zeichens und eine Antwort des anderen Zeichens dargestellt, die bestimmt, wohin die Frage gehen soll, wenn die Bedingung der Frage wahr ist.
Juliet: Am I better than you?Hamlet: If so, let us proceed to scene III.
Die Hello World ist so lang und produktiv wie ein Shakespeare-Stück.
The Infamous Hello World Program.Romeo, a young man with a remarkable patience.Juliet, a likewise young woman of remarkable grace.Ophelia, a remarkable woman much in dispute with Hamlet.Hamlet, the flatterer of Andersen Insulting A/S. Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo.Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! Scene II: The praising of Juliet.Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! Scene III: The praising of Ophelia.Hamlet: Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind! Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind! Act II: Behind Hamlet's back. Scene I: Romeo and Juliet's conversation.Romeo: Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind!Juliet: Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind! Scene II: Juliet and Ophelia's conversation.Juliet: Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind!Ophelia: Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind!
Thue
Thue ist eine Programmiersprache, die auf einem String-Rewriting-System basiert, das als Semi-Thue-System bezeichnet wird. Es ist nicht deterministisch und folgt dem Constraint-Programmierparadigma. Was bedeutet, dass die Variablen in Bezug auf die Einschränkung definiert sind (ex. etwas ist wahr oder falsch). Es ist ein Turing Tarpit.
Im Fall von Thue werden die Kostenbeschränkungen durch eine Liste von Substitutionsregeln in der Form dargestellt:
<string>::=<replacement>
Spezielle Formate dieses Formulars stellen die Eingabe, Ausgabe oder das Ende der Regelliste dar.
Die nicht deterministische Natur der Sprache kann gezeigt werden, indem zwei mögliche Ersetzungen für dieselbe Zeichenfolge angegeben werden. Beispielsweise:
- Sie schreiben eine Regel, die besagt, dass die Zeichenfolge
a
durchstupid
- ersetzt werden kannSie schreiben auch eine Regel, die besagt, dass die Zeichenfolge
a
durch ersetzt werden kannyou are
Wenn ein Programm ausgeführt wird, kann die Zeichenfolge a
durch eine der beiden Optionen ersetzt werden.
Auf die Liste der Regeln folgt eine Zeichenfolge, die den Anfangszustand darstellt.
Während das Schreiben eines nützlichen Programms schwierig sein kann, ist die typische Hello World zumindest nach dem Standard esoterischer Programmiersprachen recht einfach und verständlich.
a::=~Hello World!::=a
Unlambda
Unlambda ist eine (fast) reine funktionale Sprache, die eine rein funktionale Sprache zeigen soll (und wahrscheinlich, wie unpraktisch das wäre). Es basiert auf kombinatorischer Logik. Es ist Turing Complete und das erste funktionsfähige Turing Tarpit. Es basiert auf einigen Funktionen, einem apply Operator `
(dem Backquote-Zeichen) und unterstützt auch Eingabe / Ausgabe. Technisch funktioniert es nur bei Funktionen mit einem einzigen Argument, aber Funktionen mit mehreren Argumenten können in eine Folge von Funktionen übersetzt werden.
Ein Hello World Programm sieht fast lesbar aus.
`r```````````.H.e.l.l.o. .w.o.r.l.di
Andere interessante esoterische Sprachen
Fuge ist eine Sprache, die MIDI-Dateien als Quellcode verwendet. Die Intervalle zwischen den einzelnen Noten werden in bestimmte traditionelle Befehle wie Eingabe / Ausgabe oder Addition übersetzt.
Beatnik ist eine stapelbasierte Sprache, die aus einer Reihe englischer Wörter besteht; Leerzeichen und Interpunktion werden ignoriert. Die Wörter werden in traditionellen Befehlen entsprechend ihrem Wert im Spiel Scrabble konvertiert.
Whitespace ist eine Programmiersprache, in der nur Leerzeichen wie Tabulatoren und Leerzeichen gültig sind und jedes andere Zeichen ignoriert wird. Dies ist natürlich das Gegenteil des üblichen Verhaltens von Compilern, die Leerzeichen ignorieren. Angesichts dieser Eigenschaften kann es in einem polyglotten Programm verwendet werden, dh einem Programm, das für mehr als eine Sprache gültig ist. Solange die andere Sprache nicht Python oder eine andere Sprache ist, in der Leerzeichen wichtig sind.
GolfScript ist eine verkettende Programmiersprache, die entwickelt wurde, um Code-Golf-Wettbewerbe zu gewinnen.
Snowflake ist eine reversible selbstmodifizierende Sprache, in der sowohl der Interpreter als auch das Programm bei jedem Lauf geändert werden.
FRACTRAN ist eine Sprache, in der es eine Liste von Brüchen und eine Anfangszahl gibt. Ich bin mir nicht sicher, was es tut, aber es tut etwas, da es eine Wikipedia-Seite hat.
Iota und Jot sind zwei formale Sprachen, die jeweils als das einfachste formale System konzipiert sind. Von Natur aus können sie auch als gleichermaßen minimalistisch, Turing tarpit, Programmiersprachen betrachtet werden. Beide verwenden nur zwei Symbole und führen zwei Operationen aus. Ein Nachfolger namens Zot unterstützt ebenfalls Input/Output.
Entropy ist eine sehr treffend benannte Programmiersprache, die entwickelt wurde, um die Idee zu akzeptieren, die Kontrolle aufzugeben. Jede Ausgabe des Programms wird angenähert und jedes Mal, wenn auf die Daten zugegriffen wird, wird sie zufällig geändert. Die Sprache ändert das ursprüngliche Programm nicht, sodass die Ausgabe bei jeder Ausführung unterschiedlich ist, der Anfangszustand jedoch erhalten bleibt. Ein merkwürdiger Nebeneffekt der Randomisierung von Daten ist Drunk Eliza, eine Webversion des klassischen Eliza-Programms, in der der Therapeut betrunken zu sein scheint.
Monicelli ist eine Witzsprache, die auf dem Comedy-Film My Friends basiert. Ein typisches Programm sieht aus wie eine Reihe von unsinnigen italienischen Phrasen. Überraschenderweise ist dies sinnvoll, da der als Inspiration verwendete Film auch unsinnige Phrasen enthält. Es ist der Kreis des Wahnsinns.
Zusammenfassung
Die Welt der esoterischen Programmiersprache ist so aufregend wie verrückt: Es gibt keine Regeln, aber viele interessante Dinge. Ich hoffe, Ihnen ein etwas vernünftiges Fenster gegeben zu haben, was Sie erwarten können.
Wenn Sie mehr wissen oder an dieser Community teilnehmen möchten, empfehle ich Ihnen, sich Esolangs anzusehen. Diese Website ist zusammen mit Wikipedia die Quelle der meisten in diesem Artikel gezeigten Beispiele. Dort finden Sie auch Inspiration in einer Liste von Ideen für eine esoterische Programmiersprache.
Sie können auch den Blog von Marc C. Chu-Carroll in seinen vielen Inkarnationen im Laufe der Jahre interessant finden. Wie der Name Good Math, Bad Math andeutet, ist es hauptsächlich der Mathematik gewidmet. Nichtsdestotrotz hat es auch viele Analysen von esoterischen Programmiersprachen in einer Reihe namens Pathologische Programmierung (Sprache). Sie können zum Beispiel eine sehen, die der kleinsten Programmiersprache gewidmet ist.