Vim (сокращённо. от Vi Improved, произносится «вим») — свободный текстовый редактор, признанный специалистами одним из мощнейших текстовых редакторов с полной свободой настройки и автоматизации. Его первый публичный релиз (v1.14) состоялся 2 ноября 1991 года, спустя пару недель после представления, на тот момент никому неизвестным, Линусом Торвальдсом, своего Linux. В ознаменование 25-й годовщины, его создатель Брэм Муленар недавно представил версию Vim 8.0.
Новость о выходе обновления любого другого текстового редактора, не стоила бы и выеденного яйца, но это не относится к Vim. Это первый крупный релиз за последние 10 лет. В современном мире, где обновления для браузеров выходят по несколько раз в год, отсутствие крупных обновлений Vim, говорит о совершенно ином подходе к разработке программного обеспечения.
«Ну нашел с чем сравнивать», — скажете вы, но даже если не брать во внимание релизы браузеров, 8 релизов за 25 лет, это всё равно медленнее чем у главного его конкурента GNU Emacs, который с 1970 года, сегодня представлен 25 версией, это конечно же ближе к Vim по темпам разработки, но всё равно сильно отличается, ведь на 1 релиз Vim приходится два релиза GNU Emacs. Тем не менее, Vim и Emacs, вместе являются одними из самых широко используемых инструментов разработчиков программного обеспечения в мире.
Как давний пользователь Vim(примерно с 2005 года), ответственно заявляю, что моей самой любимой особенностью этого текстового редактора, как раз таки и является отсутствие частых обновлений. Vim он и в Африке Vim. Он выполняет то, что я от него требую и не пытается себя изменить в угоду трендам, каждые пол года. Я использовал восьмую версию в течение нескольких недель, даже не осознавая этого. Благодаря своей неизменной самобытности, Vim очень близок к моему личному определению хорошего ПО — если работает, не трогай.
Стратегия разработки Vim, сильно контрастирует с разработкой вашего любимого браузера, который представляет обновления каждые 6 недель. Причем для такого заявления, мне абсолютно не нужно знать какой у вас любимый браузер, потому что они все так делают. Развитие и разработка такими бешеными темпами, выглядит так, будто основная идея разработчиков браузеров заключается в том, чтобы опередить конкурентов в появлении новых багов.
Современная разработка ПО занимается переизобретением колеса и суть её, заключается в разработке ради разработки. Недавно у меня появился новый клиент, у которого кодовая база написана в Symfony 1.0, безусловно, это достаточно старая версия фреймворка, настолько, что мне пришлось искать её описание и документацию на archive.org. И признаться честно, первое, что пришло мне в голову, это переписать код в чём то более современном. Но хватило ума остановиться и посмотреть на код. «Что то работает неправильно или не отвечает желаниям клиента?», — подумал я. Ну в некоторых деталях необходимы изменения, но в целом же всё работает прекрасно. Для чего тогда портировать хорошо работающий код на что то более современное, тем более, что заказчик хотел только лишь расширить функционал на другую часть своего бизнеса. Я дописал требуемый функционал и вернулся к работе.
Желание получить новее и лучше это своеобразная ментальная ловушка, в которую так или иначе попадаем мы все. Приходят новые идеи, и зачастую они улучшают прошлые механизмы. Если взять за пример Vim, то в последней версии появилась масса интересных решений, как то: поддержка асинхронного ввода-вывода, каналы, JSON, рабочие места, таймеры и GTK+ 3.0. Ничего из всего перечисленного по отдельности не играет какой то большой роли, но в совокупности это открывает дверь к новым потенциально мощным расширениям Vim.
Конечно нет ничего плохого в новых полезных функциях, если за них не нужно платить. Платой за новый функционал, как правило является необходимость переучиваться. Вчера ещё, всё прекрасно работало, а после обновления всё работает по другому. И даже самые полезные функции, перестают быть полезными, если они требуют от меня, полного изменения существующего рабочего процесса. Обновление до Vim 8, было абсолютно прозрачно для меня. Оно не принуждало меня к новым способам работы в редакторе и не поломало расширения которыми я пользуюсь.
Очевидно, что остановка в развитии является эквивалентом смерти, но стоит помнить, что непрерывный рост и изменение, в живой природе присуще только одному типу клеток — раковые клетки. Чем больше я задумываюсь об этой аналогии, тем лучше это чувствую. Чтобы привнести ясность, я не говорю об обновлениях безопасности. Обновления безопасности направлены на улучшение ПО и это хорошая вещь. Я говорю о том, что нет никакого смысла в постоянном изменении пользовательского интерфейса, который нисколько не упрощает жизнь пользователю. Веб браузеры, пожалуй, самый вопиющий пример таких обновлений. Они с каждым обновлением вносят что то новое, обещая, что вот сейчас то всё будет простым, но в итоге лишь усложняют.
Для понимания того, о чём я говорю, приведу самый абсурдный пример этой тенденции. Посмотрите на CSS — невероятно простой синтаксис для разметки и оформления веб-страниц. Но нет, оказывается, что CSS является слишком сложным и поэтому мы получаем Sass. Но немного подумав мы решили, что Sass не совсем то, что мы хотели. Таким образом мы получаем Compass и теперь, то что раньше мало бы кто назвал программированием, требует наличия двух независимых фреймворков, Ruby и дюжины Gems, для получения пресловутого CSS, который раньше мы просто писали в Vim.
Увы, я не ожидаю изменения текущего курса в стратегии развития современного программного обеспечения. Если будущее требует больше абстракций, постоянных изменений пользовательского интерфейса, большего числа фреймворков, не имеющих обратной совместимости и больше рака-подобного роста, то в будущем, редактор Vim имеет ещё большую ценность.
По крайней мере, я могу быть спокоен, что мой любимый текстовый редактор будет со мной и в будущем. Спасибо Vim, я в буквальном смысле не мог бы делать то, что я делаю сейчас, если бы тебя не было. Счастливого 25-ти летия, и до встречи через десять лет здесь же, в статье посвященной выходу Vim 9.
Источник https://www.theregister.co.uk/: Oh, the things Vim could teach Silicon Valley’s code slingers