13.3.3. Является ли Emacs доводом против Unix-традиции?

13.3.3. Является ли Emacs доводом против Unix-традиции?

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

Причиной того, что vi и Emacs никогда не привлекали Unix-программистов старой школы, является то, что эти редакторы уродливы. Возможно, это обвинение — мнение "старой Unix", но если бы оно не защищало своеобразный стиль старой Unix, то "новой Unix" не существовало бы.

Дуг Макилрой.

Нападки пользователей vi на Emacs, наряду с нападками на vi со стороны все еще привязанных к ed радикальных представителей старой школы, — лишь эпизоды в крупном споре, противостоянии изобилия богатства и добродетелей аскетизма. Данный спор связан с конфликтом между стилями Unix старой и новой школ.

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

Иной была Unix старой школы. В Bell Labs были достаточные ресурсы, поэтому Кен не был ограничен требованиями срочного создания продукта. Вспомним оправдание Паскаля за написание длинного письма ввиду того, что у него не было времени, достаточного для написания короткого.

Дуг Макилрой.

С тех пор Unix-программисты поддерживают традицию, в которой изящное превозносится над чрезмерным.

С другой стороны, массивная конструкция Emacs появилась не в Unix, а была создана Ричардом М. Столлменом внутри весьма отличающейся культуры, процветающей в 1970-х годах в лаборатории искусственного интеллекта (Artificial Intelligence Lab) Массачусетского технологического института (MIT). Лаборатория AI MIT была одним из богатейших подразделений академии компьютерных наук Люди учились рассматривать вычислительные ресурсы как дешевые, предвосхищая позицию, которая в течение последующих пятнадцати лет была бы нежизнеспособной в каком-либо другом месте. Столлмен был равнодушен к минимализму, он искал максимальную мощность и простор для своего кода.

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

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

Существует два пути решения данной проблемы. Один — отрицать, что большая программа действительно является большой. Другой путь состоит в развитии способа анализа сложности, который не является догмой.

Мысленный эксперимент с заменой Lisp и библиотек расширения дает возможность по-новому взглянуть на частое обвинение, что Emacs раздут, потому что его библиотека расширений столь велика. Возможно, это так же несправедливо, как заявление о том, что файл /bin/sh раздут, поскольку велика коллекция всех сценариев в системе. Emacs можно было бы считать виртуальной машиной или конструкцией вокруг коллекции небольших, точных инструментов (режимов), которые были написаны на Lisp.

С такой точки зрения главное отличие между shell и Emacs заключается в том, что дистрибьюторы Unix не поставляют вместе с shell все существующие в мире сценарии. Неприязнь к Emacs из-за того, что наличие в нем универсального языка выглядит как распухание кода, приблизительно столь же неразумна, как отказ от использования сценариев ввиду того, что в shell имеются условные операции и циклы. Так же как для использования shell-сценариев не требуется изучать shell, нет необходимости изучать язык Lisp, для того чтобы пользоваться редактором Emacs. Если в Emacs имеется проблема проектирования, то она связана не столько с Lisp-интерпретатором (структурная часть), сколько с тем, что библиотека режимов представляет собой беспорядочное "нагромождение исторических наростов". Однако пользователи могут пренебречь данным источником сложности, так как неиспользуемые компоненты не влияют на их работу.

Этот аргумент весьма удобен. Его можно применять к другим конструкциям, интегрирующим инструментальные средства, таким как (неудобно большие) проекты настольных интегрированных пакетов GNOME и KDE. Что-то в нем притягивает. Кроме того, не следует доверять какой-либо "перспективе", предлагающей столь искусно разрешить все сомнения. Она может оказаться рационализацией и не решить основную проблему.

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

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

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

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

РЕПОРТАЖ: Традиции и динамика

Из книги Журнал «Компьютерра» № 30 от 21 августа 2007 года автора Журнал «Компьютерра»

РЕПОРТАЖ: Традиции и динамика Автор: Илья Щуров VoyagerМожно сказать, что это уже традиция российского сообщества свободного софта – каждое лето собираться в Обнинске и в неформальной, уютной обстановке обсуждать технологические, социальные и философские аспекты движения


Киберпространство является общественным

Из книги Криптоанархия, кибергосударства и пиратские утопии автора Ладлоу Питер

Киберпространство является общественным Развернувшаяся в Соединенных Штатах полемика вокруг Закона о телекоммуникациях 1996 года безжалостно обнажила ограничения «калифорнийской идеологии». Барлоу может, конечно, предаваться мечтаниям об уходе в гиперреальность


Unix-строки (чтение и запись Unix-файлов)

Из книги Советы по Delphi. Версия 1.0.6 автора Озеров Валентин

Unix-строки (чтение и запись Unix-файлов) Данный модуль позволяет читать и записывать файлы формата Unix.unit StreamFile;interfaceUses SysUtils;Procedure AssignStreamFile(var f: text; FileName: String);implementationConst BufferSize = 128;Type TStreamBuffer = Array[1..High(Integer)] of Char; TStreamBufferPointer = ^TStreamBuffer; TStreamFileRecord = Record  Case Integer Of  1: (   Filehandle: Integer;   Buffer:


13.3.3. Является ли Emacs доводом против Unix-традиции?

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

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


20.1. Сущность и случайность в традиции Unix

Из книги Искусство оформления сайта. Практическое пособие автора Бердышев Сергей Николаевич

20.1. Сущность и случайность в традиции Unix Для того чтобы понять, как проектирование в Unix может измениться в будущем, следует начать с рассмотрения того, как стиль Unix программирования изменялся со временем в прошлом. Эта попытка приводит непосредственно к одной из


1.3. Исторические традиции в веб-искусстве

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

1.3. Исторические традиции в веб-искусстве Понятно, что никакой глубокой истории веб-дизайн – столь молодое направление в искусстве, находящееся еще на стадии полуремесла, – не имеет. Однако он имеет солидную предысторию. Если судить по общим тенденциям развития


20.1. Сущность и случайность в традиции Unix

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

20.1. Сущность и случайность в традиции Unix Для того чтобы понять, как проектирование в Unix может измениться в будущем, следует начать с рассмотрения того, как стиль Unix программирования изменялся со временем в прошлом. Эта попытка приводит непосредственно к одной из


У15.2 Является ли окно строкой?

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

У15.2 Является ли окно строкой? Окно содержит ассоциированный с ним текст, представленный атрибутом text типа STRING. Стоит ли отказаться от атрибута и объявить WINDOW наследником класса


9.4.2. Является ли граф связным?

Из книги Цифровой журнал «Компьютерра» № 116 [09.04.2012 — 15.04.2012] автора Журнал «Компьютерра»

9.4.2. Является ли граф связным? Не все графы связные. Иногда нет способа «добраться из одной точки в другую», то есть между двумя вершинами нет никакого пути, составленного из ребер. Связность — это важное свойство графа, его надо уметь вычислять. В связном графе любая


Голубятня: Вымывание традиции Сергей Голубицкий

Из книги Компьютерра PDA N167 (07.04.2012-13.04.2012) автора Журнал «Компьютерра»

Голубятня: Вымывание традиции Сергей Голубицкий Опубликовано 09 апреля 2012 года Культур-повидло сегодня явит собой некое послесловие к голубятне «КГ/АМ», которая (кто бы сомневался!) стала очередным не-в-коня-кормом для говорливой части читательской


Таблица является набором

Из книги Новый ум короля [О компьютерах, мышлении и законах физики] автора Пенроуз Роджер

Таблица является набором Таблица является набором, чья полная спецификация может быть получена из системных таблиц сервером базы данных, когда к таблице происходит обращение из запроса, полученного от клиента. Сервер Firebird выполняет свои собственные внутренние запросы


Решение, что является истинным

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

Решение, что является истинным На рис. 21.1 показаны возможные результаты вычисления двух предикатов из предыдущего примера.В нашем примере вначале проверяется (HIRE_DATE > CORRENT_DATE - 366), потому что это самый левый предикат. Если бы у него были вложенные предикаты, то сначала


Чем TDD не является

Из книги автора

Чем TDD не является При всех своих достоинствах TDD – не религия и не панацея. Выполнение трех законов не гарантирует ни одного из перечисленных преимуществ. Плохой код можно написать даже при предварительном написании тестов. Да и сами тесты тоже могут быть написаны