Как невидимые символы становятся командами

В обычном коде пробелы и переносы строк в основном помогают человеку читать программу. Whitespace меняет их роль: это язык программирования, где значимы именно три символа — пробел, табуляция и перевод строки. Их последовательности образуют инструкции, а видимые буквы и цифры программа пропускает как комментарии.

Поэтому исходный текст можно открыть в редакторе и не увидеть в нём ни одной команды. Чтобы разобраться в программе, нужен инструмент, который показывает пробелы и табуляции разными знаками или цветами: на экране они выглядят похоже, но для интерпретатора означают разное.

Как язык отличает одну команду от другой

Whitespace не просто присваивает каждому символу отдельное действие. Инструкции собираются из последовательностей: начальные символы указывают, к какому семейству относится команда, а следующие задают конкретное действие или значение. Например, числовые данные тоже кодируются последовательностью пробелов и табуляций, после которой перенос строки обозначает её завершение.

Такой принцип позволяет записать полноценную программу, но переносит обычную для языков программирования работу — разбор команд — в область, которую редактор обычно скрывает. Лишний пробел, потерянная табуляция или автоматическое форматирование могут изменить код, хотя видимые слова останутся прежними.

Шутка, которая работает как настоящий язык

Whitespace часто называют эзотерическим языком: он создан скорее как необычный эксперимент, чем как удобный способ писать повседневные приложения. Его устройство наглядно показывает, что команда в программе — не обязательно понятное человеку слово: это может быть и последовательность почти невидимых знаков.

У языка есть и практическое последствие для чтения кода: знакомые буквы в файле не обязательно выполняют какую-либо функцию. В Whitespace они могут служить маскировкой, а настоящая программа прячется между ними — в пробелах, табуляциях и переносах строк.