esoteeristen ohjelmointikielten hauska (ja hulluus)

esoteerinen ohjelmointikieli on ohjelmointikieli, joka on suunniteltu haastamaan kielisuunnittelun normeja. Se on kieli, jonka tarkoitus on tehdä asia selväksi. Pointti voi olla mikä tahansa: haaste itse luoda jotain epätavallista, tehdä taidokas vitsi, luoda kieli taiteellisena ilmaisuna, testata lupaavia ideoita ohjelmointiin jne.

tämän pitäisi tehdä selväksi, että ei ole helppoa tapaa luokitella tai järjestää oikein kaikkia esoteerisia ohjelmointikieliä, koska määritelmänsä mukaan ne uhmaavat sääntöjä. Mutta voisimme käyttää joitakin käsitteitä ja organisointiperiaatteita saadaksemme paremman käsityksen ympäröivästä yhteisöstä. Jotta voisimme ymmärtää mihin ihmiset käyttävät niitä, tai käyttää tätä tietoa inspiraationa oman esoteerisen kielen luomiseen.

joitakin hyödyllisiä käsitteitä

Turing Tarpit

A Turing tarpit on ohjelmointikieli, joka on Turing-täydellinen, mutta käytännössä käyttökelvoton. Turingin täydellinen kieli voi simuloida mitä tahansa Turingin konetta. Käytännössä sillä voi kirjoittaa mitä tahansa ohjelmaa. Joten teoriassa kaikki tällaiset kielet ovat yhtä voimakkaita, mutta ne, jotka ovat myös Turing Tarpit, tekevät uskomattoman vaikeaksi kirjoittaa minkäänlaista ohjelmaa. Yleinen tapa on vähentää saatavilla olevien symbolien määrää: kokeile kirjoittaa vaikka Hello World-ohjelma, jossa on vain 8 merkkiä.

Quine

quine on ohjelma, joka tuottaa tulosteena kopion lähdekoodistaan. Ohjelma ei voi olla tyhjä ohjelma, vaikka tyhjä ohjelma olisi kelvollinen ohjelma tietyllä kielellä. Myös lähdekoodin lukeminen levyltä tai muistista katsotaan huijaamiseksi. Nimen ”quine” keksi Douglas Hofstadter kirjassaan Gödel, Escher, Bach: an Eternal Golden Braid filosofi Willard Van Orman Quinen kunniaksi. Quinen käsite ei siis ole ainutlaatuinen esoteerisille ohjelmointikielille, mutta on kuitenkin tyypillinen ensimmäinen haaste, joka on voitettava kirjoitettaessa.

koodi Golf

koodi golf on kilpailutyyppi, jossa tavoitteena on kirjoittaa mahdollisimman lyhyt ohjelma, joka toteuttaa tietyn algoritmin. Lyhin tarkoittaa tässä yhteydessä lyhintä lähdekoodia. Se ei tarkoita ottaa pienempi koko binary suoritettavan koodin. Code golfin pelaamista kutsutaan ”golf scriptingiksi”. On myös kaikenlaisia ohjelmointiin liittyviä kilpailuja, jotka yleisön vuoksi kannustavat usein luovaan huijaamiseen. Yleisesti ottaen haaste on motivoiva tekijä monille esoteerisille ohjelmointikielille.

Obfuskaatio

obfuskaation käsite, toisin sanoen viestin todellisen merkityksen piilottaminen, ei selvästikään ole yksinomaan esoteerisille ohjelmointikielille tai ylipäätään ohjelmoinnille. Mutta sillä on suuri merkitys monissa esoteerisissa ohjelmointikielissä. Varsinkin, jos aiot sen laajemmassa yleisessä merkityksessä harhaanjohtava tai sekava vastaanottaja. Et salaa viestiä siksi, että viesti itsessään on tärkeä, vaan siksi, että piilotettu muoto on itsessään tavoite. Tyypillinen tapa saavuttaa tämä on kielen symbolien määrän minimoiminen,mutta ohjelmointikieltä voi myös naamioida normaalin tekstin tai kuvan näköiseksi.

Non-determinismi

tässä laajemmassa merkityksessä harhauttaa tai hämmentää yleisöä, myös ei-determinismillä voidaan saavuttaa sama tavoite. Ei-deterministinen kieli on kieli, jolle ohjelman nykytilan vuoksi ei aina voida ennustaa seuraavaa tilaa. Käsitteellä on jonkin verran käyttöä normaaleissa ohjelmointikielissä, lähinnä ajonaikaisten arvaamattomien olosuhteiden vuoksi. Mutta tietyt esoteeriset ohjelmointikielet vievät sen äärimmilleen, satunnaistamalla muuttujia tai jopa satunnaistamalla itse ohjeet.

esoteeristen ohjelmointikielten ryhmät

kuten olemme jo sanoneet, emme voi tarjota tyhjentävää tapaa järjestää kaikkia esoteerisia ohjelmointikieliä. Ja vaikka joku löytäisi sen, pian joku muu keksisi uuden esoteerisen ohjelmointikielen vain tehdäkseen siitä kelvottoman. Yritämme siis yksinkertaisesti tarjota joillekin ryhmille, tai luokille, jotta voisimme paremmin ymmärtää ja tutkia esoteeristen ohjelmointikielten maailmaa.

  • kielet, joilla on objektiivinen arvo, joskaan tämä arvo ei välttämättä ole ulkopuolinen tai tyypillinen. Perusesimerkki on kieli, joka on suunniteltu voittamaan code golf-kilpailu: sen arvoa voidaan mitata, mutta sillä ei ole merkitystä esoteeristen ohjelmointikielten yhteisön ulkopuolella. Mutta hyödyllisempiä ovat ne, joiden tarkoituksena on saavuttaa epätavallinen tavoite, kuten ohittaa turvatoimet (katso JSFuck) tai määritellä Chomskyn hierarkian tyypin 0 kielet (katso Thue).
  • käyttökelvottomia kieliä. Nämä ovat kieliä, jotka ovat hyvin haastavia käyttää. Tämä voi olla suunnittelijan nimenomainen tavoite tai yksinkertaisesti itse suunnittelun onnettomuus. Käyttäjä voi jopa löytää hauskaa käyttää niitä jonkin aikaa. Tyypillinen tapa saavuttaa käyttökelvoton kieli sekä suunnittelulla että vahingossa on Minimalismi (katso Brainfuck). Mutta jos haluat jotain lähes mahdotonta käyttää tarvitset jotain kieltä, joka käyttää ternaarinen järjestelmä ja tarkoituksellisesti itse muuttaa itseään, muun muassa (katso Malbolge).
  • kieltä idean testaamiseen tai jonkin todistamiseen. Nämä ovat kieliä, jotka eivät välttämättä ole suoraan hyödyllisiä, mutta ne ovat hyvä testialusta uudelle käsitteelle tai jonkin todistamiseksi. Esimerkiksi kieli, jossa ohjelmat on järjestetty kaksiulotteiseen ruudukkoon (katso Befunge) tai lähes puhtaaseen funktionaaliseen kieleen (katso Unlambda)
  • taiteelliset kielet. Nämä kielet on suunniteltu ajatuksella, että niillä on jotain taiteellista arvoa. Voisi väittää, että ne kuuluvat käytännössä joko testikielten ryhmään tai niihin, joilla on objektiivinen arvo. Laitoimme ne eri luokkaan, koska ne eivät näytä ohjelmoinnilta, mutta ne näyttävät yleensä kiinnostavilta, vaikka et ehkä haluaisikaan käyttää niitä. Ne näyttävät esimerkiksi abstraktilta taiteelta (katso Piet) tai Shakespereen näytelmältä (katso Shakespeare).
  • Vitsikielet. Nämä kielet on keksitty ihmisten kanssa, joilla on outo huumorintaju. Kuten henkilö, joka sanoo: ”Haluatko kuulla vitsin? – sitten se lukee sota ja rauha, ennen kuin lopetamme-koko elämämme on vitsi!”. Esimerkkinä on satiirinen kieli, jossa jopa viiteopas on vitsi (KS.)

jotkut merkittävät esoteeriset kielet

tämä ei tietenkään ole tyhjentävä luettelo merkittävistä esoteerisista ohjelmointikielistä, vaan vaatimattomampi luettelo muutamista merkittävistä esoteerisista kielistä niiden menestyksen tai erikoisuuden vuoksi.

Befunge

befungen tärkein esoteerinen piirre on se, että ohjelmat on järjestetty kaksiulotteiseen ruudukkoon. Se on myös pinoon perustuva ja heijastava kieli, joten sen avulla ohjelma voi muuttaa itseään. Päätavoitteena oli suunnitella kieli, jolle kääntäjän luominen oli mahdollisimman vaikeaa.

alkuperäinen versio, jota nykyään kutsutaan nimellä Befunge-93, ei ole Turingin täydellinen, koska se asettaa ruudukolle rajan 80×25. Mutta uusi versio, nimeltään Befunge-98, poistaa tämän rajan ja sen pitäisi olla Turing täydellinen. Befunge on synnyttänyt kokonaisen moniulotteisten kielten luokan, jota kutsutaan Fungeoidiksi.

Befungella on komentoja, jotka ohjaavat suuntaa ylös, alas, vasemmalle, oikealle ja siten voivat myös luoda syklin yhdessä perinteisempien komentojen kanssa ulostulolle, binäärioperaatioille jne.

Hello Word-ohjelma näyttää tältä.

> vv ,,,,,"Hello"<>48*, vv,,,,,,"World!"<>25*,@

Brainfuck

luultavasti tunnetuin kaikista esoteerisista ohjelmointikielistä, se on huomattava äärimmäisestä minimalismistaan. Sekä käytettävissä olevien komentojen määrässä että myös siinä, että kääntäjä on hyvin pieni. Itse asiassa toinen ehto on syy ensimmäiseen, koska kirjoittaja halusi luoda kielen pienimmällä mahdollisella kääntäjällä. Kirjoittaja loi kääntäjän, joka käytti vain 240 tavua. Joskus myöhemmin joku muu loi sellaisen, jossa oli vain 100 tavua. Luonnollinen seuraus tästä tavoitteesta on se, että kieltä on vaikea käyttää, vaikka se on Turing täydellinen. Lyhyesti sanottuna, se on Turing tervapit.

siihen viitataan joskus sensuroidulla kirjoitusasulla, kuten Brainf*ck tai monilla muilla muunnelmilla.

kieli koostuu kahdeksasta eri käskystä, jotka manipuloivat dataosoitinta ja kahdesta tavuvirrasta syöttöä ja ulostuloa varten. Se tukee myös silmukoita. Muut merkit, paitsi ne, jotka edustavat komentoja, pidetään kommentteja ja jättää huomiotta kääntäjä.

tämä on esimerkki kielen toiminnasta (otettu Esolangien wikistä).

Code: Pseudo code:>> Move the pointer to cell2 Set cell2 to 0 << Move the pointer back to cell0 End while

Tältä näyttää Hello World-ohjelma.

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

jos haluat tietää lisää, voit katsoa sen vastaavalta Wikipedia-sivulta tai Esolangs-sivulta.

INTERCAL

INTERCAL ei ehkä ollut ensimmäinen esoteerinen ohjelmointikieli,mutta se on varmasti ensimmäinen kuuluisa. Kuinka vanha se on? Se luotiin vuonna 1972 ja ensimmäinen toteutus tehtiin reikäkorteilla. Kieli oli tarkoitettu parodiaksi, mutta myös tekemään jotain täysin uutta, ohjelmamaailmalle vierasta. Nimi ei ole kirjoittajien mukaan lyhenne:

kääntäjän koko nimi on ”kääntäjän kieli, jossa ei ole lausuttavaa lyhennettä”, joka on ilmeisistä syistä lyhennetty ” INTERCAL.”

myös loppuosa INTERCAL Reference Manualista (PS-formaatti) on täynnä järjettömiä tai humoristisia lausuntoja. Tämä koskee sekä kieltä, jota he kuvaavat, että sitä, miten he tekevät sen. Esimerkiksi tämä on osio muuttujista

INTERCAL sallii vain 2 erityyppistä muuttujaa, 16-bittisen kokonaisluvun ja 32-bittisen kokonaisluvun. Näitä
edustaa piste ( . ) tai kaksipilkku (:), jota seuraa mikä tahansa luku väliltä 1-65535,
inclusive. Nämä muuttujat voivat sisältää vain ei-negatiivisia lukuja, joten niiden vaihteluväli on
arvot: 0-65535 ja 0-4294967295. Huomautus: .123 ja: 123 ovat kaksi erillistä muuttujaa. Toisaalta
.1 ja .0001 on identtinen. Jälkimmäistä ei myöskään saa kirjoittaa muodossa 1E-3 .

kielessä voidaan käyttää myös muunnosta PLEASE. Se edellyttää kuitenkin myös tämän avainsanan oikean määrän käyttöä. Sitä ei voi käyttää liian vähän tai liikaa, toisin sanoen sinun täytyy osoittaa sopiva määrä kohteliaisuutta. Epäonnisinta on, että se oli dokumentoimaton ominaisuus alkuperäisessä ohjekirjassa. Vitsi käsikirja vitsi käsikirja voi olla kunnossa, mutta yksi, että se on epätäydellinen ei voida hyväksyä.

This is a Hello World in a version of INTERCAL implemented with C: C-INTERCAL.

DO ,1 <- #13PLEASE DO ,1 SUB #1 <- #238DO ,1 SUB #2 <- #108DO ,1 SUB #3 <- #112DO ,1 SUB #4 <- #0DO ,1 SUB #5 <- #64DO ,1 SUB #6 <- #194DO ,1 SUB #7 <- #48PLEASE DO ,1 SUB #8 <- #22DO ,1 SUB #9 <- #248DO ,1 SUB #10 <- #168DO ,1 SUB #11 <- #24DO ,1 SUB #12 <- #16DO ,1 SUB #13 <- #162PLEASE READ OUT ,1PLEASE GIVE UP

lyhyesti sanottuna INTERCAL on hyvin taidokas vitsi. Sellainen vitsi, joka voi saada sinut ihailemaan sen luojaa sen sinnikkyydestä tai epäilemään sen mielenterveyttä, tai ehkä molempia.

JSFuck

brainfuckin menestys vauhditti monien johdannaiskielten syntyä, liian monta mainitakseni niitä kaikkia. Merkittävin niistä on kuitenkin JSFuck.

JSFuck ei ole varsinainen kieli, mutta se on enemmänkin esoteerinen ohjelmointityyli Javascript, joka vaatii käyttämään vain 6 merkkiä. Tuloksena olevat ohjelmat ovat kelvollisia JavaScript-ohjelmia ja itse asiassa se keksittiin ohittaa tietoturvatekniikat, kuten haittaohjelmien havaitseminen. Sen ominaisuudet tekivät siitä hyödyllisen myös koodin hämärtämisessä.

se toimii, koska Javascriptissä voi arvioida mitä tahansa ilmaisua minkä tyyppisenä tahansa. Joten edustaa ja tyhjä array, mutta prependaamalla sen arvolla + voit pakottaa sen arvioimaan lukuna 0. Saadakseen kirjaimen, kuten a , voi manipuloida arvoa false jne. Lopputulos on äärimmäisen monisanainen: vastine alert("Hello World!") on 22948 merkkiä pitkä.

Malbolge

Malbolge on kieli, joka on erityisesti suunniteltu lähes mahdottomaksi käyttää:

vastavaikutteisella ”hullulla operaatiolla”, peruskolme-aritmetiikalla ja itseohjautuvalla koodilla

Oman luojansa sanoin.

itse asiassa kirjailijakaan ei koskaan kirjoittanut sen kanssa työohjelmaa. Ensimmäisen ohjelman tuotti toinen ohjelma, joka toteutti heuristisen hakualgoritmin. Kieli ei ole Turing täydellinen ja se perustuu myös väärin kirjoitettu Malebolge, kahdeksan ympyrän helvetin Dante Alighierin Inferno. Sillä ei siis todellakaan ole mitään lunastavaa ominaisuutta.

en yritä kuvata sitä, koska koko asia on nimenomaan turhautumista. On kuitenkin huomattava ”hullu operaatio”, joka on mainitsemisen arvoinen: salaus. Kielen oletetaan toimivan ternaarisella virtuaalikoneella ja siinä on kolme rekisteriä, joista yhdessä on osoitin nykyiseen ohjeeseen ja sen nimi on . Kun käsky on suoritettu modulo 94 arvosta korvaa sen, mikä on , tulos salataan salaustaulukon mukaisesti. Tervetuloa helvettiin.

joku rohkea sielu on luonut Hello World-ohjelman.

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

Piet

Piet on kieli, jossa ohjelmat esitetään abstrakteina taidemaalauksina Piet Mondrianin tyyliin. Se on pino perustuu Ja Turing täydellinen.

on 18 värisävyä, jotka on järjestetty värisävyn ja kirkkauden mukaan, sekä musta ja valkoinen. Näillä kahdella viimeisellä on erityinen merkitys, ja niitä käytetään virtauksen ohjaamiseen. Ohjelman toteutus nojaa kahteen ”osoittimeen”: Suuntaosoittimeen ja Värilohkon valitsimeen. DP voi osoittaa ylös, alas, vasemmalle ja oikealle, kun taas CC voi osoittaa vain vasemmalle ja oikealle. Näiden kahden osoittimen yhdistelmä ohjaa ohjelman suoritusta: periaatteessa mikä värilohko suoritetaan seuraavaksi. Koko lohkon väri edustaa kokonaisluku. Kun ohjelma siirtyy eri värilohkojen välillä, niiden värisävyn ja kirkkauden ero määrää suoritetun komennon. Komennot ovat tavallisia, kuten lähtö arvo, kerrotaan, jne.

Hello World-ohjelmassa on tiettyä kauneutta.

Hello World in Piet by Thomas Schoch

Shakespeare

Shakespeare on kieli, jolla on tarkoitus olla: ”kaunis lähdekoodi, joka muistutti Shakespearen näytelmiä”. Kielessä on vain vähän komentoja ja se muistuttaa toiminnallisesti assembly-kieltä, mutta on yllättäen melko sanavalmis.

muuttujat on ilmoitettava alkuosassa ja niiden nimien on oltava kelvollisia Shakespearen merkkejä, kuten Romeo tai Julia. Nämä muuttujat ovat pinoja, joille suoritetaan myöhemmin operaatioita, kuten pop, push ja input/output. Tekojen ja kohtausten nimi toimii goto-merkkeinä ja tiettyjen ehdollisten lauseiden määränpäänä. Hahmoja, eli muuttujia, on vaadittava lavalla manipuloitaviksi ja lavalla voi olla vain kaksi kerrallaan.

rivit edustavat yleensä numeerisia vakioita: jotkin substantiivit ja adjektiivit muunnetaan numeerisiksi arvoiksi.

Hamlet: You lying stupid fatherless big smelly half-witted coward!Juliet: You are as villainous as the square root of Romeo!

Erikoissanat, kuten ”Remember”, tai niiden yhdistelmät, kuten ”Speak your mind”, suorittavat käskyjä. Nämä ovat normaaleja komentoja, kuten pino-merkin arvojen työntäminen, nykyisen muuttujan arvon tai vastaavan ASCII-merkin ylittäminen.

ehdollinen lausuma esitetään yhden merkin kysymyksellä ja toisen merkin vastauksella, joka määrää, minne mennään, jos kysymyksen ehto arvioi todeksi.

Juliet: Am I better than you?Hamlet: If so, let us proceed to scene III.

Hello World on yhtä pitkä ja tuottelias kuin Shakespearen näytelmä.

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.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! Scene II: The praising of Juliet.Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! Scene III: The praising of 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! Act II: Behind Hamlet's back. Scene I: Romeo and Juliet's conversation.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! Scene II: Juliet and Ophelia's conversation.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!

Thue

Thue on merkkijonojen uudelleenkirjoitusjärjestelmään perustuva ohjelmointikieli, jota kutsutaan semi-Thue-järjestelmäksi. Se on ei-deterministinen ja noudattaa constraint-ohjelmointiparadigmaa. Mikä tarkoittaa, että muuttujat määritellään rajoituksen (ENT. jokin on totta tai epätosi). Se on Turingin tervapääsky.

Thue: n tapauksessa kustannukset esitetään muodossa olevassa korvaussääntöjen luettelossa:

<string>::=<replacement>

tämän lomakkeen erikoismuodot edustavat panosta, tuotosta tai sääntöluettelon loppua.

kielen ei-deterministinen luonne voidaan osoittaa osoittamalla kaksi mahdollista saman merkkijonon korvaajaa. Esimerkiksi:

  • kirjoitat säännön, jonka mukaan merkkijono a voidaan korvata numerolla stupid
  • kirjoitat myös säännön, jonka mukaan merkkijono a voidaan korvata you are

ohjelmaa suoritettaessa merkkijono a voidaan korvata jommallakummalla kahdesta vaihtoehdosta.

sääntöluetteloa seuraa alkutilaa kuvaava merkkijono.

vaikka hyödyllisen ohjelman kirjoittaminen voi olla vaikeaa, tyypillinen Hello World on melko helppo ja ymmärrettävä, ainakin esoteeristen ohjelmointikielten mittapuulla.

a::=~Hello World!::=a

Unlambda

Unlambda on (lähes) puhdas funktionaalinen kieli, joka on suunniteltu osoittamaan puhtaasti funktionaalinen kieli (ja luultavasti kuinka epäkäytännöllinen se olisi). Se perustuu combinatoriseen logiikkaan. Se on Turing complete ja ensimmäinen toimiva Turing tarpit. Se nojaa muutamaan funktioon, apply-operaattoriin ` (backquote-merkki) ja tukee myös input/outputia. Teknisesti se toimii vain yhden argumentin funktioilla, mutta moniargumenttifunktiot voidaan kääntää funktioiden jonoksi.

Hello World-ohjelma näyttää lähes luettavalta.

`r```````````.H.e.l.l.o. .w.o.r.l.di

muita kiinnostavia esoteerisia kieliä

fuuga on kieli, joka käyttää lähdekoodina MIDI-tiedostoja. Jokaisen nuotin välit käännetään tietyille perinteisille käskyille, kuten input/output tai addition.

Beatnik on pino-pohjainen kieli, joka koostuu sarjasta englanninkielisiä sanoja; välilyönnit ja välimerkit jätetään huomiotta. Sanat muunnetaan perinteisissä komennoissa niiden arvon mukaan Scrabble-pelissä.

välilyönnit on vitsikieli, jossa vain välilyönnit, kuten välilehdet ja välilyönnit, ovat kelvollisia ja mikä tahansa muu merkki jätetään huomiotta. Tämä on tietenkin kääntäen niiden kääntäjien tavanomainen käyttäytyminen, jotka jättävät tyhjämerkit huomiotta. Näiden ominaisuuksien vuoksi sitä voidaan käyttää Polyglottiohjelmassa eli ohjelmassa, joka on voimassa useammalla kuin yhdellä kielellä. Kunhan toinen kieli ei ole Python tai mikä tahansa kieli, jossa tyhjämerkinnällä on merkitystä.

GolfScript on koodigolfkilpailujen voittamiseen suunniteltu konsatenatiivinen ohjelmointikieli, joka on myös Turing complete.

lumihiutale on kääntyvä itseään muokkaava kieli, jossa sekä tulkkia että ohjelmaa muokataan jokaisella ajolla.

FRAKTRAN on kieli, jossa ohjelmat ovat luettelo murtoluvuista ja alkuluku. En ole varma, mitä se tekee, mutta se tekee jotain, koska sillä on Wikipedia-sivu.

Iota ja Jot ovat kaksi formaalia kieltä, joista kumpikin on suunniteltu yksinkertaisimmaksi formaaliksi järjestelmäksi. Luonteeltaan niitä voidaan pitää myös yhtä minimalistisina, Turing tarpit-ohjelmointikielinä. Molemmat käyttävät vain kahta symbolia ja suorittavat kaksi operaatiota. Seuraaja, nimeltään Zot, tukee myös input/output.

entropia on hyvin osuvasti nimetty ohjelmointikieli, joka on suunniteltu hyväksymään ajatus kontrollista luopumisesta. Kaikki tuotos ohjelman approksimoidaan ja joka kerta, kun tietoja käytetään sitä satunnaisesti muutettu. Kieli ei muokkaa alkuperäistä ohjelmaa, joten joka kerta suoritus on erilainen, mutta alkutila säilyy. Datan satunnaistamisen erikoinen sivuvaikutus on känninen Eliza, nettiversio klassisesta Eliza-ohjelmasta, jossa terapeutti näyttää olevan humalassa.

Monicelli on komediaelokuvaan ystäväni perustuva vitsikieli. Tyypillinen ohjelma näyttää sarjalta järjettömiä italialaisia lauseita. Yllättävää kyllä tämä käy järkeen, sillä inspiraationa käytetystä elokuvasta löytyy myös järjettömiä lauseita. Se on hulluuden kehä.

Yhteenveto

esoteerisen ohjelmointikielen maailma on yhtä jännittävä kuin raivostuttava: sääntöjä ei ole, mutta paljon mielenkiintoisia asioita. Toivon, että olen antanut teille hieman järkevän ikkunan siihen, mitä voitte odottaa.

jos haluat tietää enemmän tai osallistua tähän yhteisöön, suosittelen katsomaan Esolangeja. Kyseinen sivusto yhdessä Wikipedian kanssa on useimpien tässä artikkelissa esitettyjen esimerkkien lähde. Sieltä löytyy myös inspiraatiota esoteerisen ohjelmointikielen idealuetteloon.

myös Marc C. Chu-Carrollin blogia voi pitää mielenkiintoisena sen lukuisissa inkarnaatioissa vuosien varrella. Kuten nimi hyvä matematiikka, huono matematiikka antaa ymmärtää, se on omistettu pääasiassa matematiikalle. Siitä huolimatta sillä on myös monia esoteeristen ohjelmointikielten analyysejä sarjassa nimeltä patologinen ohjelmointi (Language). Näet esimerkiksi yhden, joka on omistettu pienimmälle ohjelmointikielelle.

Vastaa

Sähköpostiosoitettasi ei julkaista.

Previous post kotitekoiset kuivatut Sitruspyörät
Next post Verta ja suklaata (2007)