Esoterische Programmiersprache

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. März 2016 um 03:06 Uhr durch Keimzelle (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Esoterische Programmiersprachen sind Programmiersprachen, die nicht für den praktischen Einsatz entwickelt wurden, sondern um ungewöhnliche Sprachkonzepte umzusetzen. Eine einfache Bedienung ist selten, teilweise werden Sprachen konzipiert, um möglichst komplizierte Algorithmen oder eine unverständliche Syntax zu haben, oft aber auch um neue Ideen auszuprobieren, oder um ungewöhnliche Möglichkeiten wie extreme Vereinfachung aufzuzeigen.

Mit Esoterik im eigentlichen Sinn haben esoterische Programmiersprachen nur dem Namen nach etwas zu tun: Da Esoterik im Allgemeinen als Synonym für abwegige Pseudowissenschaften gilt, wurde der Begriff auf diejenigen Programmiersprachen übertragen, die in den Augen Außenstehender ebenso sinnlos und abwegig erscheinen.

Die Motivation hinter der Entwicklung von esoterischen Programmiersprachen kann unterschiedlich sein. In einigen Fällen handelt es sich schlicht um akademische Scherze, häufig setzt sich aber der Entwickler der Sprache ein bestimmtes Ziel. So wurden zum Beispiel bei Brainfuck konventionelle Spracheigenschaften so weit wie möglich entfernt, bis eine turingmaschinenähnliche Sprache übrig blieb, die mit einem extrem kleinen Compiler auskommt.

Esoterische Programmiersprachen können dazu dienen, Konzepte für anwendungsbezogenere Programmiersprachen zu demonstrieren. Außerdem kann durch die Beschäftigung mit den verschiedenen esoterischen Programmiersprachen das Verständnis für „seriöse“ Programmiersprachen vertieft und das eigene strukturelle Denken verbessert werden.[1]

Beispiele

  • Beatnik – Wörter stehen für ihre Scrabble-Werte, von Cliff L. Biffle
  • Befunge – zweidimensionale Sprache von Chris Pressey
  • BIT – von David Morgan-Mar
  • Bo³ – ähnlich Befunge, von Markus Bode
  • Brainfuck – minimale imperative Programmiersprache, winziger Compiler von Urban Müller
  • Brainfuck2D – Brainfuck auf die Ebene projiziert
  • Chef – Code sieht aus wie ein Kochrezept, von David Morgan-Mar
  • 3Code – von Sean Heber
  • Cow – Code besteht aus Kuhlauten (Moo), basiert auf Brainfuck, von Sean Heber
  • Emoticon – hat Emoticons als Befehle
  • FRACTRAN – Turing-vollständige Sprache von Mathematiker John Horton Conway, Programme bestehen aus einer Folge positiver Brüche
  • GolfScript – Stack-orientierte Programmiersprache für Code Golf-Wettbewerbe, die eine sehr kompakte Notation erlaubt (teilweise einzelne Zeichen für komplexe Befehle)
  • Haifu – von David Morgan-Mar
  • HQ9+ – Programmiersprache spezialisiert auf triviale Aufgaben, von Cliff L. Biffle
  • INTERCAL – sollte das Programmieren erschweren, von Donald R. Woods und James M. Lyon
  • Iota and Jot – hat nur 2 Befehle
  • JSFuck ist gültiger JavaScript-Code, verwendet aber nur die Zeichen (, ), [, ], ! und +. Verschiedene, mehr oder weniger abenteuerlicher Umwege sind notwendig, um Zahlen, Buchstaben und Befehle zu erzeugen: 2 ist !+[]+!![], oder über die Erzeugung der Zeichenkette "1e1000" und deren Umwandlung zu einer Zahl, nämlich "Infinity", ist der Buchstabe "y" verfügbar.[2] Besonders ist, dass JSFuck als Werkzeug dienen kann, um die Erkennung schädlichen JavaScript-Codes zu umgehen.[3]
  • Java2Kwahrscheinlichkeitstheoretische Sprache, von Gerson Kurz
  • KaForkL – Programmieren mit RGB-Bildern inklusive grafischer IDE, von Kore Nordmann[4]
  • LOLCODE – Syntax besteht aus Netzjargon, von Adam Lindsay
  • Loopy – ähnlich Brainfuck2D
  • Malbolge – erklärtermaßen schlimmste Programmiersprache, von Ben Olmstead
  • Ook! – Syntax besteht einzig und allein aus dem Wort „Ook“ sowie den Zeichen: .?!, von David Morgan-Mar
  • Piet – Programmcode besteht aus Bildern, von David Morgan-Mar
  • Shakespeare Programming Language – Code sieht wie ein Stück von Shakespeare aus, von Kalle Hasselström und Jon Åslund
  • Taxi – Wegbeschreibung an einen Taxifahrer, von Sean Heber
  • Unlambda – minimale funktionale Programmiersprache
  • Whenever – von David Morgan-Mar
  • Whirl – von Sean Heber
  • Whitespace – Code besteht nur aus nichtdruckbaren Zeichen, von Edwin Brady und Chris Morris
  • Zombie – von David Morgan-Mar

Siehe auch

Literatur

  • Oliver Lau: Hexenwerk – Ein Plädoyer für esoterische Programmiersprachen. In: c’t 22/2007, S. 192–199.

Einzelnachweise

  1. Seminar Esoterische Programmiersprachen, Universität Oldenburg
  2. http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html (abgerufen am 9. März 2016)
  3. http://blog.checkpoint.com/2016/02/02/ebay-platform-exposed-to-severe-vulnerability/ (abgerufen am 9. März 2016)
  4. KaForkL – image programming language

Weblinks