480
auto
(Кстати, вчера вышел и наш очередной 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 (как и Дуглас Макилрой), на определенном этапе развития философии Unix было нецелесообразно писать программы, (1) выполняющие только одну задачу. Вот развернутый тред о его замечаниях на Slashdot'е, в котором Пайк делится и другой критикой Unix. Например, говорит об отсутствии высокого уровня интеграции при сетевом взаимодействии машин и сравнивает выбор этой системы с ограничиваем себя в прослушивании исключительно композиций Дэвида Кэссиди (David Cassidy).
Как вы думаете, чем можно было бы дополнить базовые моменты в философии Unix?
Дополнительное чтение по теме:
Вся история Linux. Часть I: с чего все началось
Вся история Linux. Часть II: корпоративные перипетии
История Linux. Часть III: новые рынки и старые «враги»
Бенчмарки для Linux-серверов