Пробел (язык программирования) - Whitespace (programming language)

Пробел привет мировая программа с подсветкой синтаксиса
  вкладки
  пробелы

Пробел является эзотерический язык программирования разработан Эдвином Брэди и Крисом Моррисом в Даремский университет (также разработчики Кая и Идрис языки программирования). Он был выпущен 1 апреля 2003 г. (День дурака ). Его название является ссылкой на пробельные символы. В отличие от большинства языков программирования, которые игнорируют или присваивают мало значения большинству пробельных символов, интерпретатор пробелов игнорирует любые непробельные символы. Только пробелы, вкладки и перевод строки имеют значение.[1] Следствием этого свойства является то, что программа с пробелами может легко содержаться внутри пробельных символов программы, написанной на другом языке, за исключением, возможно, языков, которые зависят от пробелов для допустимости синтаксиса, таких как Python, делая текст полиглот.

В язык сам по себе императив стековый язык. В виртуальная машина на котором выполняются программы, имеет стек и куча. Программист может помещать в стек целые числа произвольной ширины (в настоящее время не существует реализации чисел с плавающей запятой), а также может обращаться к куче как к постоянному хранилищу переменных и структуры данных.

История

Whitespace был создан Эдвином Брэди и Крисом Моррисом в 2002 году. Slashdot дал обзор этого язык программирования 1 апреля 2003 г.[2]

Идея использования пробелов в качестве операторов для C ++ язык был в шутку предложен пятью годами ранее Бьярне Страуструп.[3]


Синтаксис

Команды состоят из последовательностей пробелов, позиций табуляции и перевода строки. Например, табуляция-пробел-пробел-пробел выполняет арифметическое сложение двух верхних элементов в стеке. Данные представлены в двоичный использование пробелов (0) и табуляции (1) с последующим переводом строки; таким образом, пробел-пробел-пробел-табуляция-табуляция-табуляция-перевод строки - это двоичное число 0001011, которое в десятичной форме равно 11. Все остальные символы игнорируются и поэтому могут использоваться для комментариев.

Код написан как Параметр модификации инструкции (IMP) с последующей операцией.[4] В таблице ниже показан список всех IMP в пробелах.

IMPСмысл
[Космос]Управление стеком
[Tab] [Пробел]Арифметика
[Tab] [Tab]Доступ к куче
[LineFeed]Управление потоком
[Tab] [LineFeed]Ввод / вывод

За каждым IMP следует одна операция, определенная для этого IMP, и параметр, если необходимо. Список операций, поддерживаемых в Whitespace:[4]

IMPКомандаПараметрСмысл
[Космос][Космос]ЧислоПоложите число в стопку
[Космос][LF] [Пробел]-Дублируйте верхний элемент в стопке
[Космос][LF] [Tab]-Поменяйте местами два верхних элемента в стеке
[Космос][LF] [LF]-Отбросить верхний предмет в стопке
[Tab] [Пробел][Пробел] [Пробел]-Добавление
[Tab] [Пробел][Пробел] [Tab]-Вычитание
[Tab] [Пробел][Пробел] [LF]-Умножение
[Tab] [Пробел][Tab] [Пробел]-Целочисленное деление
[Tab] [Пробел][Tab] [Tab]-По модулю
[Tab] [Tab][Космос]-Хранить в куче
[Tab] [Tab][Tab]-Получить из кучи
[LF][Пробел] [Пробел]меткаОтметьте место в программе
[LF][Пробел] [Tab]меткаВызов подпрограммы
[LF][Пробел] [LF]меткаПерейти к ярлыку
[LF][Tab] [Пробел]меткаПерейти к метке, если верх стека равен нулю
[LF][Tab] [Tab]меткаПерейти к метке, если верх стопки отрицательный
[LF][Tab] [LF]-Завершить подпрограмму и передать управление вызывающей стороне
[LF][LF] [LF]-Завершить программу
[Tab] [LF][Пробел] [Пробел]-Вывести символ вверху стека
[Tab] [LF][Пробел] [Tab]-Выведите число вверху стопки
[Tab] [LF][Tab] [Пробел]-Прочтите символ и поместите его в место, указанное в верхней части стопки
[Tab] [LF][Tab] [Tab]-Прочтите число и поместите его в место, указанное в верхней части стопки

Образец кода

Ниже приведена программа с комментариями для пробелов, которая просто печатает "Привет, мир!", где каждый Космос, Вкладка, или символу перевода строки предшествует идентифицирующий комментарий «S», «T» или «L» соответственно:

S S S Т	S S Т	S S S L
Т	L
S S S S S Т	Т	S S Т	S Т	L
Т	L
S S S S S Т	Т	S Т	Т	S S L
Т	L
S S S S S Т	Т	S Т	Т	S S L
Т	L
S S S S S Т	Т	S Т	Т	Т	Т	L
Т	L
S S S S S Т	S Т	Т	S S L
Т	L
S S S S S Т	S S S S S L
Т	L
S S S S S Т	Т	Т	S Т	Т	Т	L
Т	L
S S S S S Т	Т	S Т	Т	Т	Т	L
Т	L
S S S S S Т	Т	Т	S S Т	S L
Т	L
S S S S S Т	Т	S Т	Т	S S L
Т	L
S S S S S Т	Т	S S Т	S S L
Т	L
S S S S S Т	S S S S Т	L
Т	L
S S L
L
L

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

Смотрите также

Рекомендации

  1. ^ "Пробел". Compsoc. Архивировано из оригинал 1 ноября 2015 г.. Получено 26 октября 2015.
  2. ^ Тимофей (1 апреля 2003 г.). «Новый язык программирования, использующий только пробелы». Slashdot. Получено 23 января 2014.
  3. ^ Страуструп, Бьярн. «Обобщение перегрузки для C ++ 2000» (PDF). Флорхэм Парк, Нью-Джерси, США: AT&T Labs. Получено 23 января 2014.
  4. ^ а б "Учебник по пробелам". CompSoc.dur.ac.uk. Архивировано из оригинал 1 ноября 2015 г.. Получено 8 декабря 2015.

внешняя ссылка