К СОВЕТСКОМУ ЧИТАТЕЛЮ (Чак Мур, Лео Броуди)
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ (И. В. Романовский)
ПРЕДИСЛОВИЕ (Чарльз Мур, автор языка Форт)
ОТ АВТОРА
КОРОТКО О КНИГЕ

К СОВЕТСКОМУ ЧИТАТЕЛЮ

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

Форт начинен идеями, а идеи легко преодолевают идеологические и национальные границы. К тому же Форт — это язык, и поскольку в его основе лежат слова, он легко переводим на естественные языки. Я уже видел французскую и китайскую версии Форта, где английские слова заменены соответствующими французскими и китайскими словами, так что программисты практически могут работать на своем родном языке. Я полагаю, то же самое может быть сделано и в вашей стране. Единственный недостаток подобной трансляции — уменьшается мобильность программ.

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

В основе гибкости Форта лежит его простота. Мне часто кажется, что люди слишком все усложняют. Некоторые языки программирования и операционные системы чересчур изощренны. Форт предлагает в качестве альтернативы простые средства программирования, которые можно расширять для обслуживания любой предметной области. Лео Броуди мастерски демонстрирует такие средства, подчеркивая их простоту.

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

предсказуемых результатов — только это имеет значение. Изучите Форт — и ваш компьютер поможет вам полностью решить все свои проблемы.

Чак Мур,

Вудсайд СА

Сентябрь 1988

Я глубоко тронут тем, что моя книга издается в Советском Союзе. Хотя она уже распространена в англоязычных странах и переведена на немецкий, французский, японский, китайский и датский языки, данный перевод имеет для меня особое значение, потому что способствует обмену идеями между нашими двумя странами. В 50-х — 60-х годах, еще учась в школе, я даже представить себе не мог, что когда-нибудь напишу книгу, которая будет переведена на русский язык, и ее увидят советские читатели.

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

Надеюсь, вы по достоинству оцените машинный язык, который создан господином Муром, и, на мой взгляд, является гениальной разработкой.

Лео Броуди


ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ

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

Позднее я понял, что при первых попытках мне мешал предыдущий опыт: Форт слишком отличается от языков, обычно используемых в практическом программировании, — Алгола, Фортрана, Бейсика, Паскаля и т. п. Но именно отличия и делают Форт настолько интересным для программистов со стажем (конечно же, для тех из них, кто хочет расширить свои знания, что при достаточно большом опыте бывает не всегда).

Книга Л. Броуди в этом отношении построена очень хорошо. Приемы «занимательной игры» в ней как бы блокируют наш предшествующий серьезный опыт и первоначально «вводят в нас» систему нужных понятий как нечто новое, вне зависимости от приобретенных ранее навыков. Однако занимательность не делает материал менее серьезным — книга даст вам полную и детальную информацию обо всех важнейших конструкциях языка. Кстати, следует отметить, что вашему вниманию предлагается второе издание книги, исправленное и дополненное в соответствии со Стандартом-83. Первое издание, ориентированное на пользователей систем фиг-Форта, вероятно, известно специалистам по оригиналу, а также по довольно широко распространенному переводу, выполненному Всесоюзным центром переводов. Когда вы прочтете достаточно много и Форт вам понравится, у вас возникнут естественные вопросы: «А как у нас? Есть ли в Советском Союзе подобные системы, развивались ли такие идеи? Используется ли Форт в нашей стране и каковы перспективы его дальнейшего примене-ния?»

Прежде всего напомним читателю, что язык, аналогичный Форту, предлагался и в Советском Союзе. В Московском университете, о чем упоминается в книге Н. П. Брусенцова «Микрокомпьютеры» (М.: Наука, 1985), в экспериментальной ЭВМ «Сетунь-70» были реализованы подобные технические идеи (двухстековой организации). Здесь же, в МГУ, на базе этих рдей и уже с учетом Форта разработана диалоговая система структурного программирования.

В американском варианте, ставшем международным, Форт начал развиваться у нас в 80-е годы, главным образом в Ленинграде. Работы велись в разных местах почти одновременно, в том числе на математико-механическом факультете Ленинградского университета. Первоначально усилия были направлены на создание инструментальных средств для всех выпускаемых в стране процессоров (ЕС, CM, K580, К1810, БЭСМ-6, «Эльбрус»). Описания отдельных групп и систем можно найти в книге С. Н. Баранова и Н. Р. Ноздрунова «Язык Форт и его реализации» (М.: Машиностроение, 1988). Недавно значительная часть ленинградской группы объединилась в научно-производственный кооператив «Форт-Инфо», ставящий перед собой цели развития и пропаганды средств программирования с использованием Форт-систем.

Уже сейчас советский пользователь может получить в свое распоряжение обширный набор базовых программных средств для работы на Форте и с помощью Форта. Из них следует особо выделить инструментальные средства, предназначенные для разработки программ на Форте: текстовые редакторы, компиляторы, целевые компиляторы, трансляторы с нескольких языков классического типа (с Паскаля и Бейсика, разрабатывается транслятор для языка СИ).

Подготовлена также первая очередь прикладных Форт-пакетов, включающая средства для работы с графикой, специальный пакет для выполнения действий «вещественной арифметики» — над числами, заданными в формате «плавающей точки», ассемблеры для различных ЭВМ, базу данных, перекодировщики, систему многооконного пользовательского интерфейса и др. Начали уже появляться различные обучающие и демонстрационные системы: учебники по Форту, система «АстроГлаз», предоставляющая пользователю движущуюся карту звездного неба, система «ФортМузыка».

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

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

Следует упомянуть еще об одном развитии идеи Форта, не успевшем попасть в книгу Л. Броуди. И за рубежом, и в нашей стране успешно конструируются специальные «Форт-процессоры» — вычислительные микросхемы, в которые многие базовые операции языка Форт входят как машинные команды. Высокие технические характеристики уже разработанных процессоров побуждают к еще большему развитию и программных Форт-систем.

И. В. Романовский, д-р физ.-мат. наук, проф.


ПРЕДИСЛОВИЕ

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

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

Свои первые результаты я получил в то время, когда работал с моделью IBM ИЗО—ЭВМ «третьего поколения». Они показались мне настолько значительными, что я посчитал новый язык «языком машин четвертого (fourth) поколения» и назвал бы его FOURTH (четвертым), если бы модель ИЗО допускала пятисимвольные идентификаторы. Таким образом FOURTH превратился в FORTH1 (Форт) —своеобразная игра слов.

«Сохранять простоту языка» — так примерно формулируется основной принцип, которым я руководствовался в процессе работы над Фортом и продолжаю руководствоваться при его применении. Элегантность решения — в его простоте. Простота достигается при глубоком изучении существа проблемы и осознается при получении правильного решения. Это положение следует особо подчеркнуть, поскольку оно противоречит устоявшемуся мнению о том, что мощность языка увеличивается с возрастанием его сложности. Про-

1 Вперед. — Примеч. пер.

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

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

Хотя я — единственный человек, перед которым никогда не стояла задача изучить Форт, мне хорошо известно, с какими это сопряжено трудностями. Как и при изучении любого естественного языка, приходится запоминать правила употребления множества слов. Шутливые пояснения и великолепно подобранные примеры существенно облегчают задачу для начинающих. Для тех же, кто уже имел дело с Фортом, просмотр книги будет подобен приятной прогулке и поможет освежить в памяти «знакомый пейзаж». Однако книга не настолько проста и популярна, чтобы показаться тривиальной. Безусловно, читая ее, вы иногда можете испытывать затруднения, но непременно узнаете много нового и о компьютерах и компиляторах, впрочем, как и о программировании.

Форт предоставляет человеку удобные средства общения с «умными» машинами, которыми он себя окружает. Следовательно, этот язык должен обладать свойствами естественных языков, включая компактность, разносторонность и расширяемость. Я считаю его лучшим языком для написания программ, изложения алгоритмов или объяснения работы ЭВМ и думаю, что, когда вы прочтете эту книгу, вам придется со мной согласиться.

Чарльз Мур, автор языка Форт


ОТ АВТОРА

В 1980 г., когда готовилось первое издание книги, популярность Форта была еще не столь велика. Сегодня положение существенно изменилось. И если интерес к другим языкам то возрастал, то падал (пик популярности Паскаля прошел, на какое-то время воцарился язык Си, но уже главным претендентом «на трон» является Модула 2), к Форту он рос стабильно год от года. Несмотря на то что распространение Форта продолжается в свойственном для него темпе, выпуск Форт-процессора Ч. Мура, как нам кажется, вызовет новый взрыв эмоций у инженеров и программистов.

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

Уже после выхода первого издания был принят и получил признание Стандарт Форт-83. Это явилось главной причиной, побудившей нас приступить к переработке книги, так как она не соответствовала новому стандарту. Что касается синтаксиса, то, поскольку в настоящее время еще существует множество систем, написанных на Фиг-Форте, я включил в текст второго издания сноски для пользователей таких систем, где указаны расхождения со Стандартом-83. В остальном же я старался следовать более строгому стилю написания программ и принципам, изложенным в моей книге «Думаем на Форте» (Brodie, Leo, Thinking Forth. Englewood Cliffs, N. I.: Prentice — Hall, 1984). Необходимо также отметить, что мы перестали употреблять слово экран вместо слова «блок». Если ранее такое разделение имело смысл («экран» обычно рассматривается как «блок», содержащий исходный текст), то теперь многие начинающие приходят в замешательство от наличия двух терминов.

В заключение мне хотелось бы выразить благодарность всем, кто так или иначе принимал участие в подготовке первого издания книги: Д. Сэндерсону, М. ЛаМанне, Дж. Дьювею,

Э. К. Конклину, Э. Д. Разер — за консультации по технике и стилю программирования на Форте, К. Хэррису — за советы по методике обучения Форту и ряд написанных им упражнений, К. А. Розенберг — за редактирование и профессиональные замечания, а также за большую работу по форматизации страниц, С. Линстрот, К. Льюбисих, К. Уэвер, К. Кэролин, С. Б. Броуди, Д. Робертсу, Дж. Ритсчер, Д. Разер, В. Шоуз, Н. Эльберт, Б. Роберте, Дж. Дотсону, Б. Патерсону и Г. Фридлендеру — за техническую помощь. Я весьма признателен С. Б. Броуди за ценные критические замечания и конструктивные предложения и, конечно,

Ч. Ш. Муру за создание Форта.

При подготовке второго издания существенную помощь мне оказали Дж. Дж. Кэссэди, представивший исходную версию ассемблера 8080, К. Хамбэкер, отрецензировавший переработанную рукопись книги, и М. Хэм, приславший мне множество писем с критическими замечаниями.

Лео Броуди


КОРОТКО О КНИГЕ

Мы начинаем изучать Форт — интересный и мощный машинный язык. Если вы новичок, желающий поближе познакомиться с компьютером, то Форт поможет вам в этом деле. Он в большей степени приспособлен для написания программ, чем любой другой язык (см. «Введение для начинающих»). Если вы умудренный опытом профессионал, который хочет изучить Форт, вам тоже нужна именно наша книга. Форт настолько отличается от остальных языков, что всем, от новичка до специалиста, рекомендуется изучать его с самого начала. Поэтому, если вы знаете другие языки программирования, забудьте их и оставьте в памяти только то, что вам известно о компьютере (см. «Введение для профессионалов»).

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

В книге объясняется, как писать простые прикладные программы на Форте. В нее включены все служебные слова языка, требуемые для разработки высокоуровневой прикладной программы в однозадачном режиме, — от команд, реализующих простые математические операции, до команд управления трансляцией. Команды, относящиеся к средствам мультипрограммирования, утилитам вывода на печать и обмена с дисками, а также к объектному компилятору, здесь опущены. Эти команды доступны в некоторых версиях Форта, например в полифорте. Я подобрал такие примеры программ, которые будут работать в Форт-системе при вводе данных с терминала и диска. Однако не следует считать, что использование Форта ограничивается задачами манипулирования со строками, — сфера его применения гораздо шире.

Как уже отмечалось, книга построена таким образом, чтобы максимально облегчить изучение языка. Все команды описываются дважды: первый раз — в том разделе, где они вводятся, и второй — в конце главы, где дается краткий обзор ее содержания. В приложении Б представлен указатель слов Форта в алфавитном порядке, а в приложении В они сгруппированы по областям применения. В конце каждой главы приводятся, кроме того, словарь терминов и упражнения, ответы на которые вы найдете в приложении А. В процессе изложения даются полезные рекомендации и предлагаются необязательные программы. Последние носят чисто иллюстративный характер и поэтому представлены здесь без каких-либо пояснений.

Следует отметить, что Форт — необычный язык. Он «попирает» многие устоявшиеся правила программирования. Первоначально я воспринял Форт крайне скептически, но по мере создания сложных прикладных программ мне начали открываться его красота и мощь. Постарайтесь относиться к нему без предубеждения, если вам что-то покажется странным. Лишь немногие программисты, освоившие Форт, возвращались снова к другим языкам программирования.

Желаю вам успехов в освоении Форта и его последующем применении.

Лео Броуди