Whitespace (programozási nyelv)

A Wikipédiából, a szabad enciklopédiából
Whitespace
Paradigma ezoterikus
Megjelent 2003
Tervező Edwin Brady, Chris Morris
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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 IO utasítás tabulátor+sortörés prefixszel

Példakód[szerkesztés | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

  1. A Turing-teljesség bizonyítása. Durham University Computing Society. (Hozzáférés: 2007. július 13.)

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]

További információk[szerkesztés | forrásszöveg szerkesztése]