(Кстати, вчера вышел и наш очередной 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 Bjornard CC BY-SA Flickr.com
Минутка метафор и критики
Одно из интересных замечаний мы нашли в книге Пособие для ненавидящих Unix (полный текст в PDF), где вспоминают Ричарда Гэбриела (Richard P. Gabriel) и его эссе Чем хуже, тем лучше.
В нем принципам корректности, согласованности и завершенности Гэбриел противопоставил простоту реализации и портирования из философии Unix. А еще сравнил действительно эффективное ПО с эволюционным превосходством вирусов (полный текст эссе на английском).
Но несмотря на ставку на простоту и даже прямое указание на работу с UI (пункты 3 и 7 выше), в статье под названием Правда о Unix: ужасающие интерфейсы Дональд Норман (Donald Norman), ученый и соучредитель Nielsen Norman Group, раскритиковал философию Unix за отсутствие какого-либо внимания к пользовательскому опыту. В замечаниях он отталкивался от своей экспертизы в области когнитивной инженерии, выделил проблемы с точки зрения работы команд и функций, плюс сформулировал собственные рекомендации по дизайну систем:
- согласованность принципов проектирования на всех этапах разработки системы;
- наличие понятной для пользователя модели работы системы (mental model);
- возможность получения им мнемонических подсказок при работе с ней.
Фото Rudolf Schuba CC BY Flickr.com
Другая критика философии Unix строилась вокруг отдельных особенностей файловой системы NFS (например, костылей с Network Lock Manager сервисом lockd стр.60-61) и обсуждения текстовых интерфейсов. Но были и попытки концептуальных баталий: так, по словам Роберта Пайк (Robert Pike), автора UTF-8 и выходца из Bell Labs (как и Дуглас Макилрой), нецелесообразно писать программы, (1) выполняющие только одну задачу (вот развернутый тред о его замечаниях на Slashdot'е).
Как вы думаете, чем можно было бы дополнить базовые моменты в философии Unix?
Дополнительное чтение по теме:
Вся история Linux. Часть I: с чего все началось
Вся история Linux. Часть II: корпоративные перипетии
История Linux. Часть III: новые рынки и старые враги
Бенчмарки для Linux-серверов
Новые публикации у нас на Хабре:
- TL;DR: непривычная дистанционка и вопрос досмотра личных гаджетов
- Кто займется безопасностью открытого ПО новые проекты и их будущее