С этой книгой вы изучите язык программирования Форт с нуля на конкретных примерах, минимум теории максимум практики. Почему Форт? Философия Форта – минимализм, простота, быстрота выполнения кода. Интерпретатор Форта компилирует все новые, определяемые слова, в словарь, немедленно после ввода, а это значит, что он сохраняет:
интерактивность REPL-среды и вы сразу видите результат своих действий и
быстроту компилятора
Потенциал Форта как языка программирования – безграничен. Хотя и являясь низкоуровневым, его можно превратить в язык высокого уровня и вводить любые типы данных и конструкции из других языков (Форт можно превратить в любой другой язык, диалект или создать свой).
Синтаксис этого ЯП (Языка Программирования) настолько прост, что его практически нет. Есть только одно главное правило – все Слова (именно так называются операторы языка и определяемые пользователем слова-функции) и числа должны быть разделены между собой хотя бы одним символом пробела и/или табуляции и/или переноса строки (то есть «любой символ пустоты, разделитель»).
Для кого эта книга?
Программировать на языке Форт настолько просто, что материал подойдет даже для детей. Не говоря уже об обучении, этому прекрасному виду человеческой деятельности, школьников, абитуриентов и студентов. Так что данным материалом может пользоваться любое заинтересованное лицо, независимо от возраста и рода человеческой деятельности. Сложность будет наращиваться постепенно, с нуля, с возможностью подтянуть сложные моменты и пропусков примитивов, уже подготовленными читателями.
Среда программирования SP-Forth – замечательно подойдет для наших целей. Программировать в этом консольном приложении можно начать сразу после быстрого скачивания и установки с официального сайта последней его версии. Он распространяется бесплатно. Работает он в режиме интерпретатора. Это значит, что после запуска системы программирования SP-Forth можно вводить команды или целую программу, после, нажав <Enter>, приложение обработает код и выдаст, предусмотренные результаты. Скачивание и установка SP-Forth не должен вызвать никаких сложностей, а потому этот процесс мы здесь опустим (в любом поисковике наберите «скачать SP-Forth», исполняемый файл запускается двойным кликом левой мыши по нему). После запуска Форта вы увидите:
Рис 1
Исторически сложилось, что основы программирования начинают изучать с первой программы, которая выводит на экран «Hello, World!», что по-русски означает «Здравствуй, Мир!».
Код для ЯП Форт будет следующий:
.( Hello world!)
или
S" Hello, World!" TYPE
После чего на экран будет выведено вышеупомянутое сообщение. Операторы ЯП (язык программирования) Форт <.(> и <S">: первый берет текст, следующий за ним до закрывающей кавычки – " (признак конца выводимой на экран строки) и печатает его на экран, второй создаёт строку адрес которой с ее длиной отправляется на стек. Затем оператор TYPE используя эти числа, адрес и его размер, как параметры также печатает сообщение. Главное «TYPE» должен идти сразу, во избежание ошибок при исполнении, это особенность работы системы. Обращайте внимание на пробелы – в форте они разделяют слова языка. Зачем нужен второй вариант, если первый проще и короче? Затем что он универсальный, так определяются в Форте строки, и они будут полезны в будущем.
Вот как должен выглядеть результат работы:
Рис 2
Третий вариант этой же программы будет выглядеть так:
: Hello_World ." Hello, World!" ;
Hello_World
Рис 3
Отличие в том, что определяется слово с именем приветствия, которое затем вызывается. Первые два варианта работают в режиме интерпретации, а последний – компиляции (в форт-словаре создается новое слово). Будучи универсальным, его можно вызывать многократно из различных мест программы или даже использовать это слово в своих библиотеках.
Так мы написали первую полноценную программку. Вместо «Hello_World», вы можете назвать «Start» или как захочется, главное придерживаться простого правила – названия должны быть информативными. Стиль программирования на ЯП Форт ничем не отличается от других языков, будет полезно в дальнейшем почитать об этом.
Так мы определили новое слово. Определение слова начинается с двоеточия, затем идет любой символ-разделитель (пробел, табуляция или перевода строки, но традиционно используется один пробел). После идёт имя слова, которое вы сами придумаете, далее код – реализация (последовательность операторов, чисел и других уже определённых слов), разделенных пробелами (и / или другими разделителями). Завершается точкой с запятой, также отделенный от кода пробелом.
Начало уже положено. Первая программа на Форте для начинающих выглядит довольно просто.
Добавим пару штрихов – комментарии:
Принято в каждом определении нового слова (на Форте) после названия писать стековый комментарий, обозначающий что слово берет со стека в качестве параметров и что оставляет на нем как результаты своей работы. Перепишем первое наше Форт-Слово:
: Hello_World ( -> ) ." Hello, World!" ; Hello_World
Так как Hello_World оставляет стек неизменным (не трогает его), то до и после стрелки пусто. Комментарий – это содержимое скобок.
Также существует второй способ комментирования кода до конца строки. Это символ – «\».
: Hello_World ( -> ) ." Hello, World!" ; Hello_World \ это программа, выводящая сообщение «Hello, World!»
Программирование без посторонней помощи не составит особой трудности даже, если вы только начинаете. В отличие от языков программирования С или С++, с которых также можно стартовать с нуля, все довольно наглядно и просто. На Форте можно практиковать программирование как онлайн, так и офлайн. Для первого варианта существует скрипт интерпретатор языка Форт на JavaScript (с его помощью можно создавать Форт программы прямо в браузере). Мы же будем ориентироваться на конкретный диалект Форта – SP-Forth. Он существует для всех популярных систем (Windows, Linux).
Обычно вторая задача при обучении программированию – это написание калькулятора. В Форте калькулятор писать не нужно, так как он поддерживает основные операции встроенными средствами, правда несколько в необычной форме, которая называется обратная польская запись или постфиксная. В математике вы привыкли писать формулы в инфиксной форме типа «(1 + 2) * 5 * (4 – 5)», где знак бинарной операции пишется между числами, например, в Лиспе сначала идёт операция, а затем операнд или операнды, а в Форте наоборот, сперва мы отправляем на стек операнды, затем операция выполняет действия над ними, оставляя результат там же. Стек это просто место в памяти, поддерживаемое на аппаратном уровне, следовательно, все операции над ними выполняются очень быстро, где будет хранится промежуточные данные. Так будет выглядеть работа с нашим калькулятором:
Операнд1 Операнд2 Операция. То есть вместо «1 + 2» на Форте мы должны написать «1 2 +».
1 2 +
Ok ( 3 ) \ 1+2=3 в скобках – это содержимое стека
1 2 *
Ok ( 3 2 ) \ 1*2=2 очередной результат на вершине стека
1 2 -
Ok ( 3 2 4294967295(-1) ) \ 1-2=-1 4294967295 – это без знаковый вариант числа -1
1 2 /
Ok ( 3 2 4294967295(-1) 0 ) \ 1/2=0 – это целочисленное деление, потому результат нуль
1 2 MOD
Ok ( 3 2 4294967295(-1) 0 1 ) \ остаток от деления 1/2
1 2 /MOD
Ok ( [7].. 4294967295(-1) 0 1 1 0 ) \ остаток от деления 1/2 и целая часть ½
Рис 4
Вы можете сказать программирование на питоне – гораздо богаче, возможностями и будете правы. Но Форт быстрее и в качестве первого языка программирования гораздо проще и легче его освоить, а самое главное понятнее. Учить программирование на паскале, на мой взгляд уже не актуально. Хотя он и хорош для изучения различных алгоритмов, но это уже не современный язык программирования, со множеством избыточных конструкций и синтаксиса.
Приведем конкретные примеры на SP-Forth.
: ^2 ( A -> A^2 ) DUP * . ; \ возведение числа в квадрат
: ^3 ( A -> A^3 ) DUP DUP * * . ; \ возведение числа в куб
: ^4 ( A -> A^4 ) DUP * DUP * . ; \ возведение числа в четвертую степень
DUP – это слово которое просто дублирует число на вершине стека.
Возведём 5 в квадрат, для этого наберём на клавиатуре:
5 ^2
25 Ok
Получаем правильный ответ:
рис 5
Копировать код нужно аккуратно, при возведении в квадрат, получаем сообщение об ошибке. При «Копи пасте» куда-то делся символ табуляции между «;» и комментарием, вследствие видим «^ -2003 WORD OR FILE NOT FOUND», из-за нарушения синтаксиса. Наверное, это особенность системы. Почему-то «сглатывается» символ табуляции, а потому вставлен дополнительный символ пробела в коде выше, ниже приведен пример с ошибкой интерпретации:
: ^2 ( A -> A^2 ) DUP * . ; \ возведение числа в квадрат
рис 6
Знаки табуляции нужны, чтобы структурировать логично, красиво и понятно код, например, в Python они элемент синтаксиса, без них ваш код не будет работать или как минимум будет выполняться некорректно, в Форте как и в других языках это элементы стиля программирования.
Также, вместо ^2, можно написать **2, в стиле python:
: **2 ( A -> A^2 ) DUP * . ; \ возведение числа в квадрат
5 **2
25 Ok
В итоге получаем тот же ответ, но оформление, стиль изменились. Не забывайте «**2» – это слово, а значит он отделяется пробелом от операнда «5» (до и после, если за ним будут другие инструкции). Это одно из самых главных отличий Форта от других языков.
Для начала этого достаточно. Далее при решении конкретных задач, процесс станет более понятным и осознанным. Приступим.
На этой странице вы можете прочитать онлайн книгу «Решение задач по программированию на языке Форт (Forth). Версия 3», автора Arsen Gonian. Данная книга имеет возрастное ограничение 12+, относится к жанрам: «Школьные учебники», «Компьютерная справочная литература». Произведение затрагивает такие темы, как «учебное пособие», «информатика». Книга «Решение задач по программированию на языке Форт (Forth). Версия 3» была написана в 2023 и издана в 2025 году. Приятного чтения!
О проекте
О подписке
Другие проекты