В предыдущей статье мы начали знакомство с языком программирования
Форт с краткого обзора его истории. В этой статье мы постараемся просто и понятно объяснить,
что же такое Форт и почему не стоит сравнивать его с другими языками программирования.
Хотя мы все время используем сочетание слов "язык программирования Форт", это не совсем правильно. Форт больше чем язык, это целая альтернативная философия решения задач программирования.
Разработка программ с использованием большинства языков программирования, таких как, например, Си, похожа на производственный процесс, где четко определенные операции следуют в определенном порядке.
Сначала разрабатывается алгоритм программы. Затем пишется исходный текст, в котором операторы языка должны быть использованы в строгом соответствии с правилами синтаксиса. Файл исходного текста обрабатывается препроцессором, который ищет ошибки. Если ошибок нет, текст передается транслятору, который переводит текст программы в машинный код.
Далее полученный двоичный файл передается компоновщику, который собирает его вместе с другими двоичными файлами, например, из библиотек стандартных функций, в исполняемый файл операционной системы. Только этот файл может быть выполнен системой, и только запустив его на выполнение мы узнаем, работает ли программа в соответствии с заданным алгоритмом.
Перечисленные инструменты (препроцессор, транслятор, компоновщик) поставляются отдельно от операционной системы.
Существует и более короткий путь. Например, язык Бейсик традиционно использует интерпретатор исходного текста. Текст анализируется слово за словом и найденные операторы языка сразу выполняются. Если обнаруживается ошибка, интерпретация прекращается.
Интерпретатор не создает исполняемый файл с кодами машинных команд. Каждый раз, когда выполняется программа на Бейсике, ее текст интерпретируется заново, от первой строки до последней.
Такой способ хорошо подходит для изучения основ программирования и быстрой разработки небольших программ, но создание больших и сложных приложений с помощью интерпретатора практически невозможно.
В первых персональных компьютерах интерпретатор Бейсика был частью встроенного программного обеспечения. Использование компьютера можно было начать и без установки операционной системы.
С Фортом все выглядит иначе. Вы можете прямо здесь и сейчас освоить синтаксис и лингвистические правила Форта:
1. Слова Форта состоят из любых символов, кроме пробела.
2. Форт-программа состоит из последовательности слов, разделяемых пробелом.
И на этом все!
Работая с Фортом, вы имеете дело с Форт-системой. Что такое Форт-система? Это специализированная операционная система, управляющая аппаратурой компьютера оптимальным образом с точки зрения выполнения Форт-программ. Такой компьютер уже правильнее называть Форт-компьютером (или Форт-машиной). Для общения с оператором и создания Форт-программ в этой системе выполняется интерактивная среда программирования на языке Форт.
Размеры весьма мощной Форт-системы могут быть не более, чем у интерпретатора Бейсика, что позволяет устанавливать ее в ПЗУ компьютера как встроенное программное обеспечение.
Здесь следует сделать отступление и пояснить, что речь идет о "правильном", настоящем Форте. Сейчас существуют различные варианты Форт-систем, которые можно запустить на компьютерах с Windows, Linux, MacOS, даже на смартфонах c Android. Безусловно, вы получите среду программирования классичеcкого Форта, но если смотреть объективно, это все-таки суррогат. Выполнение такого приложения не делает ваш компьютер или смартфон Форт-машиной, они все равно остаются Windows-машиной или Android-машиной, со всеми проблемами используемой операционной системы.
Форт – диалоговый язык. Как только загрузилась среда программирования, Форт-система ждет от вас ввода текста с клавиатуры. Введенные слова анализируются и выполняются сразу. Если в результате выполнения Форт-системе необходимо что-то сообщить вам, она это сделает немедленно.
Процесс разбора введенной программистом текстовой строки соответствует интерпретации, например, в Бейсике, но текст строки нигде не запоминается. Если нет ошибок, Форт-система создает эквивалент введенного текста на уровне машинного кода и выполняет уже его. Это соответствует трансляции для других языков высокого уровня.
Минимально необходимый для функционирования Форт-системы набор слов, называемый словарем Форта, всегда существует на момент запуска системы.
Программирование на Форте состоит в определении новых слов с использованием уже известных. Новые слова добавляются к словарю Форта и могут быть использованы для определения следующих слов.
Немедленная интерпретация каждого слова и построение любых новых слов из уже известных делает Форт ближе к естественному человеческому языку, чем к машинным языкам программирования.
Используя Форт, вы можете создать новый язык, наилучшим образом подходящий для описания решаемой проблемы. Форт-система превращается в помощника, с которым вы "договариваетесь" о том, как совместно решать задачу.
Вот что сам Чарльз Мур писал об этом:
"Вы определяете каждое слово так, что ЭВМ знает его значение. Способ, которым она это знает, состоит
в том, что при вызове исполняется некоторый последовательный код. Компьютер предпринимает действия
сразу по каждому слову. Он не отправляет слово на хранение и не держит его в уме на будущее.
В философском смысле, я думаю, это означает, что машина "понимает" слово. Она понимает слово DUP,
быть может, лучше вашего, поскольку в ее мозгах никогда не возникает сомнение по поводу того, что DUP
означает.
Связь между словами, имеющими смысл для вас и имеющими смысл для компьютера, глубока. ЭВМ становится
средством для связи между человеческим существом и концепцией."
В первые годы развития Форта как нового инструмента программирования шли споры о том, как его классифицировать. Форт сочетает в себе свойства, которые кажутся на первый взгляд противоречивыми и не сочетаемыми. В нем можно найти и подобие ассемблера, и все признаки языка высокого уровня. Форт-система не нуждается в операционной системе, поскольку сама является ей.
Вот так проиллюстрировал место Форта в мире программного обеспечения известный популяризатор Форта Лео Броуди:
"Две точки зрения". Рисунок Лео Броуди.
Этот рисунок остроумно показывает ситуацию с Фортом: он существует параллельно с другими инструментами
программирования, не являясь полностью ни одним из них, но в нужный момент может быть использован в том
или ином качестве.
В следующей статье мы начнем изучение приемов программирования на Форте и рассмотрим его ключевые особенности – использование стека и постфиксную нотацию.
Спасибо за внимание