Язык программирования Whitespace продолжает серию наших статей об эзотерических языках программирования. Это довольно интересный в своем роде язык, синтаксис которого содержит непечатаемые символы.
Он не имеет практической ценности, не породил фреймворков и диалектов или кучу стандартов. Все, что есть на этот язык, — так это документация самого автора, где он разъяснил все, что можно разъяснить по этому языку программирования. Кстати, автором является Эдвин Брейди, который презентовал Whitespace в 2003-м году.
Язык программирования Whitespace
Основой синтаксиса Whitespace являются те символы, которые игнорируют все известные языки программирования. Поэтому в этом языке можно уследить «нотку протеста» в знак того, что не все символы воспринимаются популярными языками программирования.
Как делятся символы? Все символы в первую очередь делятся на 2 большие группы:
Видимые — это те символы, которые можно увидеть своими глазами, то есть: буквы, числа, специальные символы.
Невидимые — это те символы, которые не видно, то есть: «пробел», «табуляция» и «перенос строки».
Большинство известных нам языков используют в своем синтаксисе все «видимые», а «невидимые» просто игнорируют. Язык программирования Whitespace пошел совсем по другому пути: он использует в своем синтаксисе только «невидимые» символы, а все «видимые» игнорирует. «Видимые» символы он использует только в качестве комментариев. И делать это надо очень аккуратно, чтобы не использовать много пробелов подряд.
«Работать» с Whitespace можно в 16-битном редакторе либо в IDE, которые поддерживают визуальное обозначение символов, которые не видны.
Команды Whitespace
Итак, любая команда в Whitespace может состоять только из трех символов, которые не видны в обычной ситуации:
пробела (ASCII 32);
табуляции (ASCII 9);
новой строчки (ASCII 10).
Все команды в основном длинного размера и включают в себя по несколько «символов» языка, обычно от 3-4 штук. При этом команды могут выполнять все основные операции:
взаимодействовать со стеком;
выполнять арифметические действия;
работать с массивами;
управлять потоком разрабатываемой программы;
вводить или выводить нужные данные.
Примеры команд языка программирования Whitespace
Так как визуально презентовать синтаксис языка программирования Whitespace не получится по понятным причинам, то команды будут описаны словами. Кстати, при работе с числами Whitespace «понимает» только целые числа, представленные в двоичной системе. При написании числа нужно обязательно указывать его знак, для этого используется:
«табуляция», чтобы показать, что число будет отрицательное;
«пробел», чтобы показать, что число будет положительное.
Несколько примеров команд Whitespace:
«пробел»-«пробел»-«двоичное число» — команда, которая добавляет в стек число;
«пробел»-«перенос строки»-«пробел» — когда нужно дублирование числа в вершине стека;
«пробел»-«перенос строки»-«перенос строки» — когда нужно найти в стеке верхний элемент и удалить его;
«табуляция»-«пробел»-«пробел»-«пробел» — когда нужно сложить числа;
«табуляция»-«пробел»-«пробел»-«табуляция» — когда нужно выполнить вычитание;
«табуляция»-«пробел»-«пробел»-«перенос строки» — когда нужно умножить числа;
«табуляция»-«пробел»-«табуляция»-«пробел» — когда нужно разделить числа;
«перенос строки»-«перенос строки»-«перенос строки» — когда нужно остановить выполнение программы;
и др.
Ниже приведем пример кода языка программирования Whitespace и напишем привычное всем первое выражение любого разработчика: «Hello,World!». Для наглядности и удобства понимания мы обозначили:
«пробел» буквой «П»;
«табуляцию» буквой «Т»;
«перенос строки» буквой «С».
Пример скрипта Whitespace:
П П П T П П T П П П С
T С
П П П П П T T П П T П T С
T С
П П П П П T T П T T П П С
T С
П П П П П T T П T T П П С
T С
П П П П П T T П T T T T С
T С
П П П П П T П T T П П С
T С
П П П П П T П П П П П С
T С
П П П П П T T T П T T T С
T С
П П П П П T T П T T T T С
T С
П П П П П T T T П П T П С
T С
П П П П П T T П T T П П С
T С
П П П П П T T П П T П П С
T С
П П П П П T П П П П T С
T С
П П С
С
С
Заключение
Язык программирования Whitespace — это очень необычный синтаксис. Практического применения у языка нет. А с другой стороны, гляньте на скрипт, который выводит просто: «Привет, Мир!» и представьте, каким должен быть скрипт, если нужно будет создать программу посложнее?
Другое