Перевод с английского С.Н.Дмитренко (Москва, 1993 г.)
Лео Броуди -- писатель, программист и консультант, авторитет мирового масштаба
в области языка программирования Форт. Он был техническим программистом в
фирме FORTH, Inc. а с 1981 года стал независимым консультантом для фирм IBM,
NCR и Lockheed. Он является также автором книги Starting FORTH, Prentice-Hall,
1981 (перевод: "Начальный курс программирования на языке Форт", M: Финансы и
статистика, 1990).
Посвящается Стефани, Брэндому и Раяну.
"Невозможно отделить язык от науки или науку от языка, поскольку любая
естественная наука всегда использует три вещи: последовательность феноменов,
на которые она опирается, краткие описания -- концепции этих феноменов,
которыми они представляются в мышлении, и слова, в которых выражаются
концепции. Для движения к концепции необходимо слово; для описания явления
необходима концепция. Все три отражают одну и ту же реальность."
Антони Лавуазье, 1789.
От переводчика
Предисловие
Глава 1. Философия Форта
Сказание об истории элегантности программ ......... 1
Поверхностность структуры ......................... 16
Взгляд назад, вперед и на Форт .................... 17
Программирование на уровне компонентов ............ 19
От кого прятать? .................................. 23
Упрятывание конструкции структур данных ........... 24
Но высокоуровневый ли это язык? ................... 26
Язык проектирования ............................... 28
Производительный язык ............................. 29
Итоги ............................................. 31
Литература ........................................ 32
Глава 2. Анализ .................................... 33
Девять фаз цикла программирования ................. 33
Итеративный подход ................................ 34
Объем планирования ................................ 36
Ограничения планирования .......................... 39
Фаза анализа ...................................... 42
Определение интерфейсов ........................... 45
Определение правил ................................ 50
Определение структур данных ....................... 59
Достижение простоты ............................... 59
Соблюдение бюджета и графика ...................... 64
Смотрины для концептуальной модели ................ 66
Литература ........................................ 66
Глава 3. Предварительный проект / декомпозиция ..... 67
Декомпозиция по компонентам ....................... 67
Пример: Крошечный Редактор ........................ 70
Поддержка задачи, основанной на компонентах ....... 74
Проектирование и поддержка задачи
при традиционном подходе ........................ 76
Интерфейсный компонент ............................ 81
Разбиение по последовательным уровням сложности ... 85
Ограниченность мышления по уровням ................ 87
Резюме ............................................ 92
Для дальнейшего размышления ....................... 93
Глава 4. Детализированная разработка/решение задачи 96
Техника решения задач ............................. 97
Интервью с изобретателем-программистом ............ 103
Детализированная разработка ....................... 105
Синтаксис Форта ................................... 106
Алгоритмы и структуры данных ...................... 115
Расчеты или структуры данных или логика ........... 116
Решение задачи: вычисление римских цифр ........... 118
Итоги ............................................. 132
Литература ........................................ 132
Глава 5. Разработка: элементы Форт-стиля ........... 133
Организация листингов ............................. 134
Оформление блока .................................. 144
Соглашения по комментариям ........................ 149
Вертикальный формат записи против горизонтального . 161
Выбор имен: искусство ............................. 164
Стандарты при выборе имен: наука .................. 170
Еще советы по читабельности ....................... 171
Итоги ............................................. 173
Литература ........................................ 173
Глава 6. Фрагментация .............................. 174
Техника факторизации .............................. 174
Критерии для фрагментации ......................... 181
Факторизация при компиляции ....................... 193
Итеративный подход при реализации ................. 198
Итоги ............................................. 202
Литература ........................................ 202
Глава 7. Работа с данными: стеки и состояния ....... 203
Шикарный стек ..................................... 203
Шикарный стек возвратов ........................... 213
Проблема переменных ............................... 214
Локальные и глобальные переменные / инициализация . 217
Сохранение и восстановление состояния ............. 218
Внутренние стеки программ ......................... 220
Совместное использование компонентов .............. 221
Таблица состояния ................................. 223
Векторизованное исполнение ........................ 228
Использование DOER/MAKE ........................... 232
Итоги ............................................. 235
Литература ........................................ 236
Глава 8. Минимизация структур управления ........... 237
Что же такого плохого в структурах управления ..... 237
Как устранять структуры управления ................ 242
Выбор структур управления ......................... 248
Итоги ............................................. 275
Литература ........................................ 275
Эпилог: Воздействие Форта на мышление .............. 276
Приложение А: Обзор Форта (для новичков) ........... 279
Приложение Б: Определение DOER/MAKE ................ 283
Приложение В: Другие утилиты, описанные в этой книге 289
Приложение Г: Ответы на задачи
"для дальнейшего размышления" .................... 291
Приложение Д: Свод стилистических соглашений ....... 293