Справочная: «философия 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-серверов




    Новые публикации у нас на Хабре:



    1cloud.ru
    IaaS, VPS, VDS, Частное и публичное облако, SSL

    Комментарии 1

      +5
      Читал я эту книгу целиком.
      Условно можно разбить на три части.
      Часть первая: смотрите как прикольно можно сделать, если обобщить всё до концепции файла.
      Часть вторая: программисты могут пользоваться этим для своего удобства.
      Часть третья: мы понятия не имеем, как сделать большую и сложную систему для решения задач пользователя. Мы умеем только инструменты для программистов.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое