Введение

Философия разработки программного обеспечения

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

Разработка программ в среде UNIX

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

Авторы противопоставляют инструменты Unix, такие как, более крупным программным пакетам, используемым другими системами. (Примером может служить то, что можно найти в операционных системах, таких как CP/M или RSX-11.) Этот подход не обязательно хуже или лучше, но он, безусловно, противоречит философии UNIX.

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

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

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

В своей книге «Искусство программирования Unix», впервые опубликованной в 2003 году, Эрик С. Реймонд (сторонник открытого исходного кода и программист) резюмирует философию Unix как принцип KISS – «Keep it Simple, Stupid». Он приводит ряд правил проектирования. В статье, опубликованной в Datamation, Дон Норман критиковал философию дизайна Unix за недостаток внимания к пользовательскому интерфейсу. Опираясь на свой опыт в когнитивной науке и с точки зрения современной философии когнитивной инженерии, он сосредоточился на том, как конечные пользователи воспринимают и формируют личную когнитивную модель систем – или, в случае с Unix, не могут её понять, что приводит к катастрофическим ошибкам (например, потере часа работы), которые случаются слишком легко. В подкасте On the Metal Джонатан Блоу подверг критике философию UNIX, назвав её устаревшей. Он утверждал, что объединение модульных инструментов приводит к крайне неэффективным программам. По его мнению, философия UNIX страдает от тех же проблем, что и микросервисы: без общего контроля большие архитектуры оказываются неэффективными.