13.4. Необходимый размер программы

13.4. Необходимый размер программы

Для Unix-идеологии использования небольших, точных инструментов характерна скрытая двойственность; фон настолько неявный, что многие Unix-практики не замечают его или замечают не больше, чем рыба замечает воду, в которой плавает. Этим фоном являются интегрирующие структуры приложений (frameworks).

Небольшие точные инструменты в Unix-стиле сталкиваются с трудностями при совместном использовании данных, если они не находятся внутри структуры, облегчающей их взаимодействие. Emacs является примером такой структуры, а единообразное управление общим контекстом достигается ценой необязательной сложности Emacs. Практическое влияние единообразного управления общим контекстом заключается в том, что пользователь не обременен проблемами низкоуровневого присваивания имен и управления ресурсами.

В Unix старой школы единственной интегрирующей структурой были конвейеры, перенаправление и shell. Интеграция осуществлялась с помощью сценариев, а общим контекстом была (по существу) сама файловая система. Однако на этом развитие не закончилось.

Программа Emacs объединила файловую систему с множеством текстовых буферов и вспомогательных процессов, почти совершенно оставляя структуру shell позади. Редактор Wily также предполагает использование буферов и вспомогательных процессов, но содержит в себе структуру shell. Современные настольные среды предоставляют GUI-интерфейсам структуру для обмена данными и тоже оставляют структуру shell позади. Каждая интегрирующая структура приложений имеет свои сильные и слабые стороны. Структуры приложений стали "жилищами" для множества инструментальных средств — shell для сценариев, Emacs для Lisp-режимов, а настольные среды для групп приложений, обменивающихся данными в GUI как посредством технологии "перетащить и отпустить", так и с помощь более "эзотерических" способов, таких как объектные брокеры.

Это выдвигает правило минимальности: необходимо выбирать общий контекст, которым требуется управлять, и создавать настолько малые программы, насколько позволяют данные границы. То есть "так просто, как только возможно, но не проще", но основное внимание в данном случае уделяется выбору общего контекста. Правило применимо не только к структурам, но и к приложениям и программным системам.

Однако очень легко ошибиться при определении необходимых размеров общего контекста. Над разработчиком довлеет сила, выраженная законом Завински, - склонность приложений к совместному использованию контекста в целях удобства использования. Вовсе нетрудно, в конце концов, получить чрезмерный размер, слишком большое количество предположений и писать большие программы с излишней сложностью. Так, URL mailto: (типичный пример 1990-х годов) вызвал рост количества крупных почтовых клиентов, встроенных в Web-браузеры.

Средство исправления данной тенденции приходит прямо из "священных книг" Unix — правило экономии: писать большую программу следует только в том случае, когда после демонстрации становится ясно, что ничего другого не остается, т.е. когда попытки расчленить проблему были предприняты, но потерпели неудачу. Данный принцип предполагает строгий скептицизм в отношении больших программ и стратегию, позволяющую избежать их создания: прежде всего, следует искать решение на основе небольшой программы. Если одна небольшая программа не решает задачу, необходимо попытаться создать инструментарий, состоящий из небольших взаимодействующих программ внутри существующей структуры. И только в том случае, если оба подхода оказались безуспешными, традиции Unix позволяют разработчику создать крупную программу (или новую структуру приложения), не чувствуя себя при этом побежденным сложностью проектной задачи.

При написании интегрирующей структуры приложений необходимо помнить правило разделения. Структуры приложений должны быть механизмом и заключать в себе как можно меньше политики. В большинстве случаев вообще без политики. Необходимо выделять как можно больше поведения в модули, которые используют структуру приложений. Одним из преимуществ написания или повторного использования структуры является то, что она позволяет выделить код, который в противном случае состоял бы из огромных монолитов политики, в отдельные модули, режимы или инструментальные средства, т.е. блоки, которые можно полезно комбинировать с другими.

Данные правила эмпирические, однако конфликт в сердце Unix-традиции не может быть разрешен несколькими априорными рецептами по оптимальному размеру любого заданного проекта. Обстоятельства изменяют решения, а гармония правильного мышления и хорошего стиля — основная задача разработчиков программного обеспечения. Аналогично тому, как в Дзэн путешествие является целью, "просветления" приходится каждый раз достигать заново путем повседневной практики.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Продленный размер

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Продленный размер Продленный размер подобен базовому: для его создания необходим существующий линейный или угловой размер и вы можете разместить множество размерных линий с помощью одной команды. Единственное различие состоит в том, что, в то время как размеры с базовой


Параллельный размер

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

Параллельный размер С помощью команды DIMALIGNED создается размер, параллельный измеряемой линии объекта; это позволяет выровнять размерную линию по объекту. Размер создается подобно горизонтальному, вертикальному и повернутому, при этом размерная линия расположена


Параллельный размер

Из книги AutoCAD 2009. Начали! автора Соколова Татьяна Юрьевна

Параллельный размер С помощью команды DIMALIGNED создается размер, параллельный измеряемой линии объекта; это позволяет выровнять размерную линию по объекту. Размер создается подобно горизонтальному, вертикальному и повернутому, при этом размерная линия расположена


13.3. Необходимый и достаточный размер редактора

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

13.3. Необходимый и достаточный размер редактора Ниже приведен анализ учебных примеров с использованием категорий сложности, сформулированных в начале данной


13.3. Необходимый и достаточный размер редактора

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

13.3. Необходимый и достаточный размер редактора Ниже приведен анализ учебных примеров с использованием категорий сложности, сформулированных в начале данной


13.4. Необходимый размер программы

Из книги Фотоприколы с помощью Photoshop автора Гурский Юрий Анатольевич

13.4. Необходимый размер программы Для Unix-идеологии использования небольших, точных инструментов характерна скрытая двойственность; фон настолько неявный, что многие Unix-практики не замечают его или замечают не больше, чем рыба замечает воду, в которой плавает. Этим фоном


Урок 10 Слои как необходимый атрибут многослойных изображений

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

Урок 10 Слои как необходимый атрибут многослойных изображений До нынешнего момента мы рассматривали изображения как нечто скучное и плоское, что-то напоминающее лист бумаги. На самом же деле они могут иметь гораздо более сложную форму. Вспомните такую вещь, как


Размер диаметра

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Размер диаметра Команда DIMDIAMETER строит диаметр окружности или дуги. Команда вызывается из падающего меню Dimension ? Diameter или щелчком на пиктограмме Diameter на панели инструментов Dimension.Запросы команды


Размер страницы и размер кэша по умолчанию

Из книги Защита от хакеров корпоративных сетей автора Автор неизвестен

Размер страницы и размер кэша по умолчанию При восстановлении вы можете изменить размер страницы, включив в команду переключатель -р[age_size], за которым следует целое число, задающее размер в байтах. Допустимые размеры страниц см. в табл. 38.2.В этом примере gbak восстанавливает


Необходимый набор инструментов

Из книги Цифровой журнал «Компьютерра» № 171 автора Журнал «Компьютерра»

Необходимый набор инструментов Необходимый для хакинга набор инструментальных средств отличается от средств, используемых для сетевого или программного анализа. Для реализации большинства способов хакинга аппаратных средств не требуются лаборатории мирового класса.


Джипег, подвинься! Веппи как единственный необходимый графический формат Евгений Золотов

Из книги 1С: Бухгалтерия 8.2. Понятный самоучитель для начинающих автора Гладкий Алексей Анатольевич

Джипег, подвинься! Веппи как единственный необходимый графический формат Евгений Золотов Опубликовано 29 апреля 2013 Возможно, вы никогда не слышали словечка «веппи», но теперь будьте готовы встречать его всё чаще — до тех пор, пока оно не войдёт в


Размер головного мозга и размер социального окружения

Из книги Цифровая фотография от А до Я [2-е издание] автора Газаров Артур Юрьевич

Размер головного мозга и размер социального окружения Дискуссии по поводу взаимосвязи между размером головного мозга какого-либо организма и размером группы, к которой этот организм принадлежит, ведутся нейробиологами уже давно. При этом взаимосвязь с социальной


Размер фильтра

Из книги Графология XXI века автора Щеголев Илья Владимирович

Размер фильтра Если у объектива нет резьбы либо резьба «сорвана», поможет переходник фирмы Cokin, который надевается на объектив и крепится тремя винтиками. Если объективов несколько, они, скорее всего, имеют разный диаметр. Однако покупать несколько поляризационных


10. Размер букв

Из книги Windows 10. Секреты и устройство автора Алмаметов Владимир

10. Размер букв Признаки слева направо (рис. 190):• размер букв большой;• размер букв маленький;• размер букв очень большой;• размер букв очень маленький; Рис. 190• размер букв