Esolangs
Aus exmediawiki
Version vom 18. September 2020, 11:06 Uhr von C.heck (Diskussion | Beiträge) (→Bsp.: SHAKESPEARE PROGRAMMING LANGUAGE)
Liste von "Hallo Welt"- Programmen mit esoterischen Programmiersprachen: https://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen/Sonstige#Esoterische_Programmiersprachen
Esoterische Programmiersprachen
- haben nichts mit Esoterik an sich zu tun
- verfolgen Konzepte fern der konventionellen Programmiersprachen
- sind nicht für den praktischen Einsatz entwickelt worden
- Anwendung z.B. als Proof of Concept
- oft nur Theorien/Ideen ohne wirkliche Implementierung
- können hohen akademischer Wert haben
- sind aber oftmals einfach nur ein Witz
Sie können unterteilt werden in:
Inhaltsverzeichnis
Befehlende Sprachen
Befehlende Sprachen sind J-A-J-I-Sprachen (Jochebed, Aaron, Jafet, Isaschar)
- Befehlende Sprachen sind wortreich und deterministisch und verwenden Register
- Befehlende Sprachen können lesbar oder unlesbar sein
- Befehlende Sprachen sind Abwandungen von langweiligen imperativen Programmiersprachen
Bsp.: .GERTRUDE
see exMediawiki-Page: .Gertrude
Bsp.: LOLCODE
Entwickelt von:
- Adam Lindsay (Mai 2007)
Designkriterien:
- Sprache muss für LANs verständlich sein
- Syntax muss am Puls der Zeit sein (1337)
Es existieren:
- Compiler und Interpreter
- Syntax Highlighting für vim, eclipse
- LOLCODE.NET
Syntax
Anweisungen werden mit . oder neuer Zeile getrennt
- Kommentare beginnen mit
BTW
- Ein Block wird mit
HAI
begonnen und mitKTHXBYE
geschlossen CAN
HAS
bindet Bibliotheken einVISIBLE
gibt Text aus,GIMMEH
liest Text ein- Alle Variablen müssen mit
I HAS A
ITZ
<type> deklariert werden und bekommen einen der drei TypenNUMBAR
(Zahl),YARN
(String) oderBUKKIT
(Array)
"Hello World"
HAI
CAN
HAS
STDIO ?
VISIBLE
"HAI WORLD!"
KTHXBYE
Turingmaschinenbasierte Sprachen
- Befehlende Sprachen sind H-M-S-I-Sprachen (Heftzibah, Mose, Sem, Isaschar)
- Befehlende Sprachen sind un-wortreich, (dadurch) unlesbar und deterministisch
- Turingmaschinenbasierte Sprachen basieren auf Turingmaschinen
- Wir bewegen uns mit einem Pointer auf einem unendlichen Band, das wir beschreiben
- Es gibt Schleifen, Ein- und Ausgabe
Bsp.: WHITESPACE
Entwickelt von:
- Edwin Brady und Chris Morris (Mai 2002)
Syntax
Die Befehle und Steueranweisungen bestehen im Gegensatz zu üblichen Programmiersprachen aus definierten Folgen von Leerzeichen, Tabs und Zeilenumbrüchen (engl. Whitespaces). Auch Daten werden damit dargestellt (binär mittels Tab (=1) und Leerzeichen (=0), Endezeichen Zeilenumbruch).
"Hello World"
(Markieren, um Whitespaces sichtbar zu machen):
Stackbasierte Sprachen
- Stackbasierte Sprachen sind H-A-H-I-Sprachen (Heftzibah, Aaron, Ham, Isaschar)
- Stackbasierte Sprachen sind wortreich, aber unlesbar, und deterministisch
- Stackbasierte Sprachen haben einen oder mehrere Stacks
Bsp.: SHAKESPEARE PROGRAMMING LANGUAGE (SPL)
see exMediawiki-Page: Shakespeare Programming Language
Bsp.: BEATNIK
siehe: Beatnik
Mehrdimensionale Sprachen
- Mehrdimensionale Sprachen sind H-M-H-I-Sprachen (Heftzibah, Mose, Ham, Isaschar)
- Mehrdimensionale Sprachen sind un-wortreich, un-lesbar und deterministisch
- Sie benutzen einen Stack zur Speicherung von Werten
- Ein Programmzeiger startet in der linken oberen Ecke, die Richtung ändert sich während des Programmes
Bsp.: PIET
Wikipedia-Eintrag: https://de.wikipedia.org/wiki/Piet_(Programmiersprache)
Entwickelt von:
- David Morgan-Mar (<= 2002)
Designkriterien:
- Programme sollen aussehen wie abstrakte Kunst
- Besonders schöne Programme sehen aus wie Bilder von Piet Mondrian
Es existieren:
- Interpreter
- Piet-Editor mit Traces
- Online Piet Editor und Compiler (Demo)
Die kleinste semantische Einheit in einer solchen Bilddatei ist ein „Codel“ (Zusammensetzung von „Code“ und „Pixel“), ein – in der visuellen Repräsentation als Bild – Quadrat aus n2 Pixeln gleicher Farbe. Dieser Wert n wird dem Piet-Interpreter als Parameter übergeben und für die visuelle Darstellung von Piet-Programmen so gewählt, dass ein optisch ansprechendes (nicht zu kleines) Bild resultiert. Bei den Beispielen rechts hat n den Wert 4 (oben) beziehungsweise 11 (unten).
Technisch muss der Programmcode in Form einer Bilddatei im GIF-Format vorliegen. Piet ist eine Interpretersprache, das heißt der Piet-Interpreter liest den Inhalt der Datei (hier einer Bilddatei) mit dem Quelltext bitweise ein und interpretiert die darin enthaltenen Informationen als Programmbefehle.
Syntax
- Piet ist eine grafische Programmiersprache
- Zwei Programmzeiger bewegen sich durch das Bild und werden durch Farbübergänge gedreht
- Es gibt einen Stack, auf den Werte gepusht werden können
- Die Zahl der Codels ("Code + Pixel") in einer zusammenhängenden Farbfläche repräsentiert einen Integer
- Der Übergang von einer Farbe zur nächsten triggert eine Anweisung
- Schwarze Felder können nicht betreten werden, der Programmzeiger bleibt hängen und wählt eine andere Richtung
- Durch weiße Farbfelder gleitet der Programmzeiger ohne Veränderung
Befehlssatz von Piet
- Hue Cycle: red → yellow → green → cyan → blue → magenta → red
- Lightness Cycle: light → normal → dark → light
"Hello World"
"Piet"
Stochastische Sprachen
- Stochastische Sprachen sind H-M-J-Z-Sprachen (Heftzibah, Mose, Jafet, Zebulon)
- Stochastische Sprachen sind un-wortreich, un-lesbar und arbeiten auf beliebigen Maschinen
- Stochastische Sprachen sind nicht deterministisch
- Programme tun mit einer gewissen Wahrscheinlichkeit das, wozu sie geschrieben wurden
Bsp.: JAVA2K
...
Seiten in der Kategorie „Esolangs“
Folgende 4 Seiten sind in dieser Kategorie, von 4 insgesamt.