[rosedu-general] [offtopic] Programming Language Detection

Adrian Scoica adrian.scoica at gmail.com
Thu Sep 1 11:25:38 EEST 2011


2011/9/1 Tiberiu C. Turbureanu <tct at ceata.org>:
[...]  Conținutul lor
>>>> era format exclusiv din paranteze închise.

Paranteze _inchise_? Daca singurul caracter pe care il aveau la
dispozitie este paranteza inchisa, atunci este imposibil sa definesti
un limbaj de programare cu el. O masina turing are nevoie de cel putin
doua simboluri.

> După parantezele care închid blocuri sigur *nu*
> poți să îți dai seama despre ce limbaj din Războiul Rece este vorba, fie ele
> rotunde, acolade sau pătrate [1].

Nu cred ca foile erau acoperite de paranteze care inchid blocuri,
pentru ca altfel ar fi fost si respectivele blocuri. Tot ce aveau
oamenii aia la dispozitie erau paranteze. Daca ai _cel putin_ doua
paranteze, atunci poti scrie cu ele o infinitate de limbaje. De
exemplu:

( == 1 si ) == 0

Cu astea poti sa scrii direct in cod masina, sau sa "spell out" ASCII
pe biti, si asa mai departe (deci n-ai cum sa stii ce limbaj este,
daca este unul).

Sau, daca vrei sa se si inchida corect, poti face tot felul de
izomorfisme (mai exact, o infinitate)

Daca ai la dispozitie cel putin doua simboluri, poti defini cu ele
limbaje oricat de complicate (pentru ca limbajele de programare au
surse plain text, deci reductibile la un sir de biti).

De exemplu, Whitespace[0] este un limbaj de programare care foloseste
doar trei caractere: space, tab si newline.

Astfel de limbaje extreme se numesc "Turing tarpits": limbaje
turing-complete dpdv teoretic, dar in care trebuie sa iti parafrazezi
viata ca sa exprimi ceva, si deci care nu au nici un sens practic. Un
exemplu excelent este Brainfuck (look it up, it's fun) :).

[0] - http://en.wikipedia.org/wiki/Whitespace_%28programming_language%29


More information about the rosedu-general mailing list