Читаем Ричард Столлман и революция свободного программного обеспечения полностью

Впечатлённый этим изящным хаком, Столлман по возвращении в МТИ задумался о том, чтобы улучшить TECO в похожем ключе. В коде редактора он нашёл функцию Control-R, написанную Карлом Миккельсоном, которая вызывалась нажатием одноимённых клавиш. Эта функция переключала TECO в более интерактивный режим, но ограничивалась только 5 строками, и потому не давала заметной разницы с обычным режимом. Столлман отредактировал функцию так, чтобы можно было использовать весь экран, и расширил её одной небольшой, но очень мощной возможностью задавать произвольные команды TECO на произвольные комбинации клавиш – то есть, добавил в редактор так называемые “макросы”. У опытных пользователей TECO уже скопились файлы с самыми актуальными и полезными командами, так что Ричард в своём хаке сделал возможным подключать и эти файлы в качестве макросов. В результате получился полноценный WYSIWYG-редактор, который можно было ещё и программировать. “Это был прорыв”, – говорит Гай Стил, один из тогдашних хакеров Лаборатории. [57]

Столлман вспоминает, как внедрение макросов породило целый взрыв улучшений. “Каждый стремился автоматизировать свою работу наборами макросов. Ими постоянно обменивались и улучшали их, делая всё более мощными и универсальными. Наборы этих макросов мало-помалу становились самостоятельными системными программами”.[58]

Началась настоящая макросомания, даже сам редактор TECO стал восприниматься как придаток к макросам. “Мы уже считали его языком программирования, а не текстовым редактором”, – рассказывает Столлман. Пользователи получали огромное удовольствие от написания макросов и их обсуждения. [59]

Спустя пару лет начали проявляться негативные последствия неконтролируемого “макросного взрыва” – в частности, огромное количество несовместимостей. “Это было вавилонское столпотворение”, – говорит Гай Стил. По его словам, эти последствия угрожали основе хакерской этики – коллективной работе над программами, когда каждый может открыть и улучшить программу любого другого хакера. “Иногда лучший способ показать кому-то, как надо написать тот или иной код – просто сесть и написать его самому”, – объясняет Стил.

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

Это изрядно огорчало Ричарда, и он занялся решением проблемы. Он взял 4 разных комплекта макросов, проанализировал их и выстроил диаграмму популярности команд и их сочетаний. Также он начал наблюдать за работой других хакеров.

“Он смотрел на мой экран из-за плеча и расспрашивал о моих действиях”, – вспоминает Стил.

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

“Я обычно говорю, что первые 0,001 процента решения той проблемы – моя заслуга, а Столлман лишь довёл дело до конца”, – смеётся Стил.

Столлман дал и название новому проекту: Emacs, сокращение от “editing macros” или “редактирование макросами”. Название отражало эволюционный скачок, который случился двумя годами ранее при изобретении макросов. Нашлось в названии место и чисто техническим соображениям удобства – на компьютерах Лаборатории не было программ, название которых начиналось бы на “е”, поэтому достаточно было ввести одну эту букву, чтобы автодополнение вызвало Emacs. В очередной раз хакерская жажда эффективности оставила свой след.[60]

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

“С одной стороны, мы пытались создать единую систему команд, с другой – не ограничивать её расширяемость, потому что программируемость была крайне важна для нас”, – вспоминает Стил.

Перейти на страницу:

Похожие книги