Язык программирования Форт

         

В этом разделе содержится важная





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

Форт (FORTH) -- это мощный язык программирования, который обеспечивает высокую производительность ЭВМ. Предлагаемая книга является одновременно учебником и справочником, позволяющим овладеть языком Форт независимо от того, начинающий вы программист или опытный. Вы можете пользоваться этой книгой как учебником для классных или индивидуальных занятий, при этом не предполагается знание основ ЭВМ или программирования. Книга содержит полное описание языка, начинающееся с упрощенного изложения принципов работы компьютеров. Постепенно осуществляется переход к более сложным понятиям, не описанным в других книгах. Вы сами можете выбрать материал и скорость изучения с учетом своего уровня подготовки. В книге приводится множество примеров, показывающих стиль программирования на языке Форт, включая полный текст программы редактора, большое количество упражнений для приобретения опыта, уверенности и, что более важно, полезных технических навыков. В даны ответы к упражнениям. Излагаются обе версии языка Форт в соответствии со стандартами 1979 и 1983 гг. Кроме того, изложены вопросы, не освещаемые в стандартах, в том числе организация файлов данных, обработка алфавитно-цифровых текстов, арифметика с плавающей запятой, а также различные инструментальные программные средства, что поможет вам расширить сферу применения языка Форт для ваших нужд. Даны примеры функций усовершенствованной реализации языка MMSFORTH.
Материал книги построен для использования ее в качестве справочника так, чтобы охватить весь набор средств и приемов и полный перечень слов и функций языка. Подробное содержание каждой главы дается в разделе содержания и в начале каждой главы и кроме того, имеется сводка перекрестных ссылок для облегчения поиска нужной информации. Приведены также два очень подробных глоссария: слов языка программирования Форт (включая стандартные, а также расширяющие слова и слова, определенные в книге) и терминологии компьютеров и понятий, относящихся к языку Форт.
Приводимый материал и его организация должны сделать эту книгу подручным средством для программирующих на языке Форт.
Что же представляет собой язык Форт ? Основная его часть -- это набор слов, или словарь, из которого слово вызывается по имени для выполнения специфических функций. Слова языка Форт , , , , соответственно складывают, вычитают, умножают и делят два числа. Программа на Форте пишется путем определения новых слов с использованием слов, ранее уже определенных в словаре. Как только новые слова скомпилированы в словарь, они не отличаются по форме от тех слов, которые в нем уже имеются. Программа на Форте -- это не более чем расширение самого языка, это резко отличает его от таких языков программирования, как BASIC, FORTRAN или PASCAL, в которых язык транслирует всю программу в закодированную форму, понятную компьютеру, не меняя самого языка. И вследствие того, что Форт использует словарь, новые слова и программы требуют гораздо меньше памяти и могут выполняться так же быстро, как эквивалентные им программы на других языках.
Кроме того, языком Форт очень легко пользоваться. Подобно Бейсику, он сразу же реагирует на любую команду (слово), введенную с клавиатуры. Однако новые слова Форта и программы компилируются в словарь, поэтому они могут выполняться с той же скоростью или быстрее, чем, например, на Фортране, который к тому же при трансляции программ порождает большие объемы машинного кода. Компиляция программы на языке Форт делается значительно быстрее и проще, чем на Фортране, Коболе, Паскале и других языках.
Есть у форта и другие своеобразные черты. Почти все языки программирования используют средства операционной системы (например, СР/М /си-пи-эм/, MS-DOS) для обеспечения ввода информации с клавиатуры, вывода ее на экран дисплея, сохранения программы на диске и других функций. В противоположность этому многие версии языка Форт служат сами себе и операционной системой, или, иначе говоря, все функции операционной системы могут быть написаны на языке Форт и включены в качестве части его словаря.


И в то время как другие языки для сохранения программы и данных пользуются именованными файлами на дисках, Форт сохраняет такую же информацию в нумерованных блоках емкостью 1024 байта (1 Кб) каждый. Хотя и в языке Форт могут использоваться файлы, а сам он может работать с верхним уровнем операционной системы, Форт выполняет функции операционной системы специфическим и необычным образом.
В большинстве языков программирования требуется, чтобы числа хранились в виде переменных. В Форте также есть именованные переменные, но для хранения чисел, так же как и для передачи их из одного слова в другое, в основном используется стек, позволяющий экономить много времени (числа не приходится выбирать из памяти, но при условии что стек реализован аппаратно на кристалле или находится в быстрой кэш-памяти). Применение стека является как раз той новинкой (точнее особенностью), которую нужно прежде всего освоить в языке Форт.
Форт -- структурированный язык. Такие языки, как Фортран и Бейсик, допускают написание программы с переходами из одного места в другое, что потенциально может привести к путанице и беспорядку. Некоторые структурные языки, например Паскаль, заставляют разрабатывать программу в логической последовательности, но делается это с помощью очень строгих правил, которые ограничивают программиста более жестко, чем на языке Форт. Разработка программ на Форте и их организация производятся, обычно одновременно на двух уровнях. На верхнем уровне программист разрабатывает план того, что программа должна делать, пользуясь часто логической блок-схемой программы. На нижнем уровне программа пишется с помощью определения слов, необходимых для выполнения задач верхнего уровня. Каждое определяемое слово может быть проверено и отлажено отдельно или в сочетании с другими словами, что приводит к существенному сокращению времени разработки и тестирования программы.
Именно возможность писать короткие определения слов и программ и делает язык Форт легким для изучения. Новое определение может быть введено с клавиатуры и немедленно проверено.


Поэтому форт можно и нужно изучать на практике методом "проб и ошибок". И хотя Форт заключает в себе некоторые тонкости и абстракции, можно изучить лишь небольшую их часть, чтобы писать полезные программы. Вы сможете писать программы и экспериментировать с ними раньше, чем дойдете до середины первой главы. Для облегчения обучения очень важны немедленная реакция и подтверждение, и только два языка -- Бейсик и Лого приближаются к Форту в этом отношении. На протяжении всей книги мы будем разбирать небольшие примеры и делать упражнения. Вам следует все их попробовать решить, но еще большему вы научитесь, если будете сами ставить и решать свои собственные задачи.
И все же многие утверждают, что Форт труден для изучения. Для этого имеется несколько причин. Опытным программистам Форт зачастую дается труднее, чем новичкам, потому что он отличается от других языков программирования по самой своей природе. Хотя в языке Форт нет каких-либо присущих только ему сложностей, программисты с трудом отвыкают от переменных, подпрограмм, многословного текста на исходном языке, алгебраических обозначений и прочих атрибутов привычных им языков. Если вы знаете другие языки программирования, попробуйте к языку Форт подойти с полной отдачей. Освойте понятия стека и определения слов, прежде чем переходить к более сложным вопросам. Забудьте всякие предубеждения, которые у вас могут возникнуть, вроде того, что для хорошего языка программирования обязательно нужна операционная система и файловая поддержка. И не беспокойтесь о блок-схеме, начните с небольших задач, ваш опыт будет накапливаться постепенно. Форт может показаться трудным, так как это достаточно мощное средство программирования.
Действительно, все возможности языка изучить трудно, но все они и не потребуются, чтобы писать очень полезные программы. На Форте можно научиться писать программы на уровне хорошего программиста, пользующегося языками Бейсик и Фортран, быстрее, чем на любом другом языке. Так же несложно программирование на Форт-ассемблере (определение слов Форта в машинных кодах).


Можно описать слова, которые будут создавать в словаре совершенно новые типы данных, использовать Форт для модификации самого языка, для операций с большими объемами данных в памяти компьютера и даже для того, чтобы реализовать новые языки программирования. Конечно, изучение этих вопросов может быть трудным. И, хотя мы осветим большую их часть, вы сможете хорошо программировать на языке Форт раньше, чем овладеете ими всеми. Форт предоставляет вам мощные средства для управления работой компьютера, присущие другим языкам программирования, включая машинный язык, но вам эти мощные средства скорее всего не потребуются.
Существует одна причина, из-за которой Форт иногда оказывается действительно трудным. Дело в том, что в стандартах языка и в поставляемых потребителям реализациях языка отсутствуют некоторые слова для выполнения основных или важных функций, предусмотренных другими языками. В таких случаях программист вынужден сам написать слова, которые должны выполнять эти важные функции. Например, стандартный (ANS'83) Форт не содержит операций над числами с плавающей запятой, в нем нет трансцендентных функций (тригонометрических, логарифмической); не определены стандартами операции с символами и символьными строками (например, извлечение отдельных слов из текста), работа с файлами данных, графические возможности. Нет в стандарте и слова, позволяющего вводить числа в процессе исполнения программы. К счастью, во многих поставляемых реализациях Форта предусмотрены слова, позволяющие преодолеть эти ограничения, а Форт настолько мощный, что позволяет самому написать такие слова, если знать, как это сделать. И мы вас этому научим.
Подводя итог, можно сказать, что Форт -- это в то же время мощный и неразвитый язык. Мощный он потому, что программы, написанные на нем, занимают мало места в памяти и исполняются с такой же скоростью или быстрее, чем на других языках, он дает потенциально неограниченные возможности управления компьютером, и писать и отлаживать программы довольно несложно.В то же время стандартный Форт неразвит, ввиду того что не предусматривает выполнения некоторых важных функций, которые являются неотъемлемой частью других языков или операционной системы и доступны для программиста. Введение этих функций предоставлено программисту или предусматривается в некоторых версиях Форта. Почему же стандартный Форт так бедно определен ? Чтобы понять это, надо немного познакомиться с его создания.

Содержание раздела