Готовый перевод Let Over Lambda - 50 Years of Lisp / Let Over Lambda - 50 лет Lisp-у: Приложение D - Лисп Редакторы

D.1 emacs

Редактировани - это деятельность, связанная с изменением формулировок.
- Алан Перлис

Нет такого способа выразиться так, чтобы не обидеть кого-либо, поэтому я буду грубым: я считаю, что emacs убог. И хотя emacs очень гибкий и мощный редактор с богатой историей, я бы никогда не использовал его. Конечно, это лично моё очень маленькое мнение. Подавляющее большинство лисп программистов в мире любят emacs и его программируемую лисп архитектуру. Существует среда называющаяся ILISP, которая позволяет вам использовать REPL из редактора, раскрашивание лисп синтаксиса, авто-завершение лисп форм, основывающееся на содержимом вашего текущего пакета и так далее, но всё равно, я бы никогда не использовал его.

Emacs включает в себя полную лисп среду под названием elisp. Elisp - это не-лексический лисп на основе которого люди строят большие и сложные лисп приложения. Эти приложения позволяют вам выполнять всё, начиная с автоматического внесения изменений в исходный код над которым вы работаете, до навигации по web-у и проверки вашей почты изнутри редактора. Это очень мощное свойство исполнять произвольный лисп код во время редактирования может изменить ваш способ программирования в лучшую или в худшую сторону, но всё равно, я бы никогда не использовал его.

Возникает, как я её называю, ловушка emacs-а. Из каждого предложения, что я сказал о emacs-е, кажется что emacs весьма восхитителен. Настолько восхитителен, что когда умные программисты пробуют его и находят его недостаточно восхитительным (в смысле недостаточной помощи при кодинге), то они как-то упускают очевидный вывод что проблема может не заслуживать поиска решения и вместо этого начинают думать над способами достижения потенциальной восхитительности. Ловушка emacs-а явилась причиной, по которой многие умные программисты тратили бесчисленные часы на конфигурирование и запоминание клавиатурных сочетаний, настройку цветов синтаксиса и писали множество бесполезных elisp скриптов.

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

А как насчёт Блабоподобных Интегрированных Сред Разработки (Integrated Development Environrnents - IDE)? IDE - обычно громоздкие, переусложнённые клоны emacs-а, которые не предоставляют вам возможность лисп модицикаций, отображают вам все, сбивающие с толку, настройки которые даже менее полезны чем в emacs-е. По сравнению с emacs-ом, большинство IDE - это бедная реализация плохой концепции - ограниченные редакторы для ограниченных языков.

Проблема emacs-а в его противоположной философии. Он рассматривает редактирование как самоцель, а не как средство. Само по себе редактирование не интересный процесс; интересно то, что мы редактируем.

D.2 vi

Vi расположен в противоположном от emacs-а конце спектра редакторов. Он обладает традиционным набором комбинаций клавиш, подмножество которых понятно для всех пользователей vi. Если вы знаете vi, то вы можете сесть за любой юникс компьютер и редактировать файлы без каких-либо умственных затрат на попытки разобраться как это сделать. Вы находитесь дома. Вместо неудобных последовательностей emacs-овских сочетаний клавиш vi обладает мощной модульной архитектурой позволяющей вам прозрачно и эффективно выполнять простые и сложные манипуляции с текстом. Vi спроектирован так, чтобы минимизировать число клавиатурных сочетаний и быть удобным для использования в условиях сетевых соединений с большими задержками1.

1 Что становится всё более важным как технологическая тенденция в распределённой, серверной стороне разработки, иногда происходящей через длинные SSH цепочки.

Команды vi, позволяющие копировать/вставлять/удалять/перемещать лисп формы, применять регулярные выражения, производить поиск и гибко управлять текстом, дают вам возможность редактировать лисп код с наименьшими накладными расходами. В отличие от emacs значения лежащие за клавишами и командами vi никогда не меняются. После короткого периода использования vi становится частью мозга, отвечающего за моторику. Есть нечто магическое в том, как в голове выстраиваются очереди из двух, трёх, четырёх и более команд редактирования и в том, как пальцы вызывают их в то время когда вы размышляете над вашим приложением. В отличие от IDE, где несколько клавиатурных сочетаний просто переносят вас в некоторый пункт меню, клавиатурные сочетания vi эффективны, мощны, прозрачны и, что самое важное, неизменны.

Для редактирования лиспа я использую исключительно nvi Кейта Бостика (Keith Bostic), прямого наследника vi, включённого в 4BSD. Он быстрее и отзывчивее чем другие редакторы, не отвлекает меня бесполезными деталями или цветами, и я ещё ни разу не видел чтобы он аварийно завершил работу. От редактора мне ничего более и не нужно. Редактирование - это одна из тех нескольких вещей, что правильно выполняются юниксом и неправильно выполняются лиспом. Чем хуже - тем лучше. :x

Переведено на Нотабеноиде
http://notabenoid.org/book/40014/296489

Переводчики: Charlz_Klug

Настройки

Готово:

100.00% КП = 1.2