Limbaj de programare ezoteric

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

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

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT