Мы с вами здесь начнем изучать язык программирования Форт с нуля. Синтаксис этого ЯП (Языка Программирования) настолько прост, что его практически нет. Есть только одно главное правило – все Слова (именно так называются операторы языка и определяемые пользователем слова-функции) и числа должны быть разделены между собой хотя бы одним символом пробела и/или табуляции и/или переноса строки (то есть «любой символ пустоты, разделитель»).
Для кого этот сайт?
Начать учить программирование на этом языке настолько просто, что материал данного сайта можно использовать для детей, не говоря уже обучение, этому прекрасному виду человеческой деятельности, для школьников, абитуриентов и студентов. Так что данным материалом может пользоваться любое заинтересованное лицо, независимо от возраста и рода человеческой деятельности. Сложность будет наращиваться постепенно, с нуля, с возможностью подтянуть сложные моменты и пропусков примитивов, уже подготовленными читателями.
Среда программирования SP-Forth – замечательно подойдет для наших целей. Программирование бесплатно в этом консольном приложении можно начать сразу после быстрого скачивания и установки с официального сайта последней его версии. Работать мы будем в режиме интерпретатора. Это значит, что после запуска системы программирования SP-Forth можно вводить команды или целую программу, после, нажав , приложение обработает код и выдаст, предусмотренные результаты. Скачивание и установка SP-Forth не должен вызвать никаких сложностей, а потому этот процесс мы здесь опустим.
Исторически сложилось, что основы программирования начинают изучать с первой программы, которая выводит на экран «Hello, World!», что по-русски означает «Здравствуй, Мир!».
Код для ЯПФорт будет следующий:
.( Hello world!)
или
S" Hello, World!" TYPE
После чего на экран будет выведено вышеупомянутое сообщение. Операторы ЯП (язык программирования) Форт <.(> и : первый берет текст, следующий за ним до закрывающей кавычки – " (признак конца строки) и печатает его на экран, второй создаёт строку адрес которой с ее длиной отправляется на стек. Затем оператор TYPE используя эти числа, адрес и его размер, как параметры также печатает сообщение. Главное «TYPE» должен идти сразу, во избежание ошибок при исполнении, это особенность работы системы. Обращайте внимание на пробелы – в форте они разделяют слова языка. Зачем нужен второй вариант, если первый проще и короче? Затем что он универсальный, так определяются в Форте строки, и они будут полезны в будущем.
Третий вариант этой же программы будет выглядеть так:
: Hello_World ." Hello, World!" ;
Hello_World
Отличие в том, что мы определяем одноименное слово, которое затем вызывается. Первые два варианта работают в режиме интерпретации, а этот компиляции (в форт-словаре создается новое слово). Будучи универсальным, его можно вызывать многократно из различных мест программы или даже использовать сей код в своих библиотеках.
Так мы написали первую полноценную программку. Вместо Hello_World, вы его можете назвать Start или как захочется, главное придерживаться простого правила – названия должны быть информативными. Стиль программирования на ЯП Форт ничем не отличается от других языков, будет полезно в дальнейшем почитать об этом.
Так мы определили новое слово. Определение слова начинается с двоеточия, затем идет любой символ-разделитель (пробел, табуляция или перевода строки). После идёт имя слова, которое вы сами придумаете, далее код – реализация (последовательность операторов, чисел и других уже определённых слов), разделенных пробелами. Завершается точкой с запятой, также отделенный от кода пробелом.
Начало уже положено. Первая программа курса программирования на Форте для начинающих выглядит довольно просто.
Добавим пару штрихов, комментарии:
Принято в каждом определении нового слова после названия писать комментарий, обозначающий что слово берет со стека в качестве параметров и что оставляет на нем. Перепишем первое наше Форт-Слово:
: Hello_World ( -> ) ." Hello, World!" ; Hello_World
Так как Hello_World оставляет стек неизменным (не трогает его), то до и после стрелки пусто. Комментарий – это содержимое скобок.
Также существует второй способ комментирования кода до конца строки. Это символ – «\».
: Hello_World ( -> ) ." Hello, World!" ; Hello_World \ это программа, выводящая сообщение «Hello, World!»
Программирование самому не составляет особой сложности даже для совсем начинающих. Это вам не язык программирования С или С++. Все довольно наглядно и просто. Можно практиковать программирование онлайн или офлайн. Для первого варианта существует скрипт транслятор языка форт. Мы же будем ориентироваться на конкретный диалект – 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 и целая часть 1/2
Вы можете сказать программирование на питоне – гораздо богаче, возможностями и будете правы. Но Форт быстрее и в качестве первого языка программирования гораздо проще и легче его усвоить, а самое главное понятнее. Учить программирование на паскале, на мой взгляд уже не актуально. Хотя он и хорош для изучения различных алгоритмов, но это уже не современный язык программирования, со множеством избыточных конструкций и синтаксиса.