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

Первая реакция многих людей, с которыми я разговаривал о Форте, была: «Это, должно быть, разновидность ФортранаЭ» К сожалению, уровень осведомленности компьютерного сообщества об этом совершенно другом языке программирования довольно низок.

В этой статье мы попытаемся разобраться, что такое Форт и почему этот язык программирования не используется повсеместно.

Окунемся в историю Форта.

В начале 1970-х годов Чарльз Мур начал разработку программного обеспечения для микро-ВМ, управляющего работой радиотелескопа.

Поскольку программирование на языке ассемблера приводило к неуправляемости при разработке достаточно сложной программы, а для используемой микро-ВМ из-за аппаратных ограничений не было языка высокого уровня, Чарльз Мур приступил к созданию компактного и мощного языка программирования, позволяющего ему блестяще решать поставленные перед ним задачи.

Успех нового языка программирования определялся тем, что с использованием ограниченных ресурсов устройства была создана быстрая и функциональная программа, позволявшая сделать гораздо больше, чем изначально планировалось в технических характеристиках.

Fort (от английского Fort — вперед, возникший из-за необходимости сократить слово Fourth — Четвертый, до пяти букв из-за ограничений операционной системы на длину имени файла) в 1976 году стал стандартным языком программирования Американского астрономического общества.

Благодаря высокой портативности и компактности, а также быстродействию «Форт» до 1990-х годов активно использовался в различных устройствах с микроконтроллерным управлением (спектрограф на «Шаттле», микромодули для управления искусственными спутниками Земли, для системы управления на Аэропорт Эр-Рияда, системы компьютерного зрения, автоматизация анализа крови и кардиомониторинга, карманные переводчики).

Fort является прародителем такого известного языка управления печатью, как PostScript. По своей структуре Форт представляет собой набор примитивов — слов, которые участвуют в определении других слов.

Важной особенностью Форта является использование стека для передачи параметров между словами.

Такая конструкция позволяет очень гибко и просто реализовать сложные концепции.

Наборы слов, относящиеся к определенной области, можно разделить на словари.

Иерархическая структура словарей позволяет естественным образом организовать наследование слов из родительского словаря.

Базовый словарь форта составляет менее четырех десятков слов, и он уже позволяет получать полноценные программы за счет расширения исходного словаря.

Форт сам по себе является метасистемой — он сочетает в себе функции компилятора и интерпретатора.

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

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

.

Яркий пример — написание Форт-ассемблера для конкретного процессора, выполненное за один рабочий день квалифицированным фортером.

Более того, такой ассемблер поддерживает структурное программирование и прозрачную вставку слов из словаря Форта в ассемблерный код. Таким же образом реализована поддержка объектно-ориентированного программирования.

До сих пор популярна тема создания процессоров Forth, система инструкций которых представляет собой машинное представление наиболее часто используемых примитивных слов.

Благодаря минимализму базовой системы Форта это легко достижимо, тем более, что программируемые матрицы логических элементов сейчас достигли таких размеров, что процессор Форта в качестве бонуса интегрируется в 10% вентилей, оставшихся после программирования основной логики.

Это примерно так: «А в углу нашей маленькой и уютной детской комнаты стоит аквариум, в котором тихо расположился бегемот».

Простота написания Форт-систем привела к огромному разнообразию существующих реализаций — только ленивые Фортеры не написали свой Форт. Большое количество систем довольно плохо совместимы, поскольку существует три стандарта Форта: Форт-79, Форт-83 и ANSI-Форт-94. Стандарты, хотя и описывают необходимый минимум слов для реализации, предоставляют огромный простор для самостоятельных изменений, которые происходят повсеместно.

Существуют реализации Форта, написанные на ассемблере, C, Python, Pascal, Java, а также созданные с использованием целевых компиляторов других систем Форт. Как бы мне не хотелось радостно заявлять, что Форт живет полной жизнью языка программирования, однако это не совсем так.

Fort прочно занял нишу как язык программирования микроконтроллеров, для которого необходимо организовать достаточно сложную схему функционирования с минимумом ресурсов.

Однако примеров написания больших программ в современных условиях немного, поскольку скорость разработки на RAD-системах превышает возможности Forth-систем.

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

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

Тем, кто хочет изучить и использовать Ассемблер, я бы рекомендовал начать с изучения Форта, как я это сделал в свое время.

Результатом такого метода обучения станет гораздо более быстрое и лучшее освоение Ассемблера, тем более, что после изучения основ вам обязательно захочется сделать свою Форт-систему (что бы вы ни говорили, практика — кузница мастерства).

Для меня Форт дал очень многое — после освоения языка я стал замечать, что код в Delphi стал короче и понятнее, появилась привычка документировать основные методы и поля объектов (поскольку в Форте очень желательно описать стек-диаграммы для каждого слова).

Благодаря изучению книги Таунсенда и Фохта «Проектирование и программная реализация экспертных систем на персональных виртуальных машинах» я узнал много информации о внутренней логике таких языков, как Лисп и Пролог.

Книга Келли и Спайса «Язык программирования FORT» привела меня к четкому пониманию того, как можно написать собственный язык программирования и что такое ассемблер Форт. Для совершенствования моего стиля программирования книга Лео Броуди «Четвертый образ мышления» оказалась совершенно неоценимой по своему влиянию на меня.

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

Форт дает понятие дисциплины программирования, необходимой для создания работающей и легко поддерживаемой программы.

Форт не прощает ошибок плохому программисту, а поощряет хорошего стать великим.

Дмитрий Спицын



Полезные ссылки по теме

http://www.forth.org.ru/ — Российская группа по интересам FORTH — сайт содержит большой выбор книг и статей по Форту, множество ссылок на существующие системы Форт, интересующимся настоятельно рекомендуется посетить http://www.nncron.ru/index_ru.shtml — расширенный планировщик задач для Windows, пример коммерчески успешной программы на языке Fort http://winglion.ru/ - самодельный Форт-процессор, на сайте есть достаточно толковый форум по Форту http://www.msyst.ru/quark.htm — Система Fort с поддержкой OpenGL в виде .

dll http://ronware.org/ - кроссплатформенный Форт Windows 32бит (x86) - Linux 32бит (x86) - WinCE (ARM) http://forth.gsfc.nasa.gov/ - список систем НАСА, контролируемых Фортом Теги: #язык #fort #fort #fort #fort #forth #programming #sdisle.com #programming #forth

Вместе с данным постом часто просматривают: