Vajtspejs
Vajtspejs (engl. Whitespace) je ezoteričan programski jezik, razvijen od strane Edvin Brejdi (engl. Edwin Brady) i Kris Moris (engl. Chris Morris) na Univerzitetu u Durhamu. Predstavljen je 1. aprila 2003. godine. On je nazvan po karakterima beline (eng. whitespace) (npr. razmak, tabulator). Za razliku od većine programskih jezika, koji ignorišu belinu ili joj daju malo značaja, Vajtspejs interpreter zanemaruje sve karaktere osim belina. Samo razmak, tabulator, i novi red imaju značenje. [1] Zanimljiva posledica ove osobine je da se Whitespace program lako može naći unutar znakova beline programa koji je napisan na drugom jeziku, osim možda u jezicima koji zavise od razmaka za validnost sintakse (npr. Piton), čineći tekst poliglotskim.
Vajtspejs | |
---|---|
Originalni naziv | engl. Whitespace |
Izgovara se | vajtspejs |
Model | imperativni, strukturni, stek orijentisani, ezoterični |
Pojavio se | 1. april 2003. |
Autor(i) | Edvin Brejdi i Kris Moris |
Veb-sajt | Whitespace |
Dokumentacija | Whitespace Tutorial |
Sam jezik je imperativan, realizovan kao stek-mašina. Virtuelna mašina u kojoj se programi pokreću ima stek i hrpu, i može da obrađuje cele brojeve bilo koje veličine. Brojevi sa pokretnim zarezom nisu implementirani. Stek se koristi za izvršavanje komandi, a hrpa igra ulogu skladišta promenljivih i struktura podataka.
Istorija
urediVajtspejs su stvorili 2003. godine Edvin Brejdi i Kris Moris. Način rada prilično jednostavan, a sam jezik nema praktične vrednosti, tako da nisu nastali novi dijalekti i opis koji su dali autori je jedini postojeći standard.[2]
Ideju za upotrebu razmaka u tekstu, odnosno beline, kao operatora u jeziku C++ predložio je Bjarne Stroustrup pet godina pre nastanka jezika Vajtspejs.[3]
Sintaksa
urediProgram se sastoji od niza razmaka (Space, ASCII 32), tabulatora (Tab, ASCII 9) i simbola za novi red (LF, ASCII 10). Ovi simboli predstavljaju niz različitih komandi. Ostali simboli se zanemaruju i mogu se koristiti za komentare.
Podaci su predstavljeni u binarnom sistemu, koristeći razmake (0) i tabulatore (1), a zatim novi red. Na taj način, “razmak-razmak-razmak-tabulator-razmak-tabulator-tabulator-novi red” je binarni broj 0001011, odnosno 11 u dekadnom zapisu.
Komande se sastoje od tokena, počev od prefiksa, koji opredeljuje tip komande i kod komande.[4] U sledećoj tabeli su navedeni svi prefiksi.
Prefiks | Značenje |
---|---|
[Razmak] | Manipulacija steka |
[Tabulator][Razmak] | Aritmetičke operacije |
[Tabulator][Tabulator] | Dostup hrpi |
[Novi red] | Kontrola toka |
[Tabulator][Novi red] | Ulaz/Izlaz |
Svaki prefiks je praćen jednom od definisanih operacija za taj prefiks. Na primer, "tabulator-razmak-razmak-razmak" izvršava aritmetičko sabiranje prva dva elemenata steka.[5]
Primer koda
urediSledeće je Vajtspejs program sa komentarima, koji ispisuje "Hello, world!", gde se ispred svakog razmaka, tabulatora, ili novog reda nalazi indentifikacioni komentar "R", "T", ili "L" respektivno:
Р Р Р Т Р Р Т Р Р Р Л Т Л Р Р Р Р Р Т Т Р Р Т Р Т Л Т Л Р Р Р Р Р Т Т Р Т Т Р Р Л Т Л Р Р Р Р Р Т Т Р Т Т Р Р Л Т Л Р Р Р Р Р Т Т Р Т Т Т Т Л Т Л Р Р Р Р Р Т Р Т Т Р Р Л Т Л Р Р Р Р Р Т Р Р Р Р Р Л Т Л Р Р Р Р Р Т Т Т Р Т Т Т Л Т Л Р Р Р Р Р Т Т Р Т Т Т Т Л Т Л Р Р Р Р Р Т Т Т Р Р Т Р Л Т Л Р Р Р Р Р Т Т Р Т Т Р Р Л Т Л Р Р Р Р Р Т Т Р Р Т Р Р Л Т Л Р Р Р Р Р Т Р Р Р Р Т Л Т Л Р Р Л Л Л
Imajte na umu da kada je Vajtspejs kod prikazan u nekim veb-pregledačima, horizontalni razmak proizveden tabulatorom nije konstantan, već zavisi od njegovog položaja u tekstu u odnosu na sljedeć. U zavisnosti od softvera, može se desiti da se tabulatori zamene i odgovarajućim promenljivim brojem razmaka.
Ispod se nalazi još jedan primer Vajtspejs programa. On izračunava brojeve fibonačijevog niza.
Р Р Р Т Л Р Р Т Т Р Р Р Р Л Т Т Р Р Р Р Т Р Л Р Р Р Т Р Т Т Р Р Л Т Т Р Р Р Р Т Т Л Р Р Р Т Р Р Р Р Р Л Т Т Р Р Р Р Т Р Р Л Р Р Т Р Л Т Т Р Р Р Р Т Р Т Л Р Р Р Т Л Т Т Р Л Р Р Р Л Р Р Р Т Р Т Л Р Р Р Т Р Р Л Т Т Т Р Р Р Т Р Р Л Р Л Р Р Р Р Т Р Т Л Т Т Т Р Л Р Т Л Р Т Р Р Р Т Р Л Т Т Т Т Л Р Р Р Р Р Т Т Л Т Т Т Т Л Р Р Т Т Р Т Т Т Т Р Р Р Т Т Р Р Р Р Т Л Р Л Р Р Л Р Р Л Р Т Т Т Т Р Р Р Т Т Р Т Т Т Л Т Т Р Л Р Р Р Т Р Т Р Л Р Р Р Т Р Т Т Т Р Л Р Л Р Р Л Р Т Л Р Р Т Л Р Р Т Л Р Р Т Л Р Р Л Л Л
Vidi još
uredi- Steganografija, tehnika skrivanja poruka u drugim porukama
- Piton, najpoznatiji primer programskog jezika u kome su beline sintaksno bitne
- Ezoterični programski jezici
- Brainfuck, koristi samo osam jednostavnih komandi
- INTERCAL, kompajlerski jezik bez izgovorljivog akronima, parodija na jezike i ideje iz 60-ih
- LOLCODE, jezik sa sintaksom zasnovanom na internet-memu
- Malbolge, jezik koji je dizajniran da bude skoro nemoguće programirati u njemu
Reference
uredi- ^ „Whitespace”. Compsoc. Arhivirano iz originala 01. 11. 2015. g. Pristupljeno 13. 10. 2018.
- ^ „Whitespace”. progopedia alpha. Arhivirano iz originala 30. 09. 2018. g. Pristupljeno 13. 10. 2018.
- ^ Stroustrup, Bjarne. „Generalizing Overloading for C++2000” (PDF). Florham Park, NJ, USA: AT&T Labs. Pristupljeno 17. 10. 2018.
- ^ „Whitespace Tutorijal”. Compsoc. Arhivirano iz originala 01. 11. 2015. g. Pristupljeno 13. 10. 2018.
- ^ Whitespace tutorijal Arhivirano 2015-11-01 na sajtu Wayback Machine
Spoljašnje veze
uredi- Zvanični veb-sajt
- Objava na Slashdot-u
- Kolekcija interpretatora za Whitespace u različitim skriptnim jezicima
- Acme::Bleach Perl modul koji prepisuje telo vašeg modula u enkoding koji koristi samo karaktere beline ("za veoma čiste programe")