Сначало было слово
By mOleg. Tuesday, 3. April 2007, 15:28:48
Большинство литературы, посвященной изучению различных языков программирования, рассчитаны на читателя, изучающего программирование с нуля. Поэтому повествование обычно начинается с того, как будет правильно сложить (2+3) или 2 3 + , а может (+ 2 3) и дальше по нарастающей. В итоге, становится непонятно, ради чего создавался тот или иной язык и в чем его основное отличие от остальных.
Основным понятием языка форт1 является слово2. Каждое слово языка может быть исполнено, но не обязательно должно исполняться. Программа в форт-среде – это набор слов. Обычно для выполнения программы достаточно выполнения последнего определенного понятия ( слова). Форт-среда не разбирается в том, является ли очередное слово оператором языка или данными. Слова просто ищутся в списке, называемом словарем3 и при условии нахождения выполняются. Словарей может быть много, и словари тоже являются словами. Каждое новое слово добавляется в словарь с помощью уже существующих слов или их комбинации. Тот словарь, в который добавляется слово, называется текущим4, а тот, из которого исполняется - контекстным5. Современная6 форт-среда умеет работать с одним текущим и несколькими контекстными словарями, причем текущий словарь не обязан находиться в контексте, и список словарей, находящихся в контексте тоже не фиксирован. В отличие, например от Лиспа, базовый словарь форт-среды не является «суперсловарем», то есть не всегда находится в контексте, поэтому возможны неприятные ситуации, когда программист сам ограничивает знания системы словарем, в котором нет слов, позволяющих системе прийти в нормальное рабочее состояние. Этот же момент позволят создавать совершенно не связанные с базовой средой лексиконы – то есть полностью менять правила среды.
Любое слово можно условно разделить на две части: имя слова7 и содержимое слова. Содержимое слова тоже можно условно разделить на две части: исполнимую часть - код и неисполнимую часть – данные. В зависимости от типа слова содержимое слова может отсутствовать вообще, содержать только код или только данные.
Форт-среда состоит из:
- виртуальной форт-машины8, адаптирующей вычислительную модель используемой аппаратной платформы к принятой в форте;
- механизма обмена данными между словами;
- набора слов, достаточного, как минимум, для дальнейшего развития среды;
- и интерпретатора поступающих данных.
В форт-среде принята 0-операндная вычислительная модель. Это значит, что данные находятся всегда в одном месте, называемом стеком данных, и все параметры от одного слова к другому передаются через этот самый стек данных9. Количество передаваемых данных от одного слова другому во время исполнения не ограничивается и не контролируется системой. Слова всегда берут данные с вершины стека данных и туда же возвращают результат своей работы.
Интерпретатор - это бесконечный цикл, в котором производится последовательно: чтение очередной лексемы10 из входного потока, поиск ее в контексте, и выполнение.
Компилятор состоит из большого количества слов, находящихся в базовом словаре11 системы. Набор слов компилятора не ограничен, не фиксирован, может быть заменен или переопределен, расширен или урезан. Это значит, что компилятор форт-среды находится внутри среды, доступен для изменения и расширения.
Форт-среда может находиться в одном из двух12 состояний: состояния компиляции или интерпретации. Состояние системы определяется содержимым стандартной переменной STATE. Если в ней находится 0 – режим интерпретации, иначе – компиляции. Отличие режимов работы заключается в поведении интерпретатора, который в режиме компиляции не исполняет слова, а добавляет в собираемое определение вызовы указываемых слов.
- Собственно форт нельзя назвать языком программирования, так как он скорее является средой программирования
- В английской транскрипции word, но чаще definition, по-русски так же часто говорят определение
- В английской транскрипции vocabulary
- В английской транскрипции current vocabulary
- В английской транскрипции context vocabulary
- На данный момент соответствующая стандарту ANSI-94
- Ключ или идентификатор, то есть набор данных, благодаря которым может быть найдено содержимое, ассоциируемое с данным ключом
- Сокращенно FVM
- Для удобства работы в форт-среде разделены стек данных от стека возвратов
- Обычно лексемы отделены друг от друга пробелом, в отдельных случаях может быть любой другой символ
- Базовый словарь системы называется FORTH
- Обычно двух, но может быть и больше







flash-ripper # 22. December 2007, 17:33
А в ваш блог зашел, поскольку стало интересно — что же за язык такой, Форт. Ведь совсем недавно у флэш-сообщества появились очень серьезные перспективы дружбы с фортом на низком уровне: Adobe написала на Forth часть новой виртуальной машины Tamarin-tracing (open source), предназанченной для выполнения флэш-приложений на микроустройствах.
Спасибо!
exs # 1. January 2008, 14:03