Ezoterikus programozási nyelv
Az ezoterikus programozási nyelv olyan programnyelv, amelyet készítője nem mindennapi, gyakorlati programozási feladatok elvégzésére szán, hanem elkészítésével a programnyelvek tervezésével járó korlátokat feszegeti, művészeti célokat elégít ki, vagy akár viccel. Habár ezek a nyelvek általában nem alkalmasak gyakorlati szoftverfejlfesztési célokra, előfordulhatnak bennük olyan ötletek, amelyekből később az általános programnyelvek merítenek.
Az ilyen nyelveknek általában nem célja a használhatóság, gyakran épp az ellenkezője a cél, de mindemellett készítőik igyekeznek elérni, hogy a nyelv Turing-teljes legyen.
Történet
[szerkesztés]Az egyik első ezoterikus nyelv az INTERCAL volt, amelyet 1972-ben készített Don Woods és James M. Lyon. Kimondott céljuk volt a megszokott módszerekkel való szakítás, a nyelvben parodizálták az akkoriban elterjedt Fortran, COBOL és assembly nyelveket. A nyelv sokáig csak papíron létezett. 1990-ben elkészült C alapú implementációja nagy érdeklődést keltett az ezoterikus programozási nyelvek iránt.
1993-ban Wouter van Oortmerssen elkészítette a FALSE-t, egy kisméretű, verem alapú programozási nyelvet, amelynek szintaktikájára kimondottan jellemző volt az olvashatatlanság. Mindössze 1 kilobyte méretű fordítóval rendelkezett. Ez inspirálta Urban Müllert, hogy elkészítsen egy még kisebb méretű programnyelvet. Ez lett a széles körben ismert brainfuck, amely mindössze nyolc karaktert használ. A brainfuck, és a Chris Pressey által készített Befunge manapság a legnagyobb támogatottsággal rendelkező ezoterikus programozási nyelvek.
Fogalmak
[szerkesztés]Turing-csapda (Turing tarpit)
[szerkesztés]Az ilyen program eszköztára rendkívül szűkös. A Turing tarpit kifejezés először Alan Perlis 1982-ben megjelent cikkében, az "Epigrams on Programming"-ban jelent meg. A tarpit természetes bitumenlelőhelyet jelent angolul, amely egyben veszélyes csapda is. A kifejezés azt az állapotot kívánja megjeleníteni, amikor bár minden megvalósítható (tehát Turing-teljes), de semmi sem egyszerű.
Példák
[szerkesztés]Ante
[szerkesztés]Az Ante kizárólag számokat és a francia kártya jeleit használja. Az alábbi kód a klasszikus „Helló, világ!” program ("Hello, world!") implementációja.[1]
9♦8♥J♦A♦2♣3♥7♠J♦A♦7♦J♦J♦A♦3♦J♦5♥6♦4♥J♥A♥6♠6♠J♥A♦8♦J♦A♦8♠J♦A♦3♦J♦A♦6♠J♦A♦8♠J♦A♥3♦2♠J♥A♥2♣6♠J♥
Megjegyzés: Azonos néven létezik egy fejlesztés alatt álló compileres programozási nyelv is.[2]
ArnoldC
[szerkesztés]Az ArnoldC alapvetően egy imperatív programozási nyelv, amelynek kulcsszavai Arnold Schwarzenegger filmjeiben elhangzott mondatokat idéznek.[3][4] A fordító java byte kódot generál.
A programozási nyelvet Apache License 2.0 alatt publikálták.[5]
A program fő moduljának definíciója
[szerkesztés]IT'S SHOWTIME [utasítások] YOU HAVE BEEN TERMINATED
A legegyszerűbb ArnoldC program nem csinál semmit
[szerkesztés]IT'S SHOWTIME YOU HAVE BEEN TERMINATED
Értékadás
[szerkesztés]GET TO THE CHOPPER [változó] HERE IS MY INVITATION [operandus] [műveletek] ENOUGH TALK
Brainfuck
[szerkesztés]A brainfuck programozási nyelv kimondott célja az, hogy a fordító (compiler) a lehető legkisebb legyen.
„Helló, világ!” program brainfuck nyelven:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Malbolge
[szerkesztés]A Malbolge programozási nyelvet Ben Olmstead alkotta meg 1998-ban. Szándéka az volt, hogy az addigi két egyeduralkodó „érthetetlen” nyelvet (INTERCAL, Brainfuck) letaszítsa trónjáról, ugyanis azokat túl könnyen tanulhatónak találta. A Malbolge-ot úgy tervezték, hogy kivételesen bonyolult és érthetetlen legyen.
Az „Helló, világ!” program kódja:[6]
(=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi; gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm
Piet
[szerkesztés]A Piet olyan ezoterikus nyelv, amelynek programjai képeknek tűnnek. A képek kis területekre vannak osztva, és színük információt hordoz a fordítóprogram számára. Megalkotója David Morgan-Mar. A nyelv nevét Piet Mondrian holland festő után kapta.
Velato
[szerkesztés]A programnyelven írt kódok, akárcsak a Piet esetében, műalkotások. Jelen esetben kották, amik egyben lejátszhatók (általában harmonikus) zeneként is.
Whitespace
[szerkesztés]A Whitespace programozási nyelv kizárólag a szavak és írásjelek elválasztására használható szóközt, a tabulátor és a soremelés (LF) karaktereket használja.
Források
[szerkesztés]- Alan Perlis: Turing Tarpit
- Ezoterikus programozási nyelvek
- 10 furcsa programozási nyelv, amiktől tuti eldobod az agyad
- Programozás + Ezotéria = Brainfuck
- Computerworld interjú Don Woodsszal az INTERCAL-ról
- Piet
- ArnoldC
- Brainfuck programozási nyelv
- Visualisation of Live Code - Példa az ezoterikus programnyelvek általi inspirációra Archiválva 2012. április 12-i dátummal a Wayback Machine-ben
- Geoff Cox. Speaking Code: Coding as Aesthetic and Political Expression. MIT Press (2013). ISBN 978-0-262-01836-4
Jegyzetek
[szerkesztés]- ↑ A projekt github oldala
- ↑ The compile-time language
- ↑ ArnoldC wiki
- ↑ ArnoldC Readme
- ↑ ArnoldC LICENSE
- ↑ Andrew Cook: Malebolge "Hello World!". [2008. május 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2021. március 25.)