See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Философия UNIX — Википедия

Философия UNIX

Материал из Википедии — свободной энциклопедии

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

Содержание

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

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

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

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

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

[править] Пайк: Стиль программирования на C

Роб Пайк (англ. Rob Pike) предложил следующие «правила» Стиль программирования на C в качестве аксиом программирования. Одновременно эти правила могут выражать точку зрения на философию UNIX:

  • Правило 1: Вы не знаете, где программа начнет тормозить. Узкие места возникают в неожиданных местах, поэтому не стройте догадки и изучайте скорость работы программы до тех пор, пока не удостоверитесь, что узкое место найдено.
  • Правило 2: Измерение. Не оптимизируйте скорость до тех пор, пока ее не измерите, и даже если вы проверили какую-то часть кода с узким местом, проверьте остальные.
  • Правило 3: Изощрённые алгоритмы являются медленными, если n мало, а n обычно мало. В изощрённых алгоритмах присутствуют большие константы. До тех пор, пока вы не убедитесь, что n часто становится большим, избегайте изощрённости. (Даже если n становится большим, вначале используйте правило 2).
  • Правило 4: Изощрённые алгоритмы чаще подвержены ошибкам, чем их простые аналоги, также их гораздо сложнее реализовать. Используйте простые алгоритмы наряду с использованием простых структур данных.
  • Правило 5: Данные преобладают. При правильной и хорошо организованной структуре данных, алгоритмы становятся очевидными. Структуры данных, а не алгоритмы, являются центральной частью в программировании.
  • Правило 6: Правила 6 нет.

Правила 1 и 2 Пайка перефразированы Тони Хоаром (Tony Hoare) в известную аксиому «Преждевременная оптимизация — корень всех зол». Кен Томпсон (Ken Thompson) перефразировал правила 3 и 4 Пайка так: «Если сомневаетесь, используйте перебор всех возможных комбинаций». Правила 3 и 4 являются частными положениями философии дизайна KISS: Keep It Simple, Stupid (будь попроще, тупица). Правило 5 было предварительно сформулировано Фредом Бруксом (Fred Brooks) в книге «Мифический человеко-месяц». Правило 5 часто сокращают до «пиши тупой код, который использует умные данные». Правило 6 взято из шутки Брюса, прозвучавшей в «Летающем цирке Монти Пайтона».

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

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

  1. Маленькое прекрасно.
  2. Пусть каждая программа делает одну вещь, но хорошо.
  3. Собирайте прототип как можно раньше.
  4. Предпочитайте переносимость эффективности.
  5. Храните данные в простых текстовых файлах.
  6. Используйте программные рычаги для достижения цели.
  7. Используйте сценарии командной строки для улучшения функционала и переносимости.
  8. Избегайте связывающего программу (captive) пользовательского интерфейса.
  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 никогда не скажет “пожалуйста“.»Роб Пайк.

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

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

На других языках


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -