Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЛОГ.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
603.14 Кб
Скачать

КраткаЯ характеристика Языка форт

Язык ФОРТ был разработан и реализован Чарльзом Муром - сотрудником Нацио­нальной астрономической лаборатории США в 1970 году. Существовавшие в то время ЯП не обеспечивали на взгляд Ч.Мура необходимые средства управления процессами, поэтому он создал новый ЯП и применил его для для управления телескопами. Ч.Мур относил свой ЯП к четвертому поколению ЯП и хотел назвать его FOURTH (четвертый), но модель ЭВМ, которую он использовал, допускала только 5-символьные идентифика­торы. Поэтому он остановился на сокращении FORTH, которое также носит достаточно символический характер - “вперед” (т.е. его ЯП как бы являлся шагом вперед).

ФОРТ стал активно распространяться с середины 1970 годов после появления микро-ЭВМ. К середине 1980-х годов он даже вышел на 3-е место среди ЯП для ПЭВМ после Бейсика и Паскаля. В первую очередь, это было связано с активной деятельностью по распространению языка так называемой ФИГ (Forth Interest Group), созданной в 1977 году и которой удалось создать упрощенный дешевый интерпретатор для ПЭВМ: FIG - Forth, завоевавший огромную популярность.

Основные области применения ФОРТа  реализация операционных и экспертных систем, трансляторов, систем машинной графики, сбора данных, управления станками и роботами.

Наиболее известный факт использования языка связан с подводным аппаратом "Арго", который при поиске затонувшего в начале века суперкорабля Титаник применял систему управления видеокамерами, реализованную на ФОРТе.

Стандарт ФОРТа появился в 1983 году.

Рассмотрим основные особенности ФОРТа:

1. Вообще говоря, появление Форта было встречено “программистской обществен­ностью” неоднозначно. Специалисты не могли прийти к общему мнению по таким воп­росам как:

  • можно ли, вообще, ФОРТ назвать языком программирования;

  • если ФОРТ является ЯП, то - низкого или высокого уровня;

  • что такое ФОРТ в общей тенденции развития ЯП: естественная веха или шаг в сторону.

В первую очередь, это было связано с тем, что ФОРТ правомерно рассматривать с различных позиций, в том числе как:

  • операционную систему, т.к. он имеет прямой доступ к аппаратному обеспечению (hardware);

  • АССЕМБЛЕР, т.к. команды ФОРТа могут быть определены на уровне мнемоники ассемблера;

  • язык высокого уровня, т.к. он имеет механизм построения и использования опреде­лений по модульному принципу;

  • инструмент (среду) для создания проблемно-ориентированных языков;

  • концепцию разработки ПО.

При этом все команды независимо от уровня доступа обрабатываются одним компи­ля­тором или интерпретатором. Таким образом, следует говорить не о языке ФОРТ, а о ФОРТ-системе или ФОРТ-машине, которая включает ОС, интерпретатор, компилятор, ассемблер, редактор текста и прочие “инструменты” программиста. В частности, ФОРТ можно назвать прообразом современных интегрированных систем.

Вся ФОРТ-система занимает от 16 до 32К оперативной памяти, в том числе ФОРТ-транслятор - 6.5К, ОС ФОРТ - 8К.

2. В качестве вычислительной модели ФОРТ использует стековую машину, организо­ван­ную по методу LIFO, и большинство операций могут сообщаться только через стек данных (магазин). Как следствие выбора такой модели в ФОРТе отсутствуют оператор GO TO и метки операторов.

3. Для записи программ используется постфиксная (обратная) польская запись. Например, операция сложения двух чисел будет выглядеть следующим образом: 3 4 + вместо привычной (инфиксной) записи: 4+3.

Такая форма записи идеально приспособлена для работы с магазином, а кроме того обладает еще двумя важными преимуществами: позволяет отказаться от использования скобок и не требует явного указания параметров при вызове подпрограмм.

3. Основным понятием ФОРТа является слово - эквивалент команды (операции, функции) традиционных ЯП, которое определяется как последовательность символов без пробелов. Например, BEGIN, LOOP, 301, ПОИСК.

Программа на ФОРТе представляет собой последовательность отдельных слов, вос­при­нимаемых аналогично печатному тексту. Например, “Мама мыла раму”. Каждое слово обрабатывается независимо, т.е. считается командой. Операнды выбираются из стека. Это фактически означает, что в ФОРТе отсутствует (почти) синтаксис.

Семантика слова в программе определяется на момент исполнения либо реализацией самой ФОРТ-системы, которая согласно стандарту содержит примерно 132 ключевых слова (стандартный словарь), либо непосредственно программистом, который вводит или меняет слова через свои собственные словари.

Примеры стандартных (т.е. встроенных в ФОРТ-систему) команд3:

Команда

Типовой ФОРТ-комментарий4

Пояснение

+

(n1 n2 -- сумма)

Сложение двух верхних элементов стека

-

(n1 n2 -- разность)

Вычитание из верхнего элемента стека следующего за ним

*

(n1 n2 -- произведение)

Перемножение двух верхних элементов стека

/

(n1 n2 --частное)

Деление верхнего элемента стека на следующий за ним

MOD

(n1 n2 -- остаток)

Определение остатка от деления верх­него элемента стека на следующий за ним

/MOD

(n1 n2 -- и частное, и остаток)

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

SWAP

(n1 n2 -- n2 n1)

Перестановка двух верхних элементов стека

DUP

(n -- n n)

Дублирование верхнего элемента стека

ROT

(n1 n2 n3 -- n2 n3 n1)

Ротация трех верхних элементов стека

DROP

(n -- )

Удаление верхнего элемента стека

В стандарт ФОРТа входят также аналогичные операции с парами элементов из стека.

Примеры команд организации цикла:

DO  LOOP (семантика этой команды поясняется позже в типовом примере);

BEGIN  UNTIL

Определением слова считается текст, который начинается с двоеточия и заканчивается точкой с запятой

:<идентификатор слова> ;

Любые слова можно объединять в новые определения и таким образом по частям последовательно формировать и отлаживать программу по методу “снизу-вверх”.

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

Допускаются определения слов в терминах Ассемблера.

С учетом вышесказанного неудивительно, что объектный код Форта даже более компактен, чем машинный, т.к. каждая его команда занимает всего 2 байта, а их описания хранятся в словаре.

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

LOAD

(n -- )

Загрузка блока с номером n в оперативную память.

Во время исполнения ФОРТ-программы возможно динамическое переключение режимов: интерпретация/компиляция.

5. ФОРТ предоставляет полный доступ к особенностям конкретной ЭВМ.

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

DECIMAL  десятичная,

HEX  шестнадцатиричная,

OCTAL  восьмеричная.

В ФОРТе имеются возможности проводить вычисления с двойной точностью, опреде­лять константы, переменные и массивы, организовывать форматный вывод. Естественно, что на основе аппарата определения слов можно вводить и свои собственные типы данных.

В качестве недостатков ФОРта можно отметить следующие:

  • ФОРТ-система не защищена от ошибок программиста;

  • отсутствует контроль типов;

  • отсутствуют средства работы с файлами;

  • имеются ограничения на представление и обработку чисел;

  • программы трудно понимаются из-за выбранной системы записи и неочевидных манипуляций со стеком;

  • в некоторых реализациях отсутствует независимый программный продукт.

Типовой пример:

: СУМНЕЧЕТ

0 SWAP 0

DO

SWAP DUP 2 MOD

IF +

ELSE DROP

THEN

LOOP

;