Фокал

Фокал
FOCAL
Семантика:

императивный

Тип исполнения:

интерпретатор

Появился в:

1968

Автор(ы):

Ричард Мерилл (Richard Merrill)

Типизация данных:

один тип — вещественный

Основные реализации:

музейный FOCAL-81 для POSIX-систем

Диалекты:

FOCAL-69 ("классический"), FOCAL 1971, FOCAL 11, FOCAL-81

Испытал влияние:

JOSS

FOCAL (аббр. FOrmula CALculator) — интерпретируемый язык программирования высокого уровня, переработка языка JOSS.

Фокал, в большой мере разработка Ричарда Мерилла (Richard Merrill), оказал самое сильное влияние на компьютеры DEC PDP-8. Меррил написал изначальный (в 1968 году) и классический (FOCAL-69) интерпретаторы Фокала для PDP-8. Сама DEC позиционировала Фокал как «язык типа JOSS».

Как и ранние версии Бейсика, интерпретатор Фокала сам обеспечивал все необходимое программное окружение и не нуждался в операционной системе.

Фокал крайне нетребователен к ресурсам. Так, он работал на самых простых вариантах PDP-8 (в том числе на системах без устройств хранения). Многопользовательские варианты интерпретатора поддерживали одновременную работу до четырех пользователей на телетайпных терминалах. Позднее Фокал имел реализации для PDP-7/9 и PDP-11.

Компания Coca-Cola использовала внутри фирмы доработанную версию Фокала, под названием COKE.

Из отечественных компьютеров Фокал существовал на Электронике БК-0010/0011 и ДВК встроенный в ПЗУ (в поздних моделях БК — доступный на картридже). Были также доступны расширения Фокала для этих машин, написанные различными энтузиастами. Расширения содержали разнообразные дополнительные команды и функции для работы с графикой, звуком, запуска двоичных программ, обработки строк и пр.

Существенно расширенная версия Фокал использовалась в качестве включающего языка в ДИАСП — Диалоговой Системе Проектирования — специализированной САПР, предназначенной для целей микроэлектроники.

В 1990-е годы энтузиастами была предпринята попытка переноса Фокала на IBM PC (Turbo Focal), но она не вышла из стадии бета-версии, которая распространялась по каналам BBS.

Работоспособность публично доступной в исходных текстах версии Focal-81 была успешно протестирована на следующих платформах и компиляторах:

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

В настоящее время Фокал не развивается и практически не используется, вышеупомянутые порты Focal-81 были проделаны энтузиастами в целях развлечения.

Содержание

Некоторые команды Фокала

команда описание аналог в Бейсике
COMMENT комментарий (текст следом за командой игнорируется) REM
TYPE вывод на консоль значений констант и выражений PRINT
QUIT штатное завершение выполнения программы END
SET присваивание значения переменной (или элементу массива) LET
ASK ввод значений с консоли INPUT
GOTO безусловный переход GOTO
DO вызов подпрограммы GOSUB
RETURN возврат из подпрограммы RETURN
IF ветвление по значению выражения частично соответствует IF

Команды Фокала могут быть записаны в сокращенной форме, только первой буквой. Существовали также версии Фокала на европейских языках (поставляемые DEC).

Примеры программ

Стандартный пример Hello World

1.05 C Программа выводит на экран тестовую строку
1.10 T "Hello World !" !
1.20 Q

Решение квадратного уравнения вида ax² + bx + c = 0

1.05 C **** Программа для решения квадратного уравнения вида ax^2 + bx + c = 0
1.10 T "Введите коэффициенты a, b, c для уравнения ax^2 + bx + c = 0" !
1.20 A "a = ", a ! "b = ", b ! "c = ", c
1.30 T ! "Решаем уравнение (", a, ")x2 + (", b, ")x + (", c, ") = 0" ! 
1.35 C **** Вычисляем дискриминант
1.40 S d = b^2 - 4*a*c
1.50 T ! "D = ", d !
1.55 C **** Выясняем количество корней
1.60 I (d) , 3, 4
1.65 С **** первая метка пропущена, поэтому при значении D
1.66 C **** меньшем нуля мы попадаем на следующую за IF строку

2.05 С **** Отрицательный дискриминант - корней нет
2.10 T "Уравнение не имеет действительных корней" !
2.20 Q

3.05 С **** Нулевой дискриминант - один корень
3.10 T "Уравнение имеет один корень" !
3.20 S s = 0
3.30 D 5
3.40 T "x = ", x !
3.90 Q

4.05 С **** Положительный дискриминант - два корня
4.10 Т "Уравнение имеет два корня" !
4.20 S s = FSQT(d)
4.30 D 5
4.40 T "x1 = ", x !
4.50 S s = -s
4.30 D 5
4.40 T "x2 = ", x !
4.90 Q

5.05 C **** Подпрограмма вычисления корня, где s - корень дискриминанта со знаком
5.10 S x = (s - b) / 2*a
5.90 R

Метки строк в Фокале имеют вид <номер_группы>.<номер_строки>. В командах GOTO, IF, DO может указываться как полная метка, так и номер группы без номера строки (вызывает переход на строку с наименьшим номером в данной группе).

Восклицательный знак «!» в командах ASK и TYPE (ввод/вывод с консоли) является (наравне с ", ") разделителем аргументов, и вызывает перевод строки перед вводом или выводом следующего элемента списка.

Команда IF вычисляет значение выражения и переходит по одной из трех меток, соответственно, при значении меньшем нуля, значении равном нулю и значении большем нуля. Если метка опущена, то управление передается на следующую за IF строку.

Литература и публикации

  • В. А. Абрамов, А. В. Стрижков, А. Р. Федоров; «Диалоговый язык ФОКАЛ». М."Высшая школа", 1991. Серия «Программное обеспечение МикроЭВМ», книга 4. ISBN 5-06-001785-0
  • Г. И. Фролов, Г. А. Куправа, Ю. Г. Чаиров и др.; Под редакцией Л. Н. Преснухина; «Программирование на языке ФОКАЛ». М.Изд-МИЭТа, 1984
  • А. Н. Писаревский, Л. Г. Осетинский, М. Г. Осетинский; «ФОКАЛ — диалоговый язык для миниЭВМ». Л."Машиностроение". Ленинградское отделение. 1985

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Фокал" в других словарях:

  • фокал — от англ. formula calculator англ.: FOCAL, Formula Calculator англ., програм. фокал ФОКАЛ от англ. formula calculator англ.: FOCAL, Formula Calculator англ., програм …   Словарь сокращений и аббревиатур

  • фокал — Язык программирования фирмы DEC. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN FOCAL …   Справочник технического переводчика

  • ФОКАЛ — FOCAL Семантика: императивный Тип исполнения: интерпретатор Появился в: 1968 г. Автор(ы): Ричард Мерилл (Richard Merrill) Типизация данных: один тип вещественный Основные реализации: музейный FOCAL 81 для POSIX систем Диалекты …   Википедия

  • БК — Тип Бытовой компьютер Выпущен …   Википедия

  • БК (семейство компьютеров) — У этого термина существуют и другие значения, см. БК (семейство компьютеров) (значения). БК (семейство компьютеров) Тип …   Википедия

  • Диалоговый вычислительный комплекс — Классический вариант ДВК 2 Поздний вариант ДВК 2М (МС0505) …   Википедия

  • УКНЦ — Электроника МС 0511 Тип Учебный компьютер Выпущен 1987 Выпускался по Процессор 2 × КМ1801ВМ2 Память …   Википедия

  • Электроника МС 0511 — Тип Учебный компьютер Выпущен 1987 Выпускался по …   Википедия

  • УК-НЦ — Электроника МС 0511 Тип Учебный компьютер Выпущен 1987 Выпускался по Процессор 2 × КМ1801ВМ2 Память …   Википедия

  • УК НЦ — Электроника МС 0511 Тип Учебный компьютер Выпущен 1987 Выпускался по Процессор 2 × КМ1801ВМ2 Память …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»