Máté, Mirella
14 °C
30 °C

Amikor a program a Terminátor szavaival utasít

2014.03.12. 15:43

Arnold Schwarzenegger programnyelv lett. Ez nem egy jövőben játszódó scifi kezdete, hanem a volt kaliforniai kormányzó híres filmszerepeinek kulcsmondataiból tényleg programozási nyelvet készített néhány lelkes fejlesztő.

Ez azt jelenti, hogy a kódban a Terminátorból, Két tűz közöttből, Ovizsaruból ellopott mondatokat használnak utasításként. Néhány példa, hogy jobban megértsük: a False (azaz logikai hamis) arnold nyelven I lied (hazudtam), a True (logikai igaz) pedig No problem, A print: Talk to the hand, a return utasítás: I'll be back. Itt egy lista, érdemes végigböngészni. Haladóbbak még a filmet is kitalálhatják, ahonnan a mondatot kölcsönözték.

Legismertebb ezoterikus nyelvek

Hogy mi értelme van ennek? Nagyjából annyi, mint a többi ezoterikus programnyelvnek, hogy szórakozzunk. Általában nem céljuk valós alkalmazások létrehozása. Ezeknek a nyelveknek van egy olyan tulajdonságuk, amitől különösen bonyolultak vagy viccesek lesznek, és nem Arnold az egyetlen példa. A legismertebbek a Malbolge, a Brainfuck és a Whitespace.

Ezek a nyelvek viszonylag régiek, a Brainfuck például 1993-as, a Malbolge 1998-as, a Whitespace 2003-as. A Brainfuck célja nem a szórakozás, hanem hogy minél nehezebb legyen, az angol neve is pont erre utal. Csupán nyolc utasítást tartalmaz, de vele minden lehetséges program megírható. Az ilyen nyelveket Turing-teljes nyelveknek nevezünk és a Brainfuck az egyik legnehezebb közülük.

A Brainfuck így írja ki a Hello World!-öt:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.

<<+++++++++++++++.>.+++.------.--------.>+.>.

A Whitespace-t nem elemeznénk mélységében, a programozók valószínűleg ismerik, a nem programozóknak pedig nem szórakoztató "imperatív és verem alapú programozási nyelvről" olvasni. A Malbolge-ot is csak annyiban említenénk, hogy ez egy olyan nyelv, amely Dante Poklának nyolcadik köre után kapta a nevét. Kivételesen bonyolultnak és érthetetlennek tervezték.

Viccelődünk? Viccelődünk!

Akadnak olyan nyelvek is, amelyek az átlagos internetezőnek is érdekesek lehetnek. Ezek sem újak, de a rendkívül népszerű Redditnek ugyanis megvan az a tulajdonsága, hogy ősrégi dolgokra is rá tud csodálkozni, ezek a cikkek aztán elterjednek a neten és hirtelen mindenkit érdekelni kezdenek. Így került az érdeklődés középpontjába az ArnoldC is.

Létezik például a Shakespeare-nyelv. Forráskódja Shakespeare drámáinak szövegére hasonlít, van a darabnak (programnak) címe, vannak szereplői, felvonások, jelenetek. A szavak értékét például az adja, hogy az adott szó szép vagy nem. A virág például 1, a disznó -1. Ha melléknevet is teszünk a főnév mellé, akkor értéke megkétszereződik.

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" (a kicsi pónim és a nagy szőrös vadászkutyád különbsége négyzetének és a sajnálatosan kicsi ágyékkötőd köbének a különbsége)

Ez a mondat például egy konkrét számot jelent, mégpedig százat. Aki pontosan érteni szeretné a logikáját, hogyan jön ki a 100, az kattintson ide. A program végül ezeket a számokat konvertálja betűkké. Egy ilyen hosszú kódsor például annyit ír ki, hogy Hello World!

Hasonló a logikája a Chef nyelvnek, amelyben a kódsorok úgy néznek ki, mintha receptek lennének. Végy 33 g csokoládét, 100 g vajat, 114 g cukrot – és még sorolja a hozzávalókat, a végén pedig kiír a kijelzőre egy egyszerű mondatot. A klasszikus Hello World!-öt például 9+5 hozzávaló, 15+13 sornyi elkészítési utasítás után írja ki.

A Lolcode azt adja, amit várunk tőle, lolcats nyelven írt kódsor, ennek megfelelően a kulcsszavak nagybetűsek. Egészen rövid nyelv, a Hello World! például így néz ki:

HAI

CAN HAS STDIO?

VISIBLE "HAI WORLD!"

KTHXBYE

A Chicken nyelv nemcsak a név, hanem ez az egyetlen utasítás, ami létezik a nyelvben. Minden sor meghatározott számú csirkét tartalmaz, ez adja az utasításokat.

Egy példa:

chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken

chicken chicken chicken chicken chicken chicken

És a szokásos Hello World! chicken nyelven.