Aktionen

Kategorie

Esolangs: Unterschied zwischen den Versionen

Aus exmediawiki

 
(23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
----
 
Esoterische Programmiersprachen
 
Esoterische Programmiersprachen
 
* haben nichts mit Esoterik an sich zu tun
 
* haben nichts mit Esoterik an sich zu tun
Zeile 16: Zeile 17:
 
* Befehlende Sprachen können lesbar oder unlesbar sein
 
* Befehlende Sprachen können lesbar oder unlesbar sein
 
* Befehlende Sprachen sind Abwandungen von langweiligen imperativen Programmiersprachen
 
* Befehlende Sprachen sind Abwandungen von langweiligen imperativen Programmiersprachen
 +
==Bsp.: .GERTRUDE==
 +
see exMediawiki-Page: [[.Gertrude]]
 +
 
==Bsp.: LOLCODE==
 
==Bsp.: LOLCODE==
Erfunden von:  
+
Entwickelt von:  
 
* Adam Lindsay (Mai 2007)
 
* Adam Lindsay (Mai 2007)
  
Zeile 53: Zeile 57:
 
* Es gibt Schleifen, Ein- und Ausgabe
 
* Es gibt Schleifen, Ein- und Ausgabe
 
==Bsp.: WHITESPACE==
 
==Bsp.: WHITESPACE==
Erfunden von:  
+
Entwickelt von:  
 
* Edwin Brady und Chris Morris (Mai 2002)
 
* Edwin Brady und Chris Morris (Mai 2002)
  
Zeile 90: Zeile 94:
 
</pre>
 
</pre>
  
 +
----
 
=Stackbasierte Sprachen=
 
=Stackbasierte Sprachen=
 
* Stackbasierte Sprachen sind H-A-H-I-Sprachen (Heftzibah, Aaron, Ham, Isaschar)
 
* Stackbasierte Sprachen sind H-A-H-I-Sprachen (Heftzibah, Aaron, Ham, Isaschar)
 
* Stackbasierte Sprachen sind wortreich, aber unlesbar, und deterministisch
 
* Stackbasierte Sprachen sind wortreich, aber unlesbar, und deterministisch
 
* Stackbasierte Sprachen haben einen oder mehrere Stacks
 
* Stackbasierte Sprachen haben einen oder mehrere Stacks
==Bsp.: SHAKESPEARE==
+
==Bsp.: SHAKESPEARE PROGRAMMING LANGUAGE (SPL)==
Erfunden von:
+
see exMediawiki-Page: [[Shakespeare Programming Language]]
* ? (?)
 
 
 
 
 
===Syntax===
 
* Ein Programm ist wie ein Drama von William Shakespeare
 
* Ein Programm folgt dem typischem Aufbau eines Dramas
 
* Aufbau: Titel, Dramatis Personae (Variablendeklarationen), Akte/Szenen (Anweisungen)
 
* Jeder Charakter der spricht, muss auf der Bühne stehen, Charaktere treten mit <code>[Enter]</code> auf und mit <code>[Exit]</code> (eine Person) oder <code>[Exeunt]</code> (mehrere Personen) ab
 
* Adjektive und Nomen entsprechen Zahlen (je nachdem ob sie ''nice'' sind oder nicht)
 
* Ausgabe mit Open your heart und Speak your mind
 
* Variablen sind Stacks, die mit Remember gefüllt und mit Recall geleert werden
 
 
 
==="Hello World"===
 
<pre>
 
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.
 
 
 
[Enter Hamlet and 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!
 
 
 
[Exit Romeo]
 
 
 
                    Scene II: The praising of Juliet.
 
 
 
[Enter Juliet]
 
 
 
Hamlet:
 
  Thou art as sweet as the sum of the sum of Romeo and his horse and his
 
  black cat! Speak thy mind!
 
 
 
[Exit Juliet]
 
 
 
                    Scene III: The praising of Ophelia.
 
 
 
[Enter 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!
 
 
 
[Exeunt Ophelia and Hamlet]
 
 
 
 
 
                    Act II: Behind Hamlet’s back.
 
 
 
                    Scene I: Romeo and Juliet’s conversation.
 
 
 
[Enter Romeo and Juliet]
 
 
 
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!
 
 
 
[Exit Romeo]
 
 
 
                    Scene II: Juliet and Ophelia’s conversation.
 
 
 
[Enter Ophelia]
 
 
 
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!
 
 
 
[Exeunt]
 
</pre>
 
  
 
==Bsp.: BEATNIK==
 
==Bsp.: BEATNIK==
siehe: [[Beatnik]]
+
see exMediawiki-Page: [[Beatnik]]
  
 
----
 
----
 +
 
=Mehrdimensionale Sprachen=
 
=Mehrdimensionale Sprachen=
 
* Mehrdimensionale Sprachen sind H-M-H-I-Sprachen (Heftzibah, Mose, Ham, Isaschar)
 
* Mehrdimensionale Sprachen sind H-M-H-I-Sprachen (Heftzibah, Mose, Ham, Isaschar)
Zeile 212: Zeile 114:
  
 
==Bsp.: PIET==
 
==Bsp.: PIET==
Erfunden von:  
+
see exMediawiki-Page: [[Piet]]
* 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"===
 
[[Datei:Piet_hello_big.png]]
 
==="Piet"===
 
[[Datei:Piet Program.gif]]
 
  
 
=Stochastische Sprachen=
 
=Stochastische Sprachen=
Zeile 255: Zeile 125:
 
==Bsp.: JAVA2K==
 
==Bsp.: JAVA2K==
 
...
 
...
 +
----
 +
=Links/Artikel=
 +
* https://esolangs.org/wiki/Main_Page
 +
* Liste von "Hallo Welt"- Programmen mit esoterischen Programmiersprachen: https://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen/Sonstige#Esoterische_Programmiersprachen
 +
* schöner Artilel: https://tomassetti.me/discovering-arcane-world-esoteric-programming-languages/
 +
* https://jaxenter.com/esoteric-languages-146286.html
 +
 +
 +
----
 +
----
 +
----

Aktuelle Version vom 19. September 2020, 14:39 Uhr


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:

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 mit KTHXBYE geschlossen
  • CAN HAS bindet Bibliotheken ein
  • VISIBLE gibt Text aus, GIMMEH liest Text ein
  • Alle Variablen müssen mit I HAS A ITZ <type> deklariert werden und bekommen einen der drei Typen NUMBAR (Zahl), YARN (String) oder BUKKIT (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

see exMediawiki-Page: 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

see exMediawiki-Page: 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

...


Links/Artikel





Seiten in der Kategorie „Esolangs“

Folgende 4 Seiten sind in dieser Kategorie, von 4 insgesamt.