💾 Archived View for tilde.team › ~rami › unix_philosophy.gmi captured on 2023-04-26 at 14:19:18. Gemini links have been rewritten to link to archived content
View Raw
More Information
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
~Rami ₪ PHILOSOPHY
רמי
SUBJECT: Философия UNIX
AUTHORS: Different
DATE: 02/10/22
TIME: 01.00
LANG: ru
LICENSE: Unknown
TAGS: essay, philosophy, UNIX, history, OS, system, programming
ФИЛОСОФИЯ UNIX
Цитаты
- «UNIX прост. Но надо быть гением, чтобы понять его простоту» — Деннис Ритчи.
- «UNIX не предназначен для ограждения своих пользователей от глупостей, поскольку это оградило бы их и от умных вещей» — Дуг Гвин.
- «UNIX никогда не говорит „пожалуйста“» — Роб Пайк.
ФОТО: Отцы-основатели UNIX - 1
ФОТО: Отцы-основатели UNIX - 2
ГРАФИК: История развития UNIX-систем (SVG)
Дуг Макилрой: Четверть века UNIX
Дуг Макилрой, изобретатель каналов UNIX и один из основателей традиции UNIX, обобщил философию следующим образом:
«Философия UNIX гласит:
- Пишите программы, которые делают что-то одно и делают это хорошо.
- Пишите программы, которые бы работали вместе.
- Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс».
Обычно эти высказывания сводятся к одному:
* «Делайте что-то одно, но делайте это хорошо».
Из этих трёх принципов только третий является специфичным для UNIX, хотя разработчики UNIX чаще других акцентируют внимание на всех трёх принципах.
Майк Ганцарз: Философия UNIX
В 1994 году Майк Ганцарз объединил свой опыт работы в UNIX (он является членом команды по разработке системы X Window System) с высказываниями из прений, в которых он участвовал со своими приятелями программистами и людьми из других областей деятельности, так или иначе зависящих от UNIX, для создания Философии UNIX, которая сводится к 9 основным принципам:
- Красиво — небольшое.
- Пусть каждая программа делает что-то одно, но хорошо.
- Стройте прототип программы как можно раньше.
- Предпочитайте переносимость эффективности.
- Храните данные в простых текстовых файлах.
- Извлекайте пользу из уже существующих программных решений.
- Используйте языки сценариев для уменьшения трудозатрат и улучшения переносимости.
- Избегайте пользовательских интерфейсов, ограничивающих возможности пользователя по взаимодействию с системой.
- Делайте каждую программу «фильтром».
10 дополнительных принципов
Они не снискали всеобщего признания в качестве частей философии UNIX и в некоторых случаях являлись предметом горячих споров (монолитное ядро против микроядра):
- Позвольте пользователю настраивать окружение.
- Делайте ядра операционной системы маленькими и легковесными.
- Используйте нижний регистр и придерживайтесь кратких названий.
- Не храните тексты программ в виде распечаток («Спасите деревья!»).
- Не сообщайте пользователю об очевидном («Молчание — золото»).
- Разбивайте сложные задачи на несколько простых, выполняемых параллельно («Мыслите „параллельно“»).
- Объединённые части целого есть нечто большее, чем просто их сумма.
- Ищите 90-процентное решение.
- Если можно не добавлять новую функциональность, не добавляйте её («Чем хуже, тем лучше»).
- Мыслите иерархически.
Эрик Реймонд: Искусство программирования в UNIX. «Принцип KISS»
Эрик С. Рэймонд в своей книге «Искусство программирования в UNIX» подытожил философию UNIX как широко используемую инженерную философию «Делай это проще, глупец» (Принцип KISS). Затем он описал, как эта обобщенная философия применима в качестве культурных норм UNIX. И это несмотря на то, что несложно найти несколько нарушений в следующей текущей философии UNIX:
- Правило модульности: Пишите простые части, соединяемые понятными интерфейсами.
- Правило ясности: Ясность лучше заумности.
- Правило композиции: Разрабатывайте программы так, чтобы их можно было соединить с другими программами.
- Правило разделения: Отделяйте правила (policy) от механизма (mechanism); отделяйте интерфейс от движка (engine).
- Правило простоты: Нацельтесь на простоту; добавляйте сложность, только где необходимо.
- Правило экономности: Пишите большую программу только когда другими средствами выполнить необходимую задачу не удастся.
- Правило прозрачности: Разрабатывайте прозрачные программы для облегчения последующего пересмотра и отладки.
- Правило надёжности: Надёжность — дитя прозрачности и простоты.
- Правило представления: Храните знания в данных так, чтобы логика программы была тупой и надёжной.
- Правило наименьшего удивления: При разработке интерфейса всегда делайте как можно меньше неожиданных вещей.
- Правило тишины: Если программе нечего сказать, пусть лучше молчит.
- Правило восстановления: Если надо выйти из строя, делайте это шумно и как можно быстрее.
- Правило экономии: Время программиста дорого; сократите его, используя машинное время.
- Правило генерации: Избегайте ручного набора кода; при любом удобном случае пишите программы, которые бы писали программы.
- Правило оптимизации: Сначала — опытный образец, потом — «причесывание». Добейтесь стабильной работы, только потом оптимизируйте.
- Правило многообразия: Отвергайте все утверждения об «единственно правильном пути».
- Правило расширяемости: Разрабатывайте для будущего. Оно наступит быстрее, чем вы думаете.
Большинство из этих норм принимается вне сообщества UNIX — даже если это было не так во времена, когда они впервые были применены в UNIX, то впоследствии это стало так. К тому же много правил не являются уникальными или оригинальными для сообщества UNIX. Тем не менее, приверженцы программирования в UNIX склоняются к тому, чтобы принять сочетание этих идей в качестве основ для стиля UNIX.
Подробнее см.:
Философия UNIX
₪ Back to home ₪
© Rami Rosenfeld, 2022. CC BY-NC-ND 4.0.