Язык программирования Форт


Что такое Форт ?


Из всего сказанного может показаться, что у нас есть только два выбора среди языков программирования: либо быстрые, но громоздкие компиляторы, либо медленные, но зато общительные интерпретаторы. К счастью, Форт является еще одной альтернативой. Программы, написанные на языке Форт, по быстродействию не уступают, а то и превосходят программы, написанные на компилирующих языках. Форт-программы очень легко изменяются и отлаживаются. Еще одним их достоинством является то, что они обычно занимают в памяти меньше места, чем программы на других, как компилирующих, так и интерпретирующих языках. Дополнительное преимущество языка заключается в том, что он дает возможность программисту определить некоторые слова на языке ассемблера, когда требуется максимальное быстродействие, т.е. в нем совмещаются преимущества языка высокого уровня и языка ассемблера. Чем объясняются все эти достоинства языка Форт ? Тем, что он является интерпретирующим языком с шитым кодом. Чтобы разобраться, что это значит, нужно рассмотреть, что происходит при определении Форт-слова. В поставляемом потребителям виде базовая Форт-система содержит множество слов, которые были определены не с помощью других слов, а непосредственно на машинном языке (они составляют часть, называемую ядром языка). Эти слова используются для описания других слов, и их называют примитивами. Примерами примитивов являются слова *, +, DUP, SWAP и т.д. Если вы компилируете слово SQUARE, вводя

: SQUARE DUP * ;

в компьютер не вводится никакого нового машинного кода, вы только предлагаете ему соединить вместе коды слова DUP и * под именем SQUARE. Точно также и CUBE:

: CUBE DUP SQUARE * :

не вводит нового машинного кода. Аналогично и слово POWER4, которое вы определили в одном из упражнений. Компиляция состоит как бы в протаскивании одной нити через различные определения с исполнением встречающихся по пути примитивов и машинных команд. Когда исполняется слово POWER4, "нить" проходит так, как показано на . Все необходимые действия, кроме ввода в память, были выполнены с помощью двух примитивов DUP и *, входящих в ядро и определенных на машинном коде.


- Начало -  - Назад -  - Вперед -