Пробел
Whitespace е популярен езотеричен език за програмиране, известен с факта, че изходният код на програмата се състои само от непечатаеми символи.
Всички езикови команди се състоят от три типа знаци: интервал (интервал, ASCII 32), раздел (Tab, ASCII 9) и нов ред (LF, ASCII 10). Самите команди са доста дълги (обикновено 3-4 знака) и има много от тях; те се организират чрез използване на префикс (така нареченият параметър за модификация на инструкциите), който обозначава вида на инструкцията: операции на стека, аритметика, достъп до купчина, контрол на програмния поток, I/O.
Езиковата виртуална машина е оборудвана със стек и купчина, които могат да обработват цели числа с произволна ширина. Стекът се използва за изпълнение на команди, а купчината действа като хранилище за данни.
Езикът използва само един тип данни - цели числа в двоично представяне. Числото започва с посочване на неговия знак (интервал - положителен, Tab - отрицателен), последван от двоичен запис на абсолютната стойност на числото (интервал - 0, Tab - 1) и LF, сигнализиращ края на числото.
Етикетът е произволен списък с интервали и раздели, завършени с емисия на редове. Етикетите се използват за контрол на потока на изпълнение на програма и трябва да бъдат уникални в рамките на програмата.
Езикови команди (групирани по тип):
Стек операции
- Space-Space-Number: добавете число към стека
- Space-LF-Space: дублирайте номера в горната част на стека
- Space-LF-Tab: разменете горните два елемента в стека
- Space-LF-LF: извадете горния елемент от стека и го изхвърлете
- Space-Tab-Space-Number: копирайте N-ия елемент на стека (индексът, даден от аргумента) в горната част на стека
- Space-Tab-LF-Number: Преместете N елемента от стека, като същевременно запазите горната част
Последните две команди са разширение, налично от Whitespace 0.3, предназначено да улесни работата с рекурсивни функции.
Аритметика
- Tab-Space-Space-Space: допълнение
- Tab-Space-Space-Tab: Изваждане
- Tab-Space-Space-LF: умножение
- Tab-Space-Tab-Space: разделяне (цяло число)
- Tab-Space-Tab-Tab: останалата част от разделението
Операцията се прилага към горните два елемента на стека. Лявият операнд се счита за по-ранния елемент на стека (добавен първи).
Достъп до купчина
Контролиране на потока на изпълнение на програмата
- LF-Space-Space-Label: Създаване на етикет
- LF-Space-Tab-Label: Подпрограма за повикване
- LF-Space-LF-Label: отидете на етикета
- LF-Tab-Space-Label: преминете към етикет, ако горната част на стека е нула
- LF-Tab-Tab-Label: Преминаване към етикет, ако горната част на стека е отрицателна
- LF-Tab-LF: Край на подпрограмата и прехвърляне на контрола към повикващата програма
- LF-LF-LF: прекратете програмата
Вход изход
Трябва да се отбележи, че когато се използват елементи на стека при изпълнение на команди, в повечето случаи те се отстраняват от стека.
Здравей свят !:
Купчината се използва за съхранение на променливи: 1 - първото число, чийто факториал не е необходим, 2.5 - ASCII-кодове на символи, използвани за печат, 6 и 7 - текущият номер и неговият факториал. Самият факториал се изчислява итеративно: при всяка итерация се отпечатва предварително изчисленият брой и факториал, след това се изчисляват нови и се съхраняват в паметта. След това новото число (клетка 6) се сравнява с клетка 1: ако числото е по-малко, цикълът се повтаря, в противен случай спира.
Интересното е, че в Whitespace нулата е „отрицателна“: числото трябва да съдържа поне един Tab в записа, няма такива в двоичната нотация, така че трябва да зададете знаковия бит и да напишете нула като Tab-LF.
Числа на Фибоначи:
Примерът работи подобно на факториал, но използва по-интензивно съхранението на данни в стека и командата за копиране на горната част на стека, за да се избегнат ненужни достъпи до паметта. Също така в този пример броячът е отрицателен и се увеличава с всяка итерация.
- Mascotte, Енциклопедията на модата
- Как да лекуваме брадавици в езика, премахвайки брадавици в езика с народни средства
- Географска енциклопедия - значение на Токийския залив
- Хидроизогипс - Голяма енциклопедия на нефт и газ, статия, страница 1
- АНТОНОМАЗИЯ, значение, Съставен речник на чужди думи на руския език