Брам Моленар: «Vim — очень важная часть моей жизни»
Вступление
Мы поговорили с нидерландским разработчиком и активным участником сообщества open-source Брамом Моленаром (Bram Moolenaar). Брам — первый автор, координатор проекта, менеджер релизов и «великодушный пожизненный диктатор» очень популярного среди программистов и опытных пользователей текстового редактора Vim, развития идеи vi.
Интервью
Evrone: Что значит работа над Vim лично для тебя?
Брам: Для меня она очень значима. Мне всегда нравилось создавать разные штуки, но довольно часто я задаюсь вопросом, что делать с тем, что я только что создал? Vim я сделал публично доступным, и многие люди с удовольствием им пользуются, а не только я один. Он принёс мне известность, что помогало устраиваться на работу. Сейчас, когда я уже на пенсии, он даёт мне возможность заниматься чем-то интересным, приятным и полезным. Vim — очень важная часть моей жизни.
Evrone: Как ты считаешь, к чему ближе разработка ПО, к искусству или к науке? Допустимы ли отклонения от традиционных техник или нужно строго следовать основным курсом?
Брам: Не вижу особой науки в разработке. Наука предполагает доказательство истинности суждений. В области программирования есть множество мнений, есть опыт, но разве доказано, что один язык программирования лучше другого? Есть ли доказательства того, что объектно-ориентированное программирование повышает продуктивность? Большинство доказательств строятся на измерении производительности, накоплена статистика, но она практически не взаимосвязана с тем, на каком языке была написана программа или какие инструменты использовались. Разработку также нельзя назвать искусством, поскольку главная цель — чтобы ПО хорошо работало, а не чтобы красиво выглядело. Это ближе всего к ремеслу, к мастерству. Мастер использует те инструменты, которые, по его мнению, дадут наилучший результат, неважно используют ли их остальные или предпочитают что-то другое. А искусный мастер, если надо, изготовит свои собственные инструменты.
Evrone: Открывая Vim, мы видим призыв помочь детям из Уганды. Как тебе пришла в голову идея лицензирования Vim с использованием моделей Careware/Charityware, и сколько людей могут делать пожертвования таким образом?
Брам: Я никогда не собирался зарабатывать деньги на Vim. Сначала он был из разряда хобби, к тому же большую часть времени у меня была работа, которая хорошо оплачивалась, за исключением пары лет, в течение которых я просил о пожертвованиях. Но довольно многие считали Vim не менее стоящим редактором, чем коммерческие альтернативы. Поэтому я решил осуществить своё желание помочь бедным детям и сделать это с помощью Vim. Так родилась модель Charityware. Она хорошо работает, в год собирается около 30 000 евро, благодаря чему около 50 детей могут получить законченное образование: от начальной школы до университета. Пожертвования поступают от нескольких крупных спонсоров, также мы получаем множество небольших пожертвований.
Evrone: Несмотря на гибкость и функциональность, Vim не назовёшь интуитивно понятным редактором, входной барьер довольно высокий. Чтобы использовать Vim эффективно, придется потратить довольно много времени на изучение команд управления. По какой причине ты пошёл таким путем, вместо того чтобы ввести какой-нибудь режим начального уровня с постепенным увеличением сложности?
Брам: На самом деле у него имеется малоизвестный режим, в котором можно просто набирать текст, не зная всех команд. Он называется Easy Vim, или evim. Как я полагаю, он мало используется потому, что услышав о Vim и его мощных командах, вы вряд ли захотите использовать режим, в котором он работает как любой другой редактор. Да, Vim’ом нужно научиться пользоваться, как и vi. Я научился использовать vi, по сути, вынужденно, так как на практических занятиях в университете был доступен единственный компьютер, а единственным редактором на нем был vi. После наших жалоб преподаватели выдали нам одностраничную шпаргалку с командами... Без этой принудиловки я, возможно, не научился бы использовать vi, и ход истории изменился бы.
Evrone: В последнее время некоторые разработчики для решения текущей задачи часто применяют чей-то готовый код, вместо того, чтобы писать свой собственный с нуля. В результате некоторые приложения выглядят, как чудовище Франкенштейна, хотя и укладываются в жесткие сроки, которые диктует бизнес. Ты считаешь это приемлемым подходом?
Брам: Обычно это происходит, когда разработкой программного обеспечения руководят люди, которые ничего в нём не смыслят. Я работал в компании, где многие менеджеры, получившие образование в области физики и механики, считали, что они разбираются в ПО и могут решать, как его сделать. Эта компания покатилась по наклонной и в конце концов её поглотили. То же самое происходит, когда лица, принимающие решения, не несут ответственности за провал, как например, в правительстве. Люди, пишущие код, возможно, просто получают деньги, а затем убегают с места преступления. На другом конце шкалы находятся разработчики, которые хотят писать красивый код, тратят на него много времени и не заботятся о том, действительно ли он работает так, как должен, и какой был бюджет. Где-то между этими крайностями нужно искать золотую середину.
Evrone: Два года назад был анонсирован экспериментальный форк Vim9. Расскажи нам о нём немного подробнее. В какой стадии этот проект находится сейчас?
Брам: Vim9 — это не форк, а следующий шаг по совершенствованию Vim. Сначала я провёл эксперимент, чтобы проверить, сработает ли компиляция функции в байт-код, чтобы скрипт Vim работал намного быстрее. Результат получился хороший, но потребовалось внести изменения в синтаксис. Нелегко поддерживать два варианта скриптового языка одновременно, но я думаю, что это сработает, и к тому же порадует разработчиков плагинов. Унаследованный синтаксис останется, поэтому Vim9 не следует называть форком. Я не думаю, что все старые скрипты Vim будут переписаны на новый синтаксис, поэтому мы будем продолжать поддерживать и старый. Даже для Python потребовалось очень, очень много времени, чтобы 99% кода было переведено на Python 3. А воз с оставшимся 1% и ныне там...
Evrone: Всегда трудно поддерживать обратную совместимость, потому что многие новые возможности требуют изменений, которые сломают старый код. Vim9 будет придерживаться принципов обратной совместимости или откроет новую страницу в истории Vim?
Брам: Новый скриптовый язык Vim9 не имеет обратной совместимости, но старый синтаксис всё ещё доступен одновременно с новым. Можно выбирать, какой синтаксис использовать для каждого файла и каждой функции. Таким образом, у нас есть свобода действий для улучшения языка скриптов Vim9. В то же время, оба варианта скриптового языка Vim достаточно близки, чтобы можно было легко писать на любом из них. Я тщательно следил за тем, чтобы пользователю всегда выдавалось информативное сообщение об ошибке, чтобы помочь быстро её исправить.
Evrone: IRC указан как канал сообщества на официальном сайте Vim. В настоящее время этот протокол не слишком популярен, а некоторые молодые специалисты о нём даже не слышали. Ты не планируешь перейти на более актуальные Slack или Discord, чтобы оказывать больше влияния на Vim?
Брам: Я такой старомодный, что моё основное средство коммуникации — электронная почта. Дело не только в привычке, главное, письма не отвлекают в ненужный момент. Я могу читать их и писать ответы, когда мне удобно, могу отложить это, если не хочу прерывать свои дела. Конечно, пользователи вольны выбирать то, что им подходит, кто-то может это организовать. Однако общение типа чата, как правило, очень шумное.
Evrone: В интернете можно найти массу плагинов для расширения потрясающей функциональности Vim. Ты мог бы порекомендовать какие-то свои излюбленные плагины?
Брам: Должен признаться, что я не очень-то использую плагины, кроме включенных в дистрибутив (например, matchit и termdebug). Когда мне что-то нужно, я обычно либо мастерю это на скорую руку, либо тщательно прорабатываю и вношу в основной код Vim. Такие вот привилегии у создателя :-).
Evrone: Основываясь на своём богатом опыте, ты мог бы поделиться с разработчиками лайфхаками, как сохранить продуктивность на протяжении многих лет? И спасибо за беседу!
Брам: Никаких хаков, всего лишь простые правила и советы. Первое: я видел, как молодые люди работают допоздна, а на следующее утро поздно берутся за дело. Большинство из нас наиболее продуктивно работают утром, поэтому стоит установить для себя жесткие временные рамки, когда нужно остановиться. Запишите, если нужно, на чем остановились, затем немного расслабьтесь, хорошенько выспитесь и продолжите работу на следующее утро. Очень часто утром к вам приходит озарение, что делать с проблемой, которая не решалась вчера вечером. Выражение «утро вечера мудренее» действительно работает, по крайней мере, для меня. Второе: иногда не требуется найти какое-то умное решение или вести бесконечную тонкую подстройку конфигурации, а нужно просто быстро что-то напечатать. Чтобы раз 200 выполнить какую-то операцию в Vim, чаще всего достаточно просто записать и многократно вызвать макрос. Сколько времени вам понадобится, чтобы написать плагин для этого?
Заключение
Нам было интересно поговорить с Брамом и узнать о его ценном опыте, накопленном за многие годы.
Evrone предлагает индивидуальные решения по разработке программного обеспечения с учётом специфических потребностей наших клиентов. Если вам нужно помочь с реализацией проекта или идеи, или вы просто хотите узнать больше о наших услугах, отправьте нам сообщение через форму ниже, и мы с вами всё обсудим