Это так называемый эзотерический язык программирования
В Whitespace — одном из самых странных языков программирования — код состоит только из пробелов, табуляций и переводов строки. Все остальные символы игнорируются и используются только как комментарии.
Это позволяет вставлять работающий код Whitespace в пробелы любого другого кода — и таким образом делать полиглоты: один и тот же файл может одновременно быть, например, Python-скриптом и Whitespace-программой.
Как это работает
Whitespace — это стековый императивный язык. Он умеет:
- класть числа в стек,
- выполнять арифметику (сложение, вычитание, деление),
- обращаться к куче (heap),
- работать с вводом-выводом,
- прыгать по меткам и вызывать подпрограммы.
Каждая команда кодируется последовательностью из пробелов (S), табов (T) и переводов строки (L). Например, последовательность T S S
(таб, пробел, пробел) складывает два числа из стека.
7 курсов, с которых реально стартуют в IT в 2025tproger.ru
Числа кодируются в двоичном формате: S
— это 0, T
— 1, а знак задаётся первым символом: S
— плюс, T
— минус. Например, число 75 в Whitespace выглядит так:
S T S S T S T T L
Кто его придумал
Язык придумали Эдвин Брейди и Крис Моррис в 2002 году — те самые, кто позже создали языки Idris и Kaya. Презентовали Whitespace 1 апреля. И многие решили, что это шутка. Которая, по всей видимости, вышла из-под контроля.
Идея использовать только пробельные символы появилась ещё раньше: в 1997 году Бьёрн Страуструп, автор C++, предложил это также в шутку — как абсурдную эволюцию C++.
«Hello, world!» на Whitespace
Вот как выглядит программа, которая выводит Hello, world!
:
S S S T S S T S S S L T L S S ...
В этой записи S
— пробел, T
— табуляция, L
— перевод строки. Для людей такая программа полностью невидима: она выглядит как пустой файл, но её можно запустить через интерпретатор.
Зачем всё это
Whitespace — язык из категории эзотерических.
Его не используют в продакшене — он создан для развлечения, экспериментов и изучения того, где границы читаемого и исполнимого кода.
Кроме того, это отличный способ спрятать код в самом неожиданном месте.