Whitespace: различия между версиями

Материал из Поле цифровой дидактики
(Новая страница: «{{Карточка языка программирования |Description=Язык программирования, в котором для управляющих конструкций используются только непечатаемые символы, а именно: пробел, перевод строки и табуляция. |Purpose=Язык общего назначения |Visual_Text_Blocks=Текст |Field_of_knowledge=Инфо...»)
 
 
Строка 7: Строка 7:
|Address=https://web.archive.org/web/20080331083700/http://compsoc.dur.ac.uk/whitespace/
|Address=https://web.archive.org/web/20080331083700/http://compsoc.dur.ac.uk/whitespace/
|Remixing=Нет
|Remixing=Нет
|launch year=2003
|launch year=2002
|Inventor=Эдвин Брэди (Edwin Brady), Крис Моррис (Chris Morris)
|Inventor=Эдвин Брэди (Edwin Brady), Крис Моррис (Chris Morris)
|ForMobileApps=Нет
|ForMobileApps=Нет
}}
}}
[[Файл:Whitespace с подсветкой синтаксиса.png|обрамить|справа|Whitespace с подсветкой синтаксиса Vim (синий - табуляция, красный - пробел)]]
== Появление ==
Данный изотерический язык был разработан в 2002 года двумя студентами Даремского университета. Сама идея языка, в котором пробелы используются как операторы была предложена Бьерном Страуструпом (разработчик языка программирования C++) в 1997 году. Кратковременную популярность язык обрел после 1 апреля 2003 года, после того как о нем написали статью на Slashdot (/.) - сайте с новостями из мира науки, технологий и политики.
== Синтаксис ==
'''''Для упрощения читаемости далее используются обозначения:''''' '''S''' - пробел, '''T''' - табуляция, '''L''' - перенос строки
Каждая команда в Whitespace состоит из трех частей:
# '''IMP (Instruction Modification Parameter)''' - параметр, указывающий к какой из 5 групп относится команда (позволяет увеличить общее количество допустимых команд)
# '''Оператор'''
# '''Аргументы''' (при наличии)
===== Представление двоичных чисел =====
Зачастую в качестве аргументов используются двоичные числа. Для их представления используется следующая система:
* '''S/T''' - +/- (первый символ числа)
* '''S/T''' - 0/1
* '''L''' - конец числа (последний символ числа)
===== Представление символов =====
Для представления символов используется таблица кодировки ASCII
===== IMP =====
Всего существует 5 видов IMP, каждому из которых соответствует группа из уникальных команд:
* '''S''' - манипуляции со стеком (
* '''L''' - контроль потока
* '''TT''' - доступ к куче
* '''TS''' - арифметические действия
* '''TL''' - ввод/вывод
===== Список возможных команд =====
{| class="wikitable"
! IMP !! Оператор !! Параметр !! Значение
|-
| S || S || Число || Добавить число в стек
|-
| S || LS || - || Дублировать верхний элемент стека
|-
| S || TS || Число || Копировать n-ый элемент стека (указанный аргументом) на вершину стека
|-
| S || LT || - || Поменять местами два верхних элемента стека
|-
| S || LL || - || Удалить верхний элемент из стека
|-
| S || TL || Число || Сместить n элементов из стека, сохраняя верхний элемент
|-
| L || S|| Метка ||  Отметить местоположение в программе
|-
| L || ST || Метка || Вызвать подпрограмму
|-
| L || SL || Метка  || Перейти к метке
|-
| L || TS || Метка  || Перейти к метке если верхний элемент стека равен 0
|-
| L || TT || Метка  || Перейти к метке, если верхний элемент стека отрицательный
|-
| L || T || - || Завершить подпрограмму и передать управление вызывающему
|-
| L || L || - || Завершить программу
|-
| TT || S || - || Сохранить в куче
|-
| TT || T || - || Извлечь из кучи
|-
| TS || SS || - || Сложение
|-
| TS || ST || - || Вычитание
|-
| TS || SL || - || Умножение
|-
| TS || TS || - || Целочисленное деление
|-
| TS || TT || - || Остаток от деления
|-
| TL || SS || - || Вывести символ из верхнего элемента стека
|-
| TL || ST || - || Вывести число из верхнего элемента стека
|-
| TL || TS || - || Считать символ и поместить его в место, указанное верхним элементом стека
|-
| TL || TT || - || Считать число и поместить его в место, указанное верхним элементом стека
|-
|}
== Пример кода ==
Следующий код выводит в консоль сообщение "Hello, world of spaces!"
SSSSLSSSTSSTSSSLTTSSSSTLSSSTTSSTSTLTTSSSSTSLSSSTTSTTSSLTTSSSSTTLSSSTTSTTSSLTTSSSSTSSLSSSTTSTTTTLTTSSSSTSTLSSSTSTTSSLTTSSSSTTSLSSSTSSSSSLTTSSSSTTTLSSSTTTSTTTLTTSSSSTSSSLSSSTTSTTTTLTTSSSSTSSTLSSSTTTSSTSLTTSSSSTSTSLSSSTTSTTSSLTTSSSSTSTTLSSSTTSSTSSLTTSSSSTTSSLSSSTSSSSSLTTSSSSTTSTLSSSTTSTTTTLTTSSSSTTTSLSSSTTSSTTSLTTSSSSTTTTLSSSTSSSSSLTTSSSSTSSSSLSSSTTTSSTTLTTSSSSTSSSTLSSSTTTSSSSLTTSSSSTSSTSLSSSTTSSSSTLTTSSSSTSSTTLSSSTTSSSTTLTTSSSSTSTSSLSSSTTSSTSTLTTSSSSTSTSTLSSSTTTSSTTLTTSSSSTSTTSLSSSTSSSSTLTTSSSSTSTTTLSSSSLTTSSSSSLLSTSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTLLSTSTTSTTTSSTTSSTSTSTTTSTTTSTTSTTSSSTTSTSSTSTTSTTTSSTTSSTSTLLLLLSSSTTSSSSTSTTSSTSSSTTSSTSSLTSSSLTLLSSSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTLSLSTTTSLSLTSSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLTLSSSSSTLTSSSLSLSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTLLSSSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLSLLSLLLTLLSSSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSLSLSSLSTLTSTTTSLSSSSTSTSLTSSTLTSSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLSLLSSSTLTSSSLSLSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSLLSSSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLSLLSSSTLTSSSSSSSLTTSLTLLSSSTTSTTTSSTTSSTSTSTTTSTTTSTTSTTSSSTTSTSSTSTTSTTTSSTTSSTSTLSSSTSTSLSSSTTSTLTLSSTLSSLT

Текущая версия на 20:16, 19 декабря 2024


Краткое описание языка Язык программирования, в котором для управляющих конструкций используются только непечатаемые символы, а именно: пробел, перевод строки и табуляция.
Компетенции в каких сферах формирует
Парадигмы программирования
Возрастная категория
Назначение языка (Общее / Учебное) Язык общего назначения
Visual_Text_Blocks Текст
Измерение (2D/3D/Tangible)
Область знаний Информатика
Открытость продукта Открытый
Address https://web.archive.org/web/20080331083700/http://compsoc.dur.ac.uk/whitespace/
Предки (Ancestors)
Потомки (Descendants)
Активность в данный момент
Доступны ремиксы? Нет
Год создания 2002
Создатели Эдвин Брэди (Edwin Brady), Крис Моррис (Chris Morris)
Поясняющее видео
Используется для создания мобильных приложений? Нет


Whitespace упоминается в свойствах следующих страниц


Whitespace с подсветкой синтаксиса Vim (синий - табуляция, красный - пробел)

Появление

Данный изотерический язык был разработан в 2002 года двумя студентами Даремского университета. Сама идея языка, в котором пробелы используются как операторы была предложена Бьерном Страуструпом (разработчик языка программирования C++) в 1997 году. Кратковременную популярность язык обрел после 1 апреля 2003 года, после того как о нем написали статью на Slashdot (/.) - сайте с новостями из мира науки, технологий и политики.

Синтаксис

Для упрощения читаемости далее используются обозначения: S - пробел, T - табуляция, L - перенос строки

Каждая команда в Whitespace состоит из трех частей:

  1. IMP (Instruction Modification Parameter) - параметр, указывающий к какой из 5 групп относится команда (позволяет увеличить общее количество допустимых команд)
  2. Оператор
  3. Аргументы (при наличии)
Представление двоичных чисел

Зачастую в качестве аргументов используются двоичные числа. Для их представления используется следующая система:

  • S/T - +/- (первый символ числа)
  • S/T - 0/1
  • L - конец числа (последний символ числа)
Представление символов

Для представления символов используется таблица кодировки ASCII

IMP

Всего существует 5 видов IMP, каждому из которых соответствует группа из уникальных команд:

  • S - манипуляции со стеком (
  • L - контроль потока
  • TT - доступ к куче
  • TS - арифметические действия
  • TL - ввод/вывод
Список возможных команд
IMP Оператор Параметр Значение
S S Число Добавить число в стек
S LS - Дублировать верхний элемент стека
S TS Число Копировать n-ый элемент стека (указанный аргументом) на вершину стека
S LT - Поменять местами два верхних элемента стека
S LL - Удалить верхний элемент из стека
S TL Число Сместить n элементов из стека, сохраняя верхний элемент
L S Метка Отметить местоположение в программе
L ST Метка Вызвать подпрограмму
L SL Метка Перейти к метке
L TS Метка Перейти к метке если верхний элемент стека равен 0
L TT Метка Перейти к метке, если верхний элемент стека отрицательный
L T - Завершить подпрограмму и передать управление вызывающему
L L - Завершить программу
TT S - Сохранить в куче
TT T - Извлечь из кучи
TS SS - Сложение
TS ST - Вычитание
TS SL - Умножение
TS TS - Целочисленное деление
TS TT - Остаток от деления
TL SS - Вывести символ из верхнего элемента стека
TL ST - Вывести число из верхнего элемента стека
TL TS - Считать символ и поместить его в место, указанное верхним элементом стека
TL TT - Считать число и поместить его в место, указанное верхним элементом стека

Пример кода

Следующий код выводит в консоль сообщение "Hello, world of spaces!"

SSSSLSSSTSSTSSSLTTSSSSTLSSSTTSSTSTLTTSSSSTSLSSSTTSTTSSLTTSSSSTTLSSSTTSTTSSLTTSSSSTSSLSSSTTSTTTTLTTSSSSTSTLSSSTSTTSSLTTSSSSTTSLSSSTSSSSSLTTSSSSTTTLSSSTTTSTTTLTTSSSSTSSSLSSSTTSTTTTLTTSSSSTSSTLSSSTTTSSTSLTTSSSSTSTSLSSSTTSTTSSLTTSSSSTSTTLSSSTTSSTSSLTTSSSSTTSSLSSSTSSSSSLTTSSSSTTSTLSSSTTSTTTTLTTSSSSTTTSLSSSTTSSTTSLTTSSSSTTTTLSSSTSSSSSLTTSSSSTSSSSLSSSTTTSSTTLTTSSSSTSSSTLSSSTTTSSSSLTTSSSSTSSTSLSSSTTSSSSTLTTSSSSTSSTTLSSSTTSSSTTLTTSSSSTSTSSLSSSTTSSTSTLTTSSSSTSTSTLSSSTTTSSTTLTTSSSSTSTTSLSSSTSSSSTLTTSSSSTSTTTLSSSSLTTSSSSSLLSTSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTLLSTSTTSTTTSSTTSSTSTSTTTSTTTSTTSTTSSSTTSTSSTSTTSTTTSSTTSSTSTLLLLLSSSTTSSSSTSTTSSTSSSTTSSTSSLTSSSLTLLSSSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTLSLSTTTSLSLTSSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLTLSSSSSTLTSSSLSLSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTLLSSSTTTSTTTSTTTSSTSSTTSTSSTSTTTSTSSSTTSSTSTSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLSLLSLLLTLLSSSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSLSLSSLSTLTSTTTSLSSSSTSTSLTSSTLTSSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLSLLSSSTLTSSSLSLSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSLLSSSTTTSSTSSTTSSTSTSTTSSSSTSTTSSTSSSTSTTTTTSTTSSTSTSTTSTTTSSTTSSTSSLSLLSSSTLTSSSSSSSLTTSLTLLSSSTTSTTTSSTTSSTSTSTTTSTTTSTTSTTSSSTTSTSSTSTTSTTTSSTTSSTSTLSSSTSTSLSSSTTSTLTLSSTLSSLT