Вајтспејс

From Wikipedia, the free encyclopedia

Вајтспејс
Remove ads

Вајтспејс (енгл. ) је езотеричан програмски језик, развијен од стране Едвин Брејди (енгл. ) и Крис Морис (енгл. ) на Универзитету у Дурхаму. Представљен је 1. априла 2003. године. Он је назван по карактерима белине (eng. whitespace) (нпр. размак, табулатор). За разлику од већине програмских језика, који игноришу белину или јој дају мало значаја, Вајтспејс интерпретер занемарује све карактере осим белина. Само размак, табулатор, и нови ред имају значење. [1] Занимљива последица ове особине је да се Whitespace програм лако може наћи унутар знакова белине програма који је написан на другом језику, осим можда у језицима који зависе од размака за валидност синтаксе (нпр. Питон), чинећи текст полиглотским.

Укратко Вајтспејс, Оригинални назив ...

Сам језик је императиван, реализован као стек-машина. Виртуелна машина у којој се програми покрећу има стек и хрпу, и може да обрађује целе бројеве било које величине. Бројеви са покретним зарезом нису имплементирани. Стек се користи за извршавање команди, а хрпа игра улогу складишта променљивих и структура података.

Remove ads

Историја

Вајтспејс су створили 2003. године Едвин Брејди и Крис Морис. Начин рада прилично једноставан, а сам језик нема практичне вредности, тако да нису настали нови дијалекти и опис који су дали аутори је једини постојећи стандард.[2]

Идеју за употребу размака у тексту, односно белине, као оператора у језику C++ предложио је Бјарне Строуструп пет година пре настанка језика Вајтспејс.[3]

Синтакса

Програм се састоји од низа размака (Space, ASCII 32), табулатора (Tab, ASCII 9) и симбола за нови ред (LF, ASCII 10). Ови симболи представљају низ различитих команди. Остали симболи се занемарују и могу се користити за коментаре.

Подаци су представљени у бинарном систему, користећи размаке (0) и табулаторе (1), а затим нови ред. На тај начин, 「размак-размак-размак-табулатор-размак-табулатор-табулатор-нови ред」 је бинарни број 0001011, односно 11 у декадном запису.

Команде се састоје од токена, почев од префикса, који опредељује тип команде и код команде.[4] У следећој табели су наведени сви префикси.

Више информација Префикс, Значење ...

Сваки префикс је праћен једном од дефинисаних операција за тај префикс. На пример, "табулатор-размак-размак-размак" извршава аритметичко сабирање прва два елемената стека.[5]

Remove ads

Пример кода

Следеће је Вајтспејс програм са коментарима, који исписује "Hello, world!", где се испред сваког размака, табулатора, или новог реда налази индентификациони коментар "Р", "Т", или "Л" респективно:

Р Р Р Т	Р Р Т	Р Р Р Л
Т	Л
Р Р Р Р Р Т	Т	Р Р Т	Р Т	Л
Т	Л
Р Р Р Р Р Т	Т	Р Т	Т	Р Р Л
Т	Л
Р Р Р Р Р Т	Т	Р Т	Т	Р Р Л
Т	Л
Р Р Р Р Р Т	Т	Р Т	Т	Т	Т	Л
Т	Л
Р Р Р Р Р Т	Р Т	Т	Р Р Л
Т	Л
Р Р Р Р Р Т	Р Р Р Р Р Л
Т	Л
Р Р Р Р Р Т	Т	Т	Р Т	Т	Т	Л
Т	Л
Р Р Р Р Р Т	Т	Р Т	Т	Т	Т	Л
Т	Л
Р Р Р Р Р Т	Т	Т	Р Р Т	Р Л
Т	Л
Р Р Р Р Р Т	Т	Р Т	Т	Р Р Л
Т	Л
Р Р Р Р Р Т	Т	Р Р Т	Р Р Л
Т	Л
Р Р Р Р Р Т	Р Р Р Р Т	Л
Т	Л
Р Р Л
Л
Л

Имајте на уму да када је Вајтспејс код приказан у неким веб-прегледачима, хоризонтални размак произведен табулатором није константан, већ зависи од његовог положаја у тексту у односу на сљедећ. У зависности од софтвера, може се десити да се табулатори замене и одговарајућим променљивим бројем размака.

Испод се налази још један пример Вајтспејс програма. Он израчунава бројеве фибоначијевог низа.

Р Р Р Т	Л
Р Р Т	Т	Р Р Р Р Л
Т	Т	Р Р Р Р Т	Р Л
Р Р Р Т	Р Т	Т	Р Р Л
Т	Т	Р Р Р Р Т	Т	Л
Р Р Р Т	Р Р Р Р Р Л
Т	Т	Р Р Р Р Т	Р Р Л
Р Р Т	Р Л
Т	Т	Р Р Р Р Т	Р Т	Л
Р Р Р Т	Л
Т	Т	Р Л
Р Р Р Л
Р Р Р Т	Р Т	Л
Р Р Р Т	Р Р Л
Т	Т	Т	Р Р Р Т	Р Р Л
Р Л
Р Р Р Р Т	Р Т	Л
Т	Т	Т	Р Л
Р Т	Л
Р Т	Р Р Р Т	Р Л
Т	Т	Т	Т	Л
Р Р Р Р Р Т	Т	Л
Т	Т	Т	Т	Л
Р Р Т	Т	Р Т	Т	Т	Т	Р Р Р Т	Т	Р Р Р Р Т	Л
Р Л
Р Р Л
Р Р Л
Р Т	Т	Т	Т	Р Р Р Т	Т	Р Т	Т	Т	Л
Т	Т	Р Л
Р Р Р Т	Р Т	Р Л
Р Р Р Т	Р Т	Т	Т	Р Л
Р Л
Р Р Л
Р Т	Л
Р Р Т	Л
Р Р Т	Л
Р Р Т	Л
Р Р Л
Л
Л

Види још

  • Стеганографија, техника скривања порука у другим порукама
  • Питон, најпознатији пример програмског језика у коме су белине синтаксно битне
  • Езотерични програмски језици
    • Brainfuck, користи само осам једноставних команди
    • INTERCAL, компајлерски језик без изговорљивог акронима, пародија на језике и идеје из 60-их
    • LOLCODE, језик са синтаксом заснованом на интернет-мему
    • Malbolge, језик који је дизајниран да буде скоро немогуће програмирати у њему
Remove ads

Референце

Спољашње везе

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads