Whitespace (limbaj de programare)
Whitespace este un limbaj de programare esoteric dezvoltat de Edwin Brady și Chris Morris de la Universitatea din Durham (dezvoltatori de limbi de programare Kaya și Idris). A fost lansat la 1 aprilie 2003 (1 aprilie - Ziua păcălelilor). Numele este o referință la caracterele spațiului alb. Spre deosebire de majoritatea limbajelor de programare, care ignoră sau atribuie prea puțină semnificație majorității caracterelor de spațiu alb, interpretul Whitespace ignoră orice caractere care nu sunt în spațiu alb. Numai spațiile, filele și fluxurile de linii au sens.[1] O consecință a acestei proprietăți este că un program Whitespace poate fi ușor conținut în caracterele unui spațiu al unui program scris într-o altă limbă, cu excepția posibilităților în limbi care depind de spații pentru valabilitatea sintaxei, cum ar fi Python, ceea ce face ca textul să fie un poliglot.
Istorie
[modificare | modificare sursă]Spațiul alb a fost creat de Edwin Brady și Chris Morris în 2002. Slashdot a făcut o revizuire a acestui limbaj de programare la 1 aprilie 2003.[2]
Ideea de a folosi caracterele din spațiul alb ca operatori pentru limbajul C++ a fost sugerată cu cinci ani înainte de Bjarne Stroustrup.[3]
Sintaxă
[modificare | modificare sursă]Comenzile sunt compuse din secvențe de spații, opriri de file și feed-uri de linie. De exemplu, spațiul tab-spațiu-spațiu efectuează adăugarea aritmetică a primelor două elemente de pe stivă. Datele sunt reprezentate în binare folosind spațiile (0) și filele (1), urmate de o linie de alimentare; astfel, spațiul-spațiu-spațiu-tab-spațiu-tab-tab-linefeed este numărul binar 0001011, care este de 11 în zecimal. Toate celelalte caractere sunt ignorate și pot fi folosite pentru comentarii.
Codul este scris ca parametru de modificare a instrucțiunilor (IMP) urmat de operațiune.[4] Tabelul de mai jos prezintă o listă a tuturor IMP-urilor din Whitespace.
IMP | Sens |
---|---|
[Space] | Manipularea stivei |
[Tab][Space] | Aritmetic |
[Tab][Tab] | Accesul la Heap |
[LineFeed] | Controlul debitului |
[Tab][LineFeed] | I/O |
Fiecare IMP este urmat de una dintre mai multe operațiuni definite pentru acest IMP.
Cod simplu
[modificare | modificare sursă]Următorul este un program comentat în spațiul alb-negru care imprimă pur și simplu "Hello, world!", În care fiecare caracter Space, Tab, este precedat de comentariul de identificare "S", "T" sau respectiv "L"
S S S T S S T S S S L T L S S S S S T T S S T S T L T L S S S S S T T S T T S S L T L S S S S S T T S T T S S L T L S S S S S T T S T T T T L T L S S S S S T S T T S S L T L S S S S S T S S S S S L T L S S S S S T T T S T T T L T L S S S S S T T S T T T T L T L S S S S S T T T S S T S L T L S S S S S T T S T T S S L T L S S S S S T T S S T S S L T L S S S S S T S S S S T L T L S S L L L
Rețineți că atunci când în anumite browsere este afișat codul sursă, spațierea orizontală produsă de un caracter de file nu este fixă, dar depinde de locația sa în text în raport cu următoarea oprire a filelor orizontale. În funcție de software, caracterele tab pot fi înlocuite cu numărul variabil corespunzător de caractere spațiu.
Note
[modificare | modificare sursă]- ^ „Whitespace”. Compsoc. Arhivat din original la . Accesat în .
- ^ Timothy (). „New Whitespace-Only Programming Language”. Slashdot. Accesat în .
- ^ Stroustrup, Bjarne. „Generalizing Overloading for C++2000” (PDF). Florham Park, NJ, USA: AT&T Labs. Accesat în .
- ^ „Whitespace Tutorial”. Compsoc. Arhivat din original la . Accesat în .
Legături externe
[modificare | modificare sursă]- Site oficial Arhivat în , la Wayback Machine.
- Anunț de lansare pe Slashdot
- Collection of Whitespace interpreters in various script languages
- Acme::Bleach A Perl module that rewrites the body of your module to a whitespace-only encoding ("for really clean programs").