Limbaj de programare ezoteric
Un limbaj de programare ezoterice este un tip de deosebit de complexe și în mod deliberat mai puțin clare limbaje de programare ca este posibil. Aceste limbaje, populare în rândul hackerilor și al utilizatorilor calificați, nu au o utilizare reală în lumea reală, dar sunt, în general, concepute pentru a testa limitele programării computerizate, ca dovadă a conceptului pentru a dovedi o teorie sau doar pentru distracție. Unele, însă, sunt concepute ca un exercițiu pentru a înțelege mai bine modul în care funcționează un computer.
Istorie
Primul exemplu de limbaj ezoteric a fost INTERCAL , scris în 1972 de James M. Lyon și Don Woods , cu încercarea de a crea un limbaj total diferit de cele existente la acea vreme, parodind elementele Fortran , COBOL și asamblarea . [1]
Douăzeci de ani mai târziu, Wouter van Oortmerssen a creat FALSE , un limbaj bazat pe conceptul de mașină stivă cu o sintaxă confuză, ilizibilă și extrem de concisă: compilatorul ocupă doar 1024 de octeți. Acest lucru l-a inspirat ulterior pe Urban Müller să creeze un limbaj și mai concis, Brainfuck , format din doar opt personaje recunoscute. [2] Împreună cu Befunge-ul creat de Chris Pressey , acestea sunt cele mai cunoscute două limbi ezoterice.
Termenii limbajului de programare ezoteric
Turing Tarpit
Este un limbaj de programare complet Turing al cărui număr de comenzi, operatori sau obiecte este foarte mic.
Codificare de stare
În această metodă de programare, instrucțiunile pe care limbajul de programare le pune la dispoziție se află într-o listă predefinită și sunt necesari doi pași pentru a executa o comandă:
- localizați poziția sa în listă (de exemplu în reMorse salvarea pe stivă este instrucțiunea "1" din listă);
- lansați-l, pentru a-i aplica efectele.
Lista operațiunilor poate fi fie statică - ca în reMorse [3] și THRAT [4], fie dinamică, ca în reMorse4ever.
Iată un exemplu bazat pe reMorse sau THRAT:
Selectați Următoarea operație din listă Efectuați operația
Functioneaza
O funcție este un program ale cărui instrucțiuni sunt aranjate pentru a forma o figură care se dezvoltă bidimensional, iar succesiunea instrucțiunilor este stabilită de direcția de mișcare a unui „indicator” pe acea figură. În plus față de instrucțiunile privind datele, programatorul are și comenzi pentru a schimba poziția și direcția de mișcare a indicatorului.
Nedeterminism
Într-un limbaj nedeterminist, executarea instrucțiunilor nu este garantată cu certitudine, ci doar cu o anumită probabilitate. În limbi ca acestea, chiar și încercarea de a obține un rezultat este o sarcină dificilă, deoarece nu sunteți sigur dacă o instrucțiune este executată sau nu și, prin urmare, nu este posibil să preziceți funcționarea acesteia.
Exemple
Iată câteva exemple ale programului clasic Hello World sau instrucțiuni unice scrise în limbi ezoterice:
AVEȚI POT FI STDIO? VISIBIL "AI LUME!" KTHXBYE
- Befunge este un limbaj în care programele sunt „răspândite” într-o matrice bidimensională, în care indicatorul este derulat.
"dlroW olleH">: v ^, _ @
- Brainfuck este unul dintre cele mai extreme limbaje ezoterice, în care minimalismul și ofuscarea codului sunt duse la niveluri foarte ridicate.
++++++++++ [> +++++++> +++++++++++> +++> + <<<< -]> ++.> +. + ++++++ .. +++.> ++. << ++++++++++++++++.>. +++ .------ .--- -----.> +.>.
- Chef a fost dezvoltat astfel încât programele sale să arate ca rețete de gătit; de exemplu, următoarea construcție inserează o valoare într-o stivă :
Puneți scorțișoară în al doilea castron
- Vaca este un limbaj bazat pe comenzi precum „moo” care variază cu majuscule și ordine. Următorul exemplu generează secvența Fibonacci:
MoO moO MoO mOo MOO OOM MMM moO moO MMM mOo mOo moO MMM mOo MMM moO moO MOO MOO mOo MoO moO moo mOo mOo moo
- FALSE este un limbaj bazat pe stivă cu comenzi cu un singur caracter și variabile. Exemplu de afișare a numerelor prime până la 100:
99 9 [1 - $] [\ $ @ $ @ $ @ $ @ \ / * = [1 - $$ [% \ 1 - $ @]? 0 = [\ $. ' , \]?]?] #
- În Shakespeare , instrucțiunile urmează scrierile dramaturgului cu același nume. De exemplu, următoarea propoziție indică un punct din listă la care se poate ajunge printr-o declarație GOTO :
Actul I: Insultele și lingușirea lui Hamlet.
- Malbolge este atât de complex încât primul program de lucru „Hello world” a venit la doi ani după lansare:
(= <`: 9876Z4321UT.-Q + *) M '&% $ H"! ~} | Bzy? = | {Z] KwZY44Eq0 / {mlk ** hKs_dG5 [m_BA {? - Y ;; Vb'rR5431M} /. zHGwEDCBA @ 98 \ 6543W10 / .R, + O <
Notă
Elemente conexe
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere cu limbaj de programare ezoteric
linkuri externe
- ( EN ) Wiki dedicat limbajelor ezoterice , pe esolangs.org .
- ( EN ) Limbaje esoterice de programare DM , pe dangermouse.net .