Jump to content

Философия Unix

(Перенаправлено из Философия инструментов )
Кен Томпсон и Деннис Ритчи , ключевые сторонники философии Unix

Философия Unix , созданная Кеном Томпсоном , представляет собой набор культурных норм и философских подходов к минималистской модульной разработке программного обеспечения . Он основан на опыте ведущих разработчиков Unix операционной системы . Ранние разработчики Unix сыграли важную роль во внедрении концепций модульности и возможности повторного использования в практику разработки программного обеспечения, породив движение « программных инструментов ». Со временем ведущие разработчики Unix (и программ, работающих на ней) установили набор культурных норм разработки программного обеспечения; эти нормы стали столь же важными и влиятельными, как сама технология Unix, и были названы «философией Unix».

Философия Unix делает упор на создание простого, компактного, понятного, модульного и расширяемого кода, который может легко поддерживаться и перепрофилироваться разработчиками, не являющимися его создателями. Философия Unix отдает предпочтение возможности компоновки , а не монолитному дизайну .

Источник

[ редактировать ]

Философия Unix описана Дугом Макилроем. [ 1 ] в Техническом журнале Bell System за 1978 год: [ 2 ]

  1. Заставьте каждую программу хорошо выполнять одну задачу. Чтобы выполнить новую работу, создавайте заново, а не усложняйте старые программы, добавляя новые «функции».
  2. Ожидайте, что выходные данные каждой программы станут входными данными для другой, пока еще неизвестной программы. Не загромождайте вывод лишней информацией. Избегайте строго столбчатых или двоичных форматов ввода. Не настаивайте на интерактивном вводе.
  3. Проектируйте и создайте программное обеспечение, даже операционные системы, для опробования на ранних стадиях, в идеале в течение нескольких недель. Не стесняйтесь выбрасывать неуклюжие детали и собирать их заново.
  4. Используйте инструменты вместо неквалифицированной помощи, чтобы облегчить задачу программирования, даже если вам придется отклониться от пути для создания инструментов и ожидать, что некоторые из них выкинете после того, как закончите их использовать.

Позже это было резюмировано Питером Х. Салусом в книге «Четверть века Unix» (1994): [ 1 ]

  • Пишите программы, которые делают одно дело и делают это хорошо.
  • Пишите программы для совместной работы.
  • Пишите программы для обработки текстовых потоков, потому что это универсальный интерфейс.

В своей статье по Unix 1974 года Ричи и Томпсон приводят следующие соображения по поводу дизайна: [ 3 ]

Среда программирования UNIX

[ редактировать ]

В предисловии к книге 1984 года «Среда программирования UNIX» Брайан Керниган и Роб Пайк , оба из Bell Labs , дают краткое описание дизайна Unix и философии Unix: [ 4 ]

Роб Пайк , соавтор книги «Среда программирования UNIX»

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

Авторы далее пишут, что их цель этой книги — «рассказать философию программирования UNIX». [ 4 ]

Проектирование программ в среде UNIX

[ редактировать ]
Брайан Керниган подробно написал о философии Unix.

В октябре 1984 года Брайан Керниган и Роб Пайк опубликовали статью под названием « Проектирование программ в среде UNIX» . В этой статье они критикуют увеличение количества программных опций и функций, присутствующих в некоторых новых системах Unix, таких как 4.2BSD и System V , и объясняют философию Unix программных инструментов, каждый из которых выполняет одну общую функцию: [ 5 ]

Большая часть возможностей операционной системы UNIX обусловлена ​​стилем разработки программ, который делает программы простыми в использовании и, что более важно, легко комбинируемыми с другими программами. Этот стиль получил название использования программных инструментов и больше зависит от того, как программы вписываются в среду программирования и как их можно использовать с другими программами, чем от того, как они спроектированы внутри. [...] Этот стиль был основан на использовании инструментов : использование программ по отдельности или в сочетании для выполнения работы, а не выполнение ее вручную, монолитными самодостаточными подсистемами или специальными, одноразовыми программы.

Авторы противопоставляют такие инструменты Unix, как cat с более крупными наборами программ, используемыми другими системами. [ 5 ]

Дизайн cat типичен для большинства программ UNIX: он реализует одну простую, но общую функцию, которую можно использовать во многих различных приложениях (в том числе во многих, не предусмотренных первоначальным автором). Другие команды используются для других функций. Например, существуют отдельные команды для задач файловой системы, таких как переименование файлов, их удаление или определение их размера. Другие системы вместо этого объединяют их в одну команду «файловой системы» со своей внутренней структурой и собственным командным языком. ( PIP Программа копирования файлов [ 6 ] такой подход не обязательно хуже или лучше, но он определенно . противоречит философии UNIX

Дуг Макилрой о программировании для Unix

[ редактировать ]
Дуг Макилрой (слева) с Деннисом Ричи

Макилрой , тогдашний руководитель исследовательского центра вычислительных наук Bell Labs и изобретатель канала Unix , [ 7 ] резюмировал философию Unix следующим образом: [ 1 ]

Это философия Unix: пишите программы, которые делают одно дело и делают это хорошо. Пишите программы для совместной работы. Пишите программы для обработки текстовых потоков , потому что это универсальный интерфейс.

Помимо этих утверждений, он также подчеркнул простоту и минимализм в программировании для Unix: [ 1 ]

Понятие «замысловатые и красивые сложности» — почти оксюморон. Программисты Unix соревнуются друг с другом за «простые и красивые» награды — пункт, который подразумевается в этих правилах, но его стоит сделать явным.

Макилрой, наоборот, раскритиковал современную Linux за раздутость программного обеспечения , отметив, что «обожающие поклонники Linux скормили вкусности Linux до удручающего состояния ожирения ». [ 8 ] Он противопоставляет это более раннему подходу, использованному в Bell Labs при разработке и пересмотре Research Unix : [ 9 ]

Все было маленьким... и мое сердце замирает от Linux, когда я вижу его размер. [...] Страница руководства , которая на самом деле раньше была страницей руководства , теперь представляет собой небольшой том с тысячей опций... Раньше мы сидели в комнате Unix и говорили: «Что мы можем выкинуть?» Почему существует этот вариант? Часто это происходит потому, что в базовом проекте есть некоторый недостаток — вы не попали в нужную точку дизайна. Вместо добавления опции подумайте о том, что заставило вас добавить эту опцию.

Делай одно дело и делай это хорошо

[ редактировать ]

Как заявил Макилрой и является общепринятым в сообществе Unix, всегда ожидалось, что программы Unix будут следовать концепции DOTADIW, или «Делай одно дело и делай это хорошо». В Интернете имеется ограниченное количество источников аббревиатуры DOTADIW, но она подробно обсуждается во время разработки и упаковки новых операционных систем, особенно в сообществе Linux.

Патрик Волкердинг , руководитель проекта Slackware Linux , использовал этот принцип проектирования, критикуя архитектуру systemd , заявив, что «попытка управлять службами, сокетами, устройствами, монтированием и т. д. в рамках одного демона бросает вызов всему Концепция Unix: делать что-то одно и делать это хорошо». [ 10 ]

17 правил Unix Эрика Рэймонда

[ редактировать ]

В своей книге «Искусство программирования для Unix» , впервые опубликованной в 2003 году, [ 11 ] Эрик С. Рэймонд (сторонник открытого исходного кода и программист) резюмирует философию Unix как принцип KISS : «Будь проще, глупый». [ 12 ] Он предлагает ряд правил проектирования: [ 1 ]

  • Создавайте модульные программы
  • Пишите читаемые программы
  • Используйте композицию
  • Отделить механизмы от политики
  • Пишите простые программы
  • Пишите небольшие программы
  • Пишите прозрачные программы
  • Пишите надежные программы
  • При необходимости усложняйте данные, а не программу
  • Опирайтесь на ожидаемые знания потенциальных пользователей
  • Избегайте ненужного вывода
  • Пишите программы, которые выходят из строя, так, чтобы их было легко диагностировать.
  • Цените время разработчика, а не машинное время
  • Пишите абстрактные программы, которые генерируют код вместо того, чтобы писать его вручную.
  • Создайте прототип программного обеспечения перед его доработкой
  • Пишите гибкие и открытые программы.
  • Сделайте программу и протоколы расширяемыми.

Майк Ганцарц: Философия UNIX

[ редактировать ]

В 1994 году Майк Ганцарц , член Unix Engineering Group (UEG) корпорации Digital Equipment Corporation , опубликовал «Философию UNIX», основанную на его собственной разработке порта Unix ( Ultrix ) в DEC в 1980-х годах и обсуждениях с коллегами. Он также является членом команды разработчиков X Window System и автором Ultrix Window Manager (uwm).

Книга посвящена портированию UNIX на разные компьютеры во время Unix-войн 1980-х годов и описывает его философию, согласно которой переносимость должна быть более важной, чем эффективность использования нестандартных интерфейсов для аппаратного обеспечения и графических устройств.

Девять основных «принципов», которые он считает важными, таковы:

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

«Чем хуже, тем лучше»

[ редактировать ]

Ричард П. Габриэль предполагает, что ключевым преимуществом Unix было то, что она воплощала в себе философию дизайна, которую он назвал «чем хуже, тем лучше», в которой простота интерфейса и реализации более важны, чем любые другие атрибуты системы, включая корректность, последовательность и полнота. Габриэль утверждает, что этот стиль дизайна имеет ключевые эволюционные преимущества, хотя и ставит под сомнение качество некоторых результатов.

Например, на заре Unix использовалось монолитное ядро ​​(это означало, что пользовательские процессы выполняли системные вызовы ядра в пользовательском стеке). Если сигнал был доставлен процессу, когда он был заблокирован при длительном вводе-выводе в ядре, обработка ситуации была неясной. Обработчик сигнала не мог быть выполнен, когда процесс находился в режиме ядра с конфиденциальными данными ядра в стеке.

В статье 1981 года, озаглавленной «Правда о Unix: пользовательский интерфейс ужасен ». [ 13 ] опубликованный в Datamation , Дон Норман раскритиковал философию дизайна Unix за отсутствие внимания к пользовательскому интерфейсу. Опираясь на свой опыт работы в области когнитивной науки и с точки зрения современной на тот момент философии когнитивной инженерии , [ 14 ] он сосредоточился на том, как конечные пользователи понимают и формируют личную когнитивную модель систем — или, в случае Unix, не понимают, в результате чего катастрофические ошибки (например, потеря часа работы) слишком просты.

В подкасте On the Metal Джонатан Блоу раскритиковал философию UNIX как устаревшую. [ 15 ] Он утверждал, что объединение модульных инструментов приводит к созданию очень неэффективных программ. Он говорит, что философия UNIX страдает от тех же проблем, что и микросервисы : без всеобщего контроля большие архитектуры оказываются неэффективными и неэффективными.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Перейти обратно: а б с д и Раймонд, Эрик С. (2004). «Основы философии Unix» . Искусство программирования для Unix . Addison-Wesley Professional (опубликовано 23 сентября 2003 г.). ISBN  0-13-142901-9 . Проверено 1 ноября 2016 г.
  2. ^ Дуг Макилрой ; Э. Н. Пинсон; Б. А. Таг (8 июля 1978 г.). «Система разделения времени Unix: Предисловие» . Технический журнал Bell System . Лаборатории Белла: 1902–1903 гг.
  3. ^ Деннис Ричи ; Кен Томпсон (1974), «Система разделения времени UNIX» (PDF) , Communications of the ACM , 17 (7): 365–375, doi : 10.1145/361011.361061 , S2CID   53235982
  4. ^ Перейти обратно: а б Керниган, Брайан В. Пайк, Роб. Среда программирования UNIX. 1984. VIII
  5. ^ Перейти обратно: а б Роб Пайк; Брайан В. Керниган (октябрь 1984 г.). «Проектирование программ в среде UNIX» (PDF) . Технический журнал AT&T Bell Laboratories . 63 (8). часть 2 . Проверено 15 декабря 2022 г.
  6. ^ «Руководство по операционной системе CP/M» (PDF) . 1983.
  7. ^ Деннис Ритчи (1984), «Эволюция системы разделения времени UNIX» (PDF) , Технический журнал AT&T Bell Laboratories , 63 (8): 1577–1593, doi : 10.1002/j.1538-7305.1984.tb00054.x
  8. ^ Дуглас Макилрой. «Выступление на церемонии вручения премии Японии Деннису Ритчи, 19 мая 2011 г., Мюррей-Хилл, Нью-Джерси» (PDF) . Проверено 19 июня 2014 г.
  9. ^ Билл МакГонигл. «Происхождение Linux — как началось веселье (2005)» . Проверено 19 июня 2014 г.
  10. ^ «Интервью с Патриком Волкердингом из Slackware» . linuxquestions.org . 07.06.2012 . Проверено 24 октября 2015 г.
  11. ^ Раймонд, Эрик (19 сентября 2003 г.). Искусство программирования для Unix . Аддисон-Уэсли. ISBN  0-13-142901-9 . Проверено 9 февраля 2009 г.
  12. ^ Раймонд, Эрик (19 сентября 2003 г.). «Философия Unix в одном уроке» . Искусство программирования для Unix . Аддисон-Уэсли. ISBN  0-13-142901-9 . Проверено 9 февраля 2009 г.
  13. ^ Норман, Дон (1981). «Правда о Unix: пользовательский интерфейс ужасен» (PDF) . Датаматизация . Том. 27, нет. 12.
  14. ^ «Устная история Unix» . Принстонского университета . История науки
  15. ^ «Подкаст о металле: Джонатан Блоу» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e631d03ef5709a0cff47d763bbe0b4e2__1717664280
URL1:https://arc.ask3.ru/arc/aa/e6/e2/e631d03ef5709a0cff47d763bbe0b4e2.html
Заголовок, (Title) документа по адресу, URL1:
Unix philosophy - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)