Whitespace (programozási nyelv)
Whitespace | |
Paradigma | ezoterikus |
Megjelent | 2003 |
Tervező | Edwin Brady, Chris Morris |
Hatással volt rá | Brainfuck |
Weboldal |
A Whitespace egy ezoterikus programozási nyelv, amelyet Edwin Brady és Chris Morris fejlesztettek ki a Durhami Egyetemen. 2003. április 1-jén (bolondok napján) adták ki. A legtöbb nyelvvel ellentétben, amelyek gyakran figyelmen kívül hagyják a whitespace-eket, a Whitespace értelmező figyelmen kívül hagy minden nem whitespace karaktert. Csak a szóköz, tabulátor és a soremelés karaktereket veszi figyelembe a szintaxis. Ennek a tulajdonságnak érdekes következménye, hogy egy másik nyelv whitespace karakterei könnyedén tartalmazhatnak egy Whitespace programot. Akár úgy is, hogy ugyanazt a programot valósítják meg.
A nyelv maga egy imperatív, verem alapú programozási nyelv. A virtuális számítógép, amin a program fut, egy veremmel és egy halommal rendelkezik. A programozó szabadon rakhat a verembe tetszőleges méretű egészeket (jelenleg lebegőpontos számok nincsenek implementálva). Használhatja ezenkívül a halmot is a változók és adatszerkezetek tárolóhelyéül.
A Whitespace-t viccesen a titkosított programozás nagy nyelvének tartják, mivel a fontos kódot ki lehet nyomtatni egy papírlapra, és megbízhatóan tárolható, anélkül, hogy azon kellene aggódni, hogy bárki elolvassa, vagy visszafejti. Beleértve az illetékteleneket, de az illetékeseket is.
A Whitespace bizonyítottan Turing-teljes.[1]
Történelem
[szerkesztés]A Whitespace-t Edwin Brady és Chris Morris készítette 2002-ben. 2003. április 1-jén a Slashdot kiadott egy ismertetőt erről a programozási nyelvről. Ugyanebben az évben implementálták egy interpreterét is. A nyelv alapötletét Bjarne Stroustrup már öt évvel korábban felvetette.
Szintaxis
[szerkesztés]A parancsok csak szóközökből, tabulátorokból és soremelés karakterekből állnak. Az adatokat binárisan reprezentálják tabulátorokkal és szóközökkel. Minden egyéb karaktert figyelmen kívül kell hagyni, így használhatók megjegyzésekre.
Utasítástípusok:
- 4 veremkezelő utasítás szóköz prefixszel
- 5 aritmetikai utasítás tabulátor+szóköz prefixszel
- 2 halomkezelő utasítás tabulátor+tabulátor prefixszel
- 7 vezérlő utasítás (a címkedefiníciót is beleértve) sortörés prefixszel
- 4 I/O utasítás tabulátor+sortörés prefixszel
Példakód
[szerkesztés]Ez a program kiírja a 'Hello, Vilag!' üzenetet. A whitespace-ek színezése: Szóköz, Tabulátor Az L a soremelés karaktert helyettesíti.
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 S T S T T S L T L S S S S S T T S T S 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 S S S T L T L S S S S S T T S S T T T L T L S S S S S T S S S S T L T L S S L L L
Jegyzetek
[szerkesztés]- ↑ A Turing-teljesség bizonyítása. Durham University Computing Society. [2014. október 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. július 13.)
Kapcsolódó szócikkek
[szerkesztés]További információk
[szerkesztés]- Whitespace honlap
- Az egyes kiadások hirdetményei a Slashdoton
- Acme::Bleach Perl átalakító modul