Jump to content

WSFN (язык программирования)

WSFN ( что ничего не значит ) [1] интерпретируемый язык программирования для управления роботами, созданный Ли-Чэнь Вангом . Он был спроектирован так, чтобы быть как можно меньшим, «крошечным» языком, [2] похож на более раннюю работу Ванга, Palo Alto Tiny BASIC . [3] [4] WSFN был впервые опубликован в журнале доктора Добба в сентябре 1977 года.

Язык состоит в основном из однобуквенных команд, которые сообщают роботу двигаться в определенных направлениях, в то время как другие команды выполняют тесты или основные математические операции. Их можно сгруппировать в именованные макросы для создания более сложных программ. Первоначальная версия также включала код, который имитировал робота в виде курсора на дисплее VDM-1 или графически на дисплее Cromemco Dazzler . Это похоже на графику черепахи , добавленную в язык программирования Logo в 1969 году.

Расширенный WSFN — это реализация, созданная для 8-битных компьютеров Atari, написанная Гарри Стюартом и опубликованная Atari Program Exchange. [5] в 1981 году. Помимо поддержки черепашьей графики, он добавляет ряд команд для управления графическими и звуковыми возможностями этой платформы. Он предлагался как «язык для начинающих с упором на графику ». [ нужна ссылка ]

Синтаксис

[ редактировать ]

WSFN состоит из ряда однобуквенных команд для управления движением черепахи или робота. Любую из этих команд можно повторить, добавив к ней число. [2] Например, F перемещает черепаху вперед на один шаг, при этом 25F проходит 25 шагов. R и L заставить черепаху повернуть на одну единицу вправо или влево соответственно, а также ее можно сбросить на точку Nорт. Размеры шагов и единицы поворота определяются аппаратным обеспечением робота, но в версиях с графикой черепахи установлены на один пиксель и 45 градусов. Отсутствует в версиях для роботов, в компьютерных версиях. H возвращает черепаху Домой в центр экрана и C Очищает любой предыдущий рисунок. Таким образом, с помощью веревки можно нарисовать квадрат: [6]

BCWHN25F2R25F2R25F2R25F

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

Списки команд можно заключать в круглые скобки для создания макросов. Например, тот же квадрат можно нарисовать, поместив код рисования одной стороны квадрата в круглые скобки, а затем вызвав его четыре раза: [6]

BCWHN4(25F2R)

Макросы можно вызывать внутри других макросов. Например, этот код рисует серию из восьми квадратов, каждый из которых смещен на 45 градусов, вращаясь вокруг центра экрана: [6]

BCWHN8(4(25F2R)R)

Макросам можно присвоить имя с помощью DКоманда efine (используется расширенный WSFN) = вместо). Этот код определяет макрос с именем «X» для очистки экрана и сброса рисунка, а также макрос «Z», который рисует квадрат. Затем он использует их для рисования того же вращающегося квадрата, что и в примере выше: [7]

DX(BCWHN)
DZ4(25F2R)
X8(ZR)

WSFN имеет элементарные математические возможности, состоящие из одного аккумулятора. A которые можно увеличивать и уменьшать с помощью + и -. Письмо A можно разместить в любом месте, где может появиться число. Можно увеличить серию квадратов, увеличивая аккумулятор 5 раз между каждым шагом: [2]

DX(BCWHN)
25A
DZ4(AF2R)
X8(Z5+AR)

Побочным эффектом синтаксиса является то, что A- установит аккумулятор в ноль, поскольку он выполняет инструкцию уменьшения на число в A. Аналогично, A+ удваивает значение в аккумуляторе. [2]

Программное управление также элементарно и состоит из ряда команд, обрабатывающих структуры IF/THEN/ELSE . Самая основная форма – это Test, которая следует по одному из двух путей, если аккумулятор больше или равен нулю. Например, эта команда заставляет черепаху поворачиваться на 90 градусов влево, если аккумулятор не равен нулю, или на 45 градусов вправо, если он равен нулю: [2]

T(2L)R

Вариации на тему T ветвящаяся конструкция включает в себя ?, который случайным образом переходит к первой или второй ветке в 50% случаев, и Sдатчик, который проверяет, сработал ли контактный датчик на роботе. [8] Расширенный WSFN изменил S чтобы вернуть цвет перед черепахой, позволяя обнаруживать попадания на предыдущем рисунке, и добавил Edge тест, который переходит к макросу с правой стороны, если черепаха ударяется о край области рисования. [9] В оригинальном WSFN отсутствует эквивалент E, и вместо этого оборачивает область рисования, чтобы черепаха снова появилась на противоположной стороне экрана. [2] Расширенный WSFN поддерживает этот стиль переноса игрового поля в качестве опции. [10]

Поскольку код WSFN использует однобуквенные команды и рекурсивный синтаксис, он чрезвычайно загадочен. Например, это программа WSFN для рисования кривых Серпинского : [11]

DIT(-I2FI5RG5RI2FI+)2R
DG4F
DY (HN63F2R61FRC4 (2FI))

Обратите внимание, что определение макроса «I» включает в себя вызовы I внутри него. Это ключевой аспект концепции WSFN; язык является высокорекурсивным по своей природе, что позволяет легко реализовать программирование самоподобных шаблонов, таких как фракталы, с помощью нескольких строк кода. [11]

Ключевая концепция Extended WSFN заключается в том, что клавиатура всегда активна, даже во время выполнения макросов. Это позволяет вводу с клавиатуры прерывать работающие программы. Используя этот прием, можно составить макросы для перемещения черепахи определенными способами, назначить их буквам на клавиатуре, а затем выполнять эти движения, последовательно нажимая разные клавиши. Этому можно помочь, добавив WКоманда ait местами дает пользователю время отреагировать на процесс рисования. [12]

Ключевые слова

[ редактировать ]

Из оригинальной статьи доктора Доббса . [13]

Ключевые слова WSFN
Ключевое слово Описание
А Цикл по значению аккумулятора (A- устанавливает его в ноль, A+ удваивает его)
Б Установите цвет рисунка на черный
С Очистить экран (заполнить текущим цветом)
Д Определить макрос
Ф Переместить черепаху вперед
ЧАС Верните черепаху в исходное положение
л Поверните черепаху влево
Н Направьте черепаху на север (вверх).
Р Поверните черепаху вправо
С Проверка контактного датчика на роботе (IF/THEN/ELSE)
Т Проверка ненулевого аккумулятора (IF/THEN/ELSE)
В Установите цвет рисунка на белый
= Определите имя макроса
? Случайный тест, как T, но следует за каждой ветвью в 50% случаев.
+ Аккумулятор приращения
- Декрементный аккумулятор

Из руководства по расширенному WSFN. [14]

Дополнительные/переопределенные расширенные ключевые слова WSFN
Ключевое слово Описание
Б Звуковой сигнал
Д Перо вниз
И Проверяет, находится ли черепаха на краю экрана.
П Установите цвет пера в соответствии со значением в аккумуляторе.
С Установите аккумулятор на цвет перед черепахой (Sense, как в оригинальной версии)
В Перо вверх
В Подожди один миг( 1/30 секунды )
= Определить макрос
=# Определить переменную
# Цикл по значению переменной
* Добавление * к командам направления *L или *R изменило угол до 22,5 градусов вместо 45.
$ Проверка джойстика против выбранного направления (IF/THEN/ELSE)
% Считайте значение лопастного контроллера в аккумулятор.
& Записать значение в аккумулятор в выбранный регистр цвета.
; Считайте направление черепахи от 0 до 7 в аккумулятор.
@ Установите аккумулятор на ноль (так же, как A- в WSFN)
  1. ^ Синяя книга для компьютера Atari . Видео ВИДЛ. 1983. ISBN  9780684179216 .
  2. ^ Перейти обратно: а б с д и ж Деньги 1977 , с. 334.
  3. ^ Ван, Ли-Чен (май 1976 г.). «Пало-Альто Крошечный БЕЙСИК». Журнал доктора Добба . 1 (5): 12–25.
  4. ^ Рауколб, Роберт (декабрь 1976 г.). «Крошечный БЕЙСИК Пало-Альто доктора Вана» (PDF) . Возраст интерфейса . стр. 92–108.
  5. ^ Листинг APX на сайте atariarchives.org.
  6. ^ Перейти обратно: а б с д Стюарт 1982 , с. 4.
  7. ^ Деньги 1977 , с. 345.
  8. ^ Деньги 1977 , с. 334 335.
  9. ^ Стюарт 1982 , с. 10.
  10. ^ Стюарт 1982 , с. 3.
  11. ^ Перейти обратно: а б Деньги 1977 , с. 336.
  12. ^ Стюарт 1982 , с. 5.
  13. ^ Ван 1977 .
  14. ^ Стюарт 1982 .

Библиография

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2b598acf2932eb8db0f5762ce605ac17__1715905320
URL1:https://arc.ask3.ru/arc/aa/2b/17/2b598acf2932eb8db0f5762ce605ac17.html
Заголовок, (Title) документа по адресу, URL1:
WSFN (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)