Интервью по языку Форт [Чарльз X. Мур] (pdf) читать постранично, страница - 9

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

программировать на Форте. Некоторые
умеют придумывать очень хорошие имена, другие справляются с этим очень плохо.
Одни создают очень хороший синтаксис, другие не придают этому значения. У одних
получаются
очень
короткие
определения
слов,
У
других
слово
занимает
полстраницы. Нет правил - есть только стилистические договорённости. Кроме
того, у Форта есть важное отличие от Си, Пролога, Алгола и Фортрана, связанное
с тем, что обычные языки старались предусмотреть все мыслимые структуры и
синтаксис, встроив их в язык. Из-за этого языки получались очень неуклюжими. Я
считаю, что Си - очень неизящный язык со всеми своими квадратными и фигурными
скобками, двоеточиями и точками с запятой и всем прочим. В Форте всё это
отсутствует. Я не ставил целью решение общей задачи. Я лишь собирался сделать
инструмент, с помощью которого кто-то другой мог бы решить любую задачу,
вставшую перед ним. Возможность сделать любую вещь, а не возможность делать все
вещи.

Нужно ли поставлять вместе с микрокомпьютерами исходный код, чтобы их можно
было исправить даже десять лет спустя?
Чак:
Верно,
исходный
код
составил
бы
прекрасную
документацию
для
микрокомпьютеров. Компактность Форта способствовала бы этому. Но дальше
придётся также включить компилятор и редактор, чтобы можно было посмотреть и
модифицировать
код
микрокомпьютера
без
помощи
другого
компьютера
или
операционной системы, которые могут быть утеряны. colorForth и представляет мою
попытку сделать это. Всё, что требуется, это несколько килобайт исходного и/или
объектного кода. Их легко записать во флеш-память и использовать в будущем.
Как связаны между собой конструкция языка и конструкция программ на нём?
Чак: Применение определяется его особенностями. Это видно на примере языков
общения между людьми. Взгляните на различия между романскими (французский,
итальянский), западными (английский, немецкий, русский) и восточными (арабский,
китайский) языками. Они влияют на соответствующие культуры и мировоззрения. Из
всех
этих
языков
особой
краткостью
выделяется
английский,
и
его
распространённость всё время растёт. То же касается языков для общения человека
с машиной. Первые языки (Кобол, Фортран) были очень многословны. В последующих
языках (Алгол, Си) был избыточный синтаксис. Такие языки неизбежно приводили к
тому, что описания алгоритмов были большими и неизящными. На них можно было
описать всё, что угодно, но плохо. Форт решает эти проблемы. Он в значительной
мере лишён синтаксиса. Он способствует написанию коротких и эффективных
определений. Он минимизирует потребность в комментариях, которые часто бывают
неточными и отвлекают внимание от собственно кода. В Форте также организован
простой и эффективный вызов подпрограмм. Вызов подпрограмм в Си требует
дорогостоящей подготовки и последующего восстановления. Это отталкивает от его
употребления. Способствует созданию сложных наборов параметров, чтобы окупить
стоимость вызова, но приводит к большим и сложным подпрограммам. Эффективность
вызова допускает разбиение программ Форт на множество мелких подпрограмм, что
обычно и происходит. Для моего стиля характерны однострочные определения сотни мелких подпрограмм. В этом случае выбор используемых в коде имён
приобретает большое значение - как для мнемоники, так и для читаемости
программы. Когда код легко читается, меньше потребность в документации.
Благодаря отсутствию в Форте синтаксиса можно позволить себе вольности. Для
меня это означает возможность проявить творчество и писать код, на который
приятно смотреть. Некоторые рассматривают это как недостаток, мешающий контролю
со стороны руководства и стандартизации. Думаю, вина в таких случаях лежит на
руководстве, а не на языке.
Вы сказали, что большинство ошибок возникает из-за синтаксиса. Как избежать в
программах на Форте других ошибок, например связанных с логикой, сопровождением
и выбором плохого стиля?
Чак: Основные ошибки в Форте совершаются при работе со стеком. Можно случайно
что-нибудь оставить в стеке и потом поскользнуться на этом. Очень важно
связывать со словами комментарии к стеку. Нужно описать, что находится в стеке
при входе и что - при выходе. Но это всего лишь комментарии. Полностью доверять
им нельзя. Иногда их реально выполняют для верификации и выяснения состояния
стека. В принципе, выход в разбиении. Если определение вашего слова занимает
одну строку, можно прочесть его до конца, проследив поведение стека и проверив,
что всё правильно. Можно протестировать слово и убедиться, что оно работает
так, как вы задумали, но при этом допустить ошибку со стеком. Слова dup и drop
встречаются постоянно, и ими нужно корректно пользоваться. Очень большое
значение имеет возможность выполнять слова вне контекста, просто задав для них
входные