Оглавление Предисловие 19 I Контекст 27 1 Философские вопросы 29 2 История: слияние двух культур 55 3 Контраст: сравнение философии Unix и других операционных систем 79 II Проектирование 109 4 Модульность: четкость и простота 111 5 Текстовое представление данных: ясные протоколы лежат в основе хорошей практики 135 6 Прозрачность: да будет свет 163 7 Мультипрограммирование: разделение процессов для разделения функций 187 8 Мини-языки: поиск выразительной нотации 215 9 Генерация кода: повышение уровня спецификации 245 10 Конфигурация: правильное начало 261 11 Интерфейсы: модели проектирования пользовательских интерфейсов в среде Unix 285 12 Оптимизация 321 13 Сложность: просто, как только возможно, но не проще 329 III Реализация 353 14 Языки программирования: C или не C? 355 15 Инструментальные средства: тактические приемы разработчика 383 16 Повторное использование кода: не изобретая колесо 409 IV Сообщество 425 17 Переносимость: переносимость программ и соблюдение стандартов 427 18 Документация: объяснение кода в Web-сообществе 451 19 Открытый исходный код: программирование в новом Unix-сообществе 471 20 Будущее: опасности и перспективы 495 A Глоссарий аббревиатур 513 Б Список литературы 517 В Персональный вклад 525 Г Корни без корней: Unix-коаны Мастера Фу 529 Предметный указатель 536