Философия UNIX

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Unix way»)
Перейти к: навигация, поиск

Философия UNIX — это набор культурных норм и философских подходов к разработке программного обеспечения, основанных на опыте ведущих разработчиков операционной системы UNIX.

Содержание

[править] МакИлрой: Четверть века UNIX

Дуг МакИлрой, изобретатель каналов UNIX и один из основателей традиции UNIX, обобщил философию следующим образом:

«Философия UNIX гласит:
Пишите программы, которые делают что-то одно и делают это хорошо.
Пишите программы, которые бы работали вместе.
Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс».

Обычно эти высказывания сводятся к одному «Делайте что-то одно, но делайте это хорошо».

Из этих трёх принципов только третий является специфичным для UNIX, хотя разработчики UNIX чаще других акцентируют внимание на всех трёх принципах.

[править] Майк Ганцарз: Философия UNIX

В 1994 году Майк Ганцарз (англ. Mike Gancarz) объединил свой опыт работы в UNIX (он является членом команды по разработке системы X Window System) с высказываниями из прений, в которых он участвовал со своими приятелями программистами и людьми из других областей деятельности, так или иначе зависящих от UNIX, для создания Философии UNIX, которая сводится к 9 основным принципам:

  1. Красиво — небольшое.
  2. Пусть каждая программа делает что-то одно, но хорошо.
  3. Собирайте прототип как можно раньше.
  4. Предпочитайте переносимость эффективности.
  5. Храните данные в простых текстовых файлах.
  6. Используйте возможности программ для достижения цели.
  7. Используйте сценарии командной строки для улучшения функционала и переносимости.
  8. Избегайте пользовательских интерфейсов, ограничивающих возможности пользователя по взаимодействию с системой.
  9. Делайте каждую программу «фильтром».

Менее важные 10 принципов не снискали всеобщего признания в качестве частей философии UNIX и в некоторых случаях являлись предметом горячих споров (монолитное ядро против микроядра):

  1. Позвольте пользователю настраивать окружение.
  2. Делайте ядра операционной системы маленькими и легковесными.
  3. Используйте нижний регистр и придерживайтесь кратких названий.
  4. Не храните тексты программ в виде распечаток («Спасите деревья!»).
  5. Не сообщайте пользователю об очевидном («Молчание — золото»).
  6. Разбивайте сложные задачи на несколько простых, выполняемых параллельно («Мыслите „параллельно“»).
  7. Объединённые части целого есть нечто большее, чем просто их сумма.
  8. Ищите 90-процентное решение.
  9. Если можно не добавлять новый функционал, не добавляйте его («Чем хуже, тем лучше»).
  10. Мыслите иерархически.

[править] Реймонд: Искусство программирования в UNIX

Эрик С. Рэймонд (англ. Eric S. Raymond) в своей книге «Искусство программирования в UNIX» подытожил философию UNIX как широко используемую инженерную философию «Будь попроще, тупица» (Принцип KISS). Затем он описал, как эта обобщенная философия применима в качестве культурных норм UNIX. И это несмотря на то, что несложно найти несколько нарушений в следующей текущей философии UNIX:

  • Правило модульности: Пишите простые части, соединяемые понятными интерфейсами.
  • Правило ясности: Ясность лучше заумности.
  • Правило композиции: Разрабатывайте программы так, чтобы их можно было соединить с другими программами.
  • Правило разделения: Отделяйте правила (policy) от механизма (mechanism); отделяйте интерфейс от движка (engine).
  • Правило простоты: Нацельтесь на простоту; добавляйте сложность, только где необходимо.
  • Правило экономности: Пишите большую программу только когда другими средствами выполнить необходимую задачу не удастся.
  • Правило прозрачности: Разрабатывайте прозрачные программы для облегчения последующего пересмотра и отладки.
  • Правило надёжности: Надёжность — дитя прозрачности и простоты.
  • Правило представления: Храните знания в данных так, чтобы логика программы была тупой и надёжной.
  • Правило наименьшего удивления: При разработке интерфейса всегда делайте как можно меньше неожиданных вещей.
  • Правило тишины: Если программе нечего сказать, пусть лучше молчит.
  • Правило восстановления: Если надо выйти из строя, делайте это шумно и как можно быстрее.
  • Правило экономии: Время программиста дорого; сократите его, используя машинное время.
  • Правило генерации: Избегайте ручного набора кода; при любом удобном случае пишите программы, которые бы писали программы.
  • Правило оптимизации: Сначала — опытный образец, потом — «причесывание». Добейтесь стабильной работы, только потом оптимизируйте.
  • Правило многообразия: Отвергайте все утверждения об «единственно правильном пути».
  • Правило расширяемости: Разрабатывайте для будущего. Оно наступит быстрее, чем вы думаете.

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

[править] Цитаты

  • «UNIX прост. Но надо быть гением, чтобы понять его простоту» — Деннис Ритчи.
  • «UNIX не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей» — Дуг Гвин.
  • «UNIX никогда не говорит „пожалуйста“» — Роб Пайк.

[править] Критика

[править] The UNIX-HATERS Handbook

Философия UNIX критиковалась в книге «The UNIX-HATERS Handbook», изданной в начале 1990х годов.

  • По мнению редакторов книги, подход UNIX приводит к появлению решений, сделанных наспех, без должного продумывания архитектуры, после чего данные решения канонизируются (enshrined), то есть объявляются вечной классикой. Например, таким решением, по их мнению, являются lock files — временные файлы без содержимого, создаваемые как пометка того факта, что какая-то программа находится в процессе исполнения.
  • X Window System была подвергнута критике за отделение в ней механизма (engine) от политики (policy), что привело к отсутствию в UNIX стандарта на политики управления пользовательским интерфейсом и большим затруднениям при разработке приложений, использующих GUI.
  • NFS была подвергнута критике за изначально порочный подход к архитектуре - попытку создать stateless файл-сервер при том, что это принципиально невозможно. Когда же невозможность поддержки некоторых важных вещей стала очевидной, к NFS прикрутили "костыль" под названием процесса lockd.
  • Также приводился ряд примеров, показывающих, что некоторые решения, принятые в ОС VMS, Microsoft Windows и Apple Mac OS, значительно превосходят свои аналоги из мира UNIX (например, Windows может одновременно исполнять две огромных программы - Word и Excel - в 8МБ памяти, чего не мог ни один UNIX).[источник не указан 930 дней]

Но, в то же время начатые как *NIX подходы плавно обосновываются и в ОС Microsoft Windows и Apple Mac OS.

[править] Примечания

[править] См. также

[править] Ссылки

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Участие
Печать/экспорт
Инструменты
На других языках