Книга: Искусство программирования для Unix
4.2.5. Значение освобождения
4.2.5. Значение освобождения
В начале данной книги упоминалась ссылка на Дзэн об "особой передаче знаний вне священного писания". Не следует рассматривать ее как экзотическую, использованную ради стилистического эффекта. Основные понятия Unix всегда отличались свободной, Дзэн-подобной простотой. Данное качество отражено в основополагающих документах Unix, таких как книга "The С Programming Language" [42], а также доклад CACM 1974 года, в котором Unix была "представлена миру". Приведем одну известную цитату из данного документа: "... ограничение побуждает не только к экономии, но и к определенному изяществу дизайна". Источником этой простоты было стремление думать не о том, как много язык программирования или операционная система способны сделать, а о том, как мало они могут сделать.
Для того чтобы проектировать с учетом компактности и ортогональности, следует начинать с нуля. Дзэн учит, что привязанность приводит к мукам; опыт проектирования программного обеспечения учит, что привязанность к поверхностным предположениям ведет к неортогональным, некомпактным конструкциям и проектам, которые терпят неудачу или становятся крайне сложными при сопровождении.
Для достижения просветления и прекращения страданий Дзэн учит освобождаться. Традиция Unix преподает ценность освобождения от частных, случайных условий, с которыми была сформулирована проектная задача. Абстрагируйтесь. Упрощайте. Обобщайте. Поскольку программы создаются для разрешения проблем, полностью отделиться от проблем невозможно. Однако стоит приложить умственные усилия, для того чтобы понять, сколько предубеждений можно отбросить, и выяснить, становится ли конструкция более компактной и ортогональной в ходе этого процесса. Часто в результате появляются возможности для повторного использования кода.
Различные ассоциации между Unix и Дзэн[44] также являются частью традиции Unix, и это не случайно.
- Формализованный шаблон освобождения ресурсов
- 1. Назначение экспертных систем
- Глава 3 Нормативные руководящие документы, назначение и задачи информационной безопасности России
- 12.7.4. Переназначение клавиш на клавиатуре
- Шаблон: значение по умолчанию
- Имеет ли размер значение?
- 4.1.1. Назначение прав
- 15.7.1 Назначение rpcbind
- Время имеет значение
- Глава 1. Общая характеристика, назначение, история
- 12.2.4. Поиск байта с данным значением: memchr()
- Назначение книги