Whitespace
Tipus | llenguatge de programació esotèric i llenguatge de programació |
---|---|
Data de creació | 1r abril 2003 |
Epònim | espai blanc |
Paradigma de programació | programació esotèrica |
Influenciat per | Brainfuck |
Pàgina web | compsoc.dur.ac.uk… |
El Whitespace és un llenguatge de programació esotèric desenvolupat per Edwin Brady i Chris Morris a la Universitat de Durham (desenvolupadors, també, del llenguatge de programació Kaya). Es va fer públic l'1 d'abril del 2003 (April Fool's Day). El seu nom fa referència al caràcters d'espai. Al contrari de gairebé tots els llenguatges de programació, que ignoren o donen molt poc significat a la majoria de caràcters d'espai, l'interpretador de Whitespace ignora tots els caràcters que no són d'espai. Només tenen significat els espais, les tabulacions i els salts de línia[1] Una conseqüència interessant d'aquesta propietat és que un programa en Whitespace pot estar dins els caràcters d'espai d'un programa escrit en un altre llenguatge, convertint el text en un poliglot.
El llenguatge en si mateix és llenguatge basat en l'stack imperatiu. La màquina virtual en la que s'executa el programa té una stack i un heap. El programador és lliure d'empilar enters d'amplades arbitràries a l'stack (actualment no hi ha implementació per a nombres decimals) i també pot accedir al heap com a lloc permanent per a emmagatzemar dades i estructures de dades.
Història
[modifica]El Whitespace va ser creat per Edwin Brady i Chris Morris el 2002. Slashdot va fer una ressenya d'aquest llenguatge de programació l'1 d'abril del 2003.[2] Aquell mateix any, es va implementar en Whitespace un interpretador per a ell.
La idea d'usar caràcters d'espai com a operadors per al llenguatge C++ la va suggerir Bjarne Stroustrup com a broma cinc anys abans.
Sintaxi
[modifica]Les comandes estan compostes de seqüències d'espais, tabulacions i salts de línia. Per exemple, tabulació-espai-espai-espai afegeix els dos elements de dalt de tot a la stack. Les dades estan representades en binari usant espais (0) i tabulacions (1), seguides d'un salt de línia, per exemple espai-espai-espai-tabulació-espai-tabulació-tabulació és el número 11. Qualsevol altre caràcter és ignorat, per tant, es poden fer servir com a comentaris.
Exemple de codi
[modifica]Aquest codi imprimeix "Hello World!". S'han pintat els fons dels caràcters d'espai amb diferents colors i s'han marcat amb separadors, ja que en realitat són invisibles. ( Space , Tab )
| | | |
| | | | | | | | | | |
| | | | | | | |
| | | | | | | | | | |
| | | | | | | | |
| | | | | | | | | | |
| | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
| | | | |
| | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | |
| | | |
| | | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
| | | | | | | |
| | | | | | | | | | |
| | | | | | | |
| | | | | | | | | | |
| | | | |
| |
| | | | | | |
línia-en-blanc
| | | | | |
línia-en-blanc
| | | | | |
línia-en-blanc
| | | | | |
| |
| | | | | | |
| | | | |
línia-en-blanc
| | | |
línia-en-blanc
| | | | | |
línia-en-blanc
línia-en-blanc/EOF
Vegeu també
[modifica]- brainfuck, un altre llenguatge de programació esotèric que, tal com fa el Whitespace, ignora qualsevol cosa que no reconeix.
- LOLCODE, un llenguatge de programació a partir de diversos memes d'internet.
- INTERCAL, el "Llenguatge de Compilació Amb un Acrònim No Pronunciable"
- Políglot, un programa vàlid en més d'un llenguatge.
- Esteganografia
Referències
[modifica]- ↑ «Whitespace». Arxivat de l'original el 2008-03-31. [Consulta: 17 gener 2011].
- ↑ «New Whitespace-Only Programming Language - Slashdot» (en anglès). [Consulta: 16 desembre 2017].
Enllaços externs
[modifica]- Pàgina del Whitespace Arxivat 2008-03-31 a Wayback Machine.
- Ressenya a Slashdot
- Col·lecció d'interpretadors de Whitespace en diferents llenguatges de script
- Acme::Bleach Un mòdul en Perl que reescriu el cos del teu mòdul codificació de només caràcters d'espai ("per a programes realment nets").