Программирование на языке Форт в среде AFS.
Часть 2. Создание новых слов. Дополнительная литература.


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

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

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

Зная, как работают слова, управляющие устройствами ввода-вывода, вы можете провести некоторые эксперименты для выбора оптимального решения для включения его в окончательный вариант программы.

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


Начнем с простого примера. Создадим традиционную программу для первого знакомства: выведем на экран терминала строку "Hello, world!". На Форте эта программа выглядит так:

:  HELLO  ."  Hello, world!"  ;

Если вы все ввели правильно, система ответит Ok:

Определение слова HELLO

Если появилось сообщение об ошибке, проверьте, все ли пробелы на месте – сравните ваш текст со снимком экрана терминала.

Вы только что определили (описали) слово HELLO на языке Форт. Это слово можно рассматривать как крошечную программу: ее действие состоит в том, чтобы вывести на терминал текстовую строку.

Теперь система знает это слово. Вы можете убедиться в этом, выполнив слово WORDS :

Слово HELLO появилось в словаре

В словаре Форта появился пользовательский раздел, состоящий из одного слова. (При нажатии клавиши Enter продолжится вывод системного словаря.)

Если вы введете HELLO, на экране появится приветствие:

Выполнение слова HELLO

Мы можем сохранить эту программу в памяти Форт-машины как программу пользователя, переключить Форт-машину в автономный режим и получать "Hello, world!” на терминале при каждом нажатии кнопки сброса.

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

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

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

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

Строка, которую мы ввели с терминала ( :  HELLO  ."  Hello, world!"  ; ) представляет собой определение нового слова для словаря Форта. Как система читает строку и что при этом происходит?

Первое слово : (двоеточие) указывает системе на начало определения нового слова (как заголовок статьи толкового словаря). Само слово следует за двоеточием, в данном случае это HELLO.

Слово, следующее за двоеточием, называется именем определения или именем статьи. В словаре может существовать только одна статья с указанным именем. Если вы попытаетесь определить то же слово еще раз, будет выдано сообщение об ошибке.

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

Слово ." ("точка-кавычка") - это слово, уже существующее в словаре. Его задача - выделить из потока ввода строку текста, завершенную символом "кавычка", сохранить строку в памяти и вывести на терминал, когда слово HELLO будет выполняться.

Слово ." выводит на экран текст, начинающийся сразу за отделяющим его пробелом и заканчивающийся кавычкой. Эта кавычка не является словом языка, а лишь используется словом ." для нахождения конца строки (она также не является частью строки). После кавычки как всегда необходим пробел для выделения слова ; .

Последний символ ; (точка с запятой) указывает на то, что определение закончено и новое слово может быть использовано.

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

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

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

Большинство новых слов языка Форт создается в виде так называемых определений через двоеточие, потому что их описание начинается с : и заканчивается ; .

Хотя слово HELLO представляет собой настоящую программу, она слишком проста и не позволяет увидеть все преимущества предлагаемого метода программирования.

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


Кстати о статьях. Эти небольшие публикации не могут уместить всю необходимую информацию и множество примеров с развернутым анализом. Их цель – обозначить круг вопросов для обсуждения и указать на отличия диалекта Advanced Forth от классического Форта.

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

Какую литературу можно рекомендовать для изучения Форта?

Лучшими считаются статьи и книги Лео Броуди (Leo Brodie). Броуди был одним из первых сотрудников фирмы FORTH Inc., консультировал крупные компании по использованию Форта, а в последствии стал, пожалуй, главным популяризатором языка в мире.

Его книги "Starting FORTH" и "Thinking FORTH" переведены на русский язык ("Начальный курс программирования на языке ФОРТ" и "Способ мышления – ФОРТ" соответственно). Электронные версии книг можно найти в Интернете, в том числе на русском языке. Периодически появляются бумажные букинистические издания, времен СССР.

Книги Лео Броуди

Вторая книга ("Thinking FORTH") имеет подзаголовок "A Language and Philosophy for Solving Problems", что отражает суть Форта. В свое время эту книгу рекомендовали всем программистам, не только изучающим Форт, стремящимся достичь совершенства в своей работе.

Поиск в Интернете дает множество ссылок на статьи и книги 80-х 90-х годов. Безусловно, будет очень полезно ознакомиться с этими публикациями, а выше упомянутые книги Броуди должны быть у каждого, кто осваивает Форт.

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

Некоторые функции классического Форта сейчас являются анахронизмом. При разработке Advanced Forth System пришлось отказаться от совместимости с Фортом стандарта 1994 года ради обеспечения новых возможностей.

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

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

Спасибо за внимание.


[Начало статьи] [Следующая статья] [Предыдущая статья]

Вы можете оставить комментарий к статье и задать вопросы на нашей странице в соцсети ВКонтакте

Вы можете оставить комментарий к статье и задать вопросы на нашей странице в соцсети Facebook