Хочу всё знать: язык Форт
Краткая справка
Начнём с главного — Форт не имеет никакого отношения к Фортрану. В оригинале язык пишется, как «Forth», что является упрощением от «Fourth» (четвёртый), что, в свою очередь, является отсылкой к планам Мура по его применению на ЭВМ 4-го поколения.
Изначально стояла задача найти замену трудночитаемым и массивным языкам того времени, в частности, Ассемблеру. Так на свет появился Форт — чрезвычайно простой язык программирования, в базовой версии содержащий лишь около 40 слов.
Главная особенность заключена в определении, Форт — конкатенативный язык, использующий склейки слов и фрагментов кода для получения композиции, а стека для хранения и возвращения аргументов, что упрощает запись и повышает быстродействие. Дабы не углубляться в дебри синтаксиса, можете перейти на официальный сайт (или в его русскую часть) и разобраться во всём самостоятельно.
Внешний вид рабочего кода в простейшем случае поражает своей простотой:
Но стоит немного углубиться, как Форт становится на таким однозначным:
\ Создать «константу» из строки
: S-CONSTANT ( c-addr u » name» — )
CREATE
DUP , 0 ?DO
DUP C@ C, CHAR+
LOOP DROP 0 C,
DOES>
DUP CELL+ SWAP @
;
Тогда, в 70-х годах, Американскому астрономическому обществу, где совершенно случайно Мур и работал, язык пришёлся по душе. Достаточно быстро коды, написанные для контроллеров, добрались до космических шаттлов и искусственных спутников, а позднее и до остальной промышленности.
Среди известных «клиентов» Форт — подводный челнок, проводивший исследование Титаника, система управления аэропорта Эр-Рияда, анализатор крови и система компьютерного зрения.
Форт сегодня
Не совсем правильно думать, что язык Форт остался жить в XX веке. Несмотря на то, что успешным Форт-программистом вы уже станете вряд ли, отголоски сегодняшнего героя вы можете найти, например, в языке PostScript, используемом для печати, и в привычном нам формате файлов PDF.
Кроме того, важно понимать, что Форт — это не просто очередной язык программирования со своими плюсами и минусами, который затем необходимо транслировать в машинный код. По сути, Форт — это и есть машинный язык, но с отличной от привычной реализацией. Проще всего это показать на примере процессора, недавно выпущенного самим Муром и его компанией GreenArrays для демонстрации возможностей диалекта colorForth — GA144. Процессор включает в себя 144 независимых ядра, каждое из которых может выполнять свою строго описанную операцию.
В этом существенное отличие от привычного подхода, когда код, написанный на Си, генерирует миллион инструкций, которые одновременно исполняются всеми ядрами. При этом GA144 еще и энергоэффективен, так как активируются ядра только при поступлении инструкций. Итоговое потребление — 100 нВт в «спящем» режиме, а при исполнении инструкции ядрами затрачивается всего 7 пДж.
Всё это теоретически открывает радужные перспективы для применения языка Форт в создании портативных устройствах и нейросетей. По факту подобные процессоры создаются и выпускаются уже несколько десятилетий, в том числе настоящими гиками, но, к сожалению, без существенного развития языка, экосистемы и поддержки IT-гигантов, доказать их пользу в решении актуальных задач пока крайне сложно.
Но сторонники Форт не унывают и не опускают руки, а устраивают ежегодные международные конференции, которые носят название EuroForth. И это не просто собрание людей по интересам, язык стараются развивать, оптимизировать,наглядно демонстрировать мировому IT-сообществу необходимость поддержания еще одной ветви компьютерного развития.
Так что Форт не остался в 90-х, у него всё ещё может быть яркое будущее.
Язык Форт, созданный Чарльзом Муром в 1971 году, никогда не был особо популярен в СССР, поэтому в образовательных учреждениях о нём практически ничего не говорят. Между тем, вплоть до 90-х годов 20 века это был один из популярнейших языков программирования, он активно использовался как в бытовых компьютерах, так и в военных целях. Сегодня, конечно, Форт не слишком актуален. Однако его формат, подход, реализованный здесь, всё ещё могут здорово размять ваш мозг, не отняв много времени на изучение.
Краткая справка
Начнём с главного — Форт не имеет никакого отношения к Фортрану. В оригинале язык пишется, как «Forth», что является упрощением от «Fourth» (четвёртый), что, в свою очередь, является отсылкой к планам Мура по его применению на ЭВМ 4-го поколения.
Изначально стояла задача найти замену трудночитаемым и массивным языкам того времени, в частности, Ассемблеру. Так на свет появился Форт — чрезвычайно простой язык программирования, в базовой версии содержащий лишь около 40 слов.
Главная особенность заключена в определении, Форт — конкатенативный язык, использующий склейки слов и фрагментов кода для получения композиции, а стека для хранения и возвращения аргументов, что упрощает запись и повышает быстродействие. Дабы не углубляться в дебри синтаксиса, можете перейти на официальный сайт (или в его русскую часть) и разобраться во всём самостоятельно.
Внешний вид рабочего кода в простейшем случае поражает своей простотой:
Но стоит немного углубиться, как Форт становится на таким однозначным:
\ Создать «константу» из строки
: S-CONSTANT ( c-addr u » name» — )
CREATE
DUP , 0 ?DO
DUP C@ C, CHAR+
LOOP DROP 0 C,
DOES>
DUP CELL+ SWAP @
;
Тогда, в 70-х годах, Американскому астрономическому обществу, где совершенно случайно Мур и работал, язык пришёлся по душе. Достаточно быстро коды, написанные для контроллеров, добрались до космических шаттлов и искусственных спутников, а позднее и до остальной промышленности.
Среди известных «клиентов» Форт — подводный челнок, проводивший исследование Титаника, система управления аэропорта Эр-Рияда, анализатор крови и система компьютерного зрения.
Форт сегодня
Не совсем правильно думать, что язык Форт остался жить в XX веке. Несмотря на то, что успешным Форт-программистом вы уже станете вряд ли, отголоски сегодняшнего героя вы можете найти, например, в языке PostScript, используемом для печати, и в привычном нам формате файлов PDF.
Кроме того, важно понимать, что Форт — это не просто очередной язык программирования со своими плюсами и минусами, который затем необходимо транслировать в машинный код. По сути, Форт — это и есть машинный язык, но с отличной от привычной реализацией. Проще всего это показать на примере процессора, недавно выпущенного самим Муром и его компанией GreenArrays для демонстрации возможностей диалекта colorForth — GA144. Процессор включает в себя 144 независимых ядра, каждое из которых может выполнять свою строго описанную операцию.
В этом существенное отличие от привычного подхода, когда код, написанный на Си, генерирует миллион инструкций, которые одновременно исполняются всеми ядрами. При этом GA144 еще и энергоэффективен, так как активируются ядра только при поступлении инструкций. Итоговое потребление — 100 нВт в «спящем» режиме, а при исполнении инструкции ядрами затрачивается всего 7 пДж.
Всё это теоретически открывает радужные перспективы для применения языка Форт в создании портативных устройствах и нейросетей. По факту подобные процессоры создаются и выпускаются уже несколько десятилетий, в том числе настоящими гиками, но, к сожалению, без существенного развития языка, экосистемы и поддержки IT-гигантов, доказать их пользу в решении актуальных задач пока крайне сложно.
Но сторонники Форт не унывают и не опускают руки, а устраивают ежегодные международные конференции, которые носят название EuroForth. И это не просто собрание людей по интересам, язык стараются развивать, оптимизировать,наглядно демонстрировать мировому IT-сообществу необходимость поддержания еще одной ветви компьютерного развития.
Так что Форт не остался в 90-х, у него всё ещё может быть яркое будущее.
Источник
Язык программирования Форт
Первая реакция у многих людей, с которыми мне приходилось говорить о Форте: «Это, наверное, разновидность Фортрана?». К сожалению, уровень осведомленности околокомпьютерного сообщества насчет этого совершенно непохожего на остальные языка программирования достаточно низок. В этой статье мы попробуем разобраться с тем, что представляет собой Форт, и почему этот язык программирования не используется повсеместно.
Окунемся в историю Форта (Forth). В начале 1970х годов Чарльз Мур занялся разработкой программного обеспечения для микроЭВМ, управляющей работой радиотелескопа. Поскольку программирование на Ассемблере привело к неуправляемости разработки довольно сложной программы, а для использующейся микроЭВМ из-за аппаратных ограничений не было языка высокого уровня, Чарльз Мур приступил к созданию компактного и мощного языка программирования, позволившего с блеском решить поставленные перед ним задачи. Успех нового языка программирования определился тем, что на ограниченных ресурсах устройства была создана быстрая и функциональная программа, позволившая делать намного больше, чем первоначально планировалось в техническом задании.
Форт (от англ. forth — вперед, получившееся из-за необходимости сократить слово fourth — четвертый, до пяти букв из-за ограничений операционной системы на длину имени файла) в 1976 году стал стандартным языком для программирования для американского астрономического общества. Благодаря высокой степени переносимости и компактности, а также быстродействию, Форт до 1990х активно применялся во множестве приборов с микроконтроллерным управлением (спектрограф на Шаттле, микромодули управления искусственными спутниками Земли, для системы управления в аэропорту Эр-Рияда, системах компьютерного зрения, автоматизации анализа крови и кардиологического контроля, карманных переводчиках). Форт выступает прародителем такого широко известного языка управления печатью как PostScript.
По своей структуре Форт представляет собой набор примитивов — слов, которые участвуют в определении других слов. Важная особенность Форта — использование стека для передачи параметров между словами, такая конструкция позволяет очень гибко и просто реализовывать сложные концепции. Наборы слов, относящиеся к определенной области, могут выделяться в словари. Иерархическая структура словарей позволяет естественно организовывать наследование слов от словаря-родителя. Базовый словарь форта составляет менее четырех десятков слов, и уже он позволяет получать полноценные программы расширением исходного словаря.
Форт сам для себя является метасистемой — в нем объединены функции компилятора и интерпретатора, Форт может использоваться без поддержки со стороны операционной системы и использоваться для того, чтобы компилировать самого себя, в том числе и на другие платформы.
В отличие от большинства языков программирования, которые имеют жесткую структуру, не позволяющую изменять синтаксис и многие базовые элементы языка, ничто не мешает на Форте написать модификацию системы, понимающую синтаксис той предметной области, для которой пишется программа. Ярким примером является написание Форт-ассемблера для конкретного процессора, выполняемое за один рабочий день квалифицированным фортером. Мало того, такой ассемблер поддерживает структурное программирование и прозрачную вставку в ассемблерный код слов из словаря самого Форта. Таким же образом реализуется поддержка объектно-ориентированного программирования.
До сих пор популярна тема создания Форт-процессоров, система команд которых является машинным представлением наиболее часто используемых слов-примитивов. Благодаря минимализму базовой Форт-системы это легко реализуемо, тем более что программируемые матрицы логических элементов сейчас достигли таких размеров, что Форт-процессор интегрируется на оставшиеся после программирования основной логики 10% вентилей как бонус. Это что-то из разряда такого: «А в углу нашей маленькой и уютной детской комнатки незаметно расположился аквариум с бегемотом».
Легкость написания Форт-систем привела к огромному разнообразию существующих реализаций — не писал свой Форт только ленивый фортер. Большое количество систем, достаточно плохо совместимых, поскольку имеется три стандарта Форта: Форт-79, Форт-83 и ANSI-Форт-94. Стандарты, хотя и описывают необходимый минимум слов для реализации, но дают огромный простор для самостоятельных изменений, что повсеместно и происходит. Существуют реализации Форта написанные на Ассемблере, Си, Питоне, Паскале, Яве, а также созданные с помощью целевых компиляторов других Форт-систем.
Как не хотелось бы радостно заявлять, что Форт живет полноценной жизнью языка программирования, однако это не совсем так. Форт прочно занял нишу как язык программирования микроконтроллеров, для которых надо организовать довольно сложную схему функционирования при минимуме ресурсов. Однако, примеры написания в современных условиях больших программ немногочисленны, поскольку скорость разработки на системах RAD превышает возможности Форт-систем.
Таким образом, по частоте использования, высокоуровневый язык программирования Форт находится даже ниже уровня Ассемблера. При решении проблем, требующих написания ассемблерного кода Форт имеет много преимуществ: компактность кода, структурный ассемблер, позволяющий легко внедрять в тело ассемблерных слов высокоуровневые определения. Для тех, кто хочет изучать и использовать Ассемблер, я бы порекомендовал начать это с изучения Форта, как я в свое время и сделал. Результатом такого метода обучения будет намного более быстрое и качественное освоение Ассемблера, тем более, что после изучения основ вам обязательно захочется сделать свою Форт-систему (как ни говори, практика — кузница умения).
Для меня Форт дал много — после освоения языка я стал замечать, что код в Дельфи стал более коротким и понятным, появилась привычка документировать основные методы и поля объектов (поскольку в Форте очень желательно описывать стековые диаграммы для каждого слова).
Благодаря изучению книги «Проектирование и программная реализация экспертных систем на персональных ЭВМ» Таусенда и Фохта, я почерпнул много информации о внутренней логике работы таких языков как Лисп и Пролог. Книга Келли и Спайса «Язык программирования ФОРТ» привела меня к четкому пониманию того, как можно написать свой язык программирования и что такое Форт-ассемблер. Для совершенствования стиля программирования оказалась совершенно неоценимой по влиянию на меня книга Лео Броуди «Способ мышления — Форт».
Форт может дать программисту много полезного, даже если он будет в дальнейшем программировать на другом языке. Форт дает то понятие дисциплины программирования, которое необходимо для создания рабочей и легко сопровождаемой программы. Плохому программисту Форт не прощает ошибок, а хорошего стимулирует к тому, чтобы стать великим.
Источник