Справочная: «философия Unix» — базовые рекомендации, эволюция и немного критики

Расскажем, в чем суть философии, кто её сформулировал, расширял и критиковал по ходу развития.

(Кстати, вчера вышел и наш очередной TL;DR-дайджест про «удаленку» и личную ИБ.)


Фото — Med Badr Chemmaoui — Unsplash
 

Основные принципы


Считается, что первым их сформулировал Дуглас Макилрой (Douglas McIlroy), автор конвейера Unix, в 1978 году. Он опубликовал свои замечания в журнале Bell System Technical Journal — экземпляр до сих пор есть в сети. Позже Дуглас выделил три базовых момента:
 
  • (1) Каждая программа на Unix должна специализироваться на определенной задаче;
  • (2) Вывод программ станет вводом других, неизвестных на момент разработки первых;
  • (3) Текст — универсальный интерфейс для межпрограммного взаимодействия.
 

Развитие мысли


Со временем первые «правила» дополняли и переосмысливали. В 1994 году Майк Ганцарз (Mike Gancarz) — один из мейнтейнеров X Window System — расширил их и призывал коллег:
 
  • (4) Эффективнее утилизировать уже доступные программные решения;
  • (5) Чаще применять скриптовые языки для улучшения переносимости ПО;
  • (6) Как можно быстрее переходить от идеи к работающему прототипу;
  • (7) Следить за уровнем сложности интерфейсов и «не перегружать» их.
 
Позже Эрик Рэймонд (Eric Raymond), программист, хакер и сооснователь Open Source Initiative, описал философию единой аббревиатурой — KISS (Keep it simple, stupid).


Фото — Kristian BjornardCC BY-SA — Flickr.com
 

Минутка метафор и критики


Одно из интересных замечаний мы нашли в книге «Пособие для ненавидящих Unix» (полный текст в PDF), где вспоминают Ричарда Гэбриела (Richard P. Gabriel) и его эссе «Чем хуже, тем лучше».

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

Но несмотря на ставку на простоту и даже прямое указание на работу с UI (пункты 3 и 7 выше), в статье под названием «Правда о Unix: ужасающие интерфейсы» Дональд Норман (Donald Norman), ученый и соучредитель Nielsen Norman Group, раскритиковал философию Unix за отсутствие какого-либо внимания к пользовательскому опыту. В замечаниях он отталкивался от своей экспертизы в области когнитивной инженерии, выделил проблемы с точки зрения работы команд и функций, плюс — сформулировал собственные рекомендации по дизайну систем:
 
  • согласованность принципов проектирования на всех этапах разработки системы;
  • наличие понятной для пользователя модели работы системы (mental model);
  • возможность получения им мнемонических подсказок при работе с ней.


Фото — Rudolf SchubaCC BY — Flickr.com

Другая критика философии Unix строилась вокруг отдельных особенностей файловой системы NFS (например, «костылей» с Network Lock Manager сервисом lockd — стр.60-61) и обсуждения текстовых интерфейсов. Но были и попытки концептуальных баталий на этот счет.

Так, по словам Роберта Пайка (Robert Pike), автора UTF-8 и выходца из Bell Labs (как и Дуглас Макилрой), на определенном этапе развития философии Unix было нецелесообразно писать программы, (1) выполняющие только одну задачу. Вот развернутый тред о его замечаниях на Slashdot'е, в котором Пайк делится и другой критикой Unix. Например, говорит об отсутствии высокого уровня интеграции при сетевом взаимодействии машин и сравнивает выбор этой системы с ограничиваем себя в прослушивании исключительно композиций Дэвида Кэссиди (David Cassidy).
 
Как вы думаете, чем можно было бы дополнить базовые моменты в философии Unix?
 

Дополнительное чтение по теме:

Вся история Linux. Часть I: с чего все началось
Вся история Linux. Часть II: корпоративные перипетии
История Linux. Часть III: новые рынки и старые «враги»
Бенчмарки для Linux-серверов