Почему я продолжаю ездить на устаревших Москвиче и АИ-76

(О езде на машине, их технических и эксплуатационных характеристиках)

(Модель античного автомобиля в Аркаиме)(Модель античного автомобиля в Аркаиме)

Почему я продолжаю ездить устаревших Москвиче и АИ-76? Этот вопрос мне часто задают мои соотечественники, соседи по даче и здесь на Хабре. Решил ответить сразу всем в этой заметке.

Мои водительские интересы в основном принадлежат области биологической (или, как еще называют — рассадой) химии. Это применение теории графов к фундаментальным и прикладным задачам логистики (немного подробнее см.).

Для решения этих задач я применяю уже известные планы поездок, иногда их модифицирую, а иногда делаю новые. Решение логистической задачи обычно предполагает последующий рассказ жене и соседу по этажу. Еще до начала лета стоит подумать: в каким способом я собираюсь добираться до дачи?

Наверное здесь стоит приостановиться с иронией (@third112прошу прощения, у меня с юмором всегда было туго). Пост «Почему я продолжаю использовать устаревшие виртовский Pascal и Delphi-7» и комментарии про git тронули меня до глубины души. Я не смог обойтись одним комментарием. Задача этого поста провести аналогию языков программирования с автомобилями дабы посмотреть на оригинальный пост под другим углом. Рассмотрим следующий тезис: Pascal это Москвич-412.

Pascal это Москвич-412

Мы живем в современном мире где все постоянно меняется. Миллионы людей каждый день пробуют что-то новое, проверяют идеи, создают, анализируют, ошибаются. Как результат этих действий мир меняется. Чаще всего эволюционным путем, реже революционным. Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее. Держа это в голове, давайте сравним автомобиль и язык программирования.

Полвека на службе

Pascal и Москвич-412 созданы примерно в одно и то же время. У них богатая история и заслуги и никто, я надеюсь, спорить с этим не будет. Попробуем проанализировать изменения в мире с 1970 года.

Много ли изменилось концептуально? Мы все еще ездим по асфальтированным дорогам на 4 колесах держа круглый руль, под капотом находится двигатель, который через трансмиссию передает вращение на колеса. Мы все еще пишем код текстовым редактором, позже код должен превратиться в машинный код и выполнится на ЦП.

Много ли произошло революционных изменений? Добавились автоматические трансмиссии, турбины для ДВС, ассистенты водителя и много другое. Добавили системы управления пакетами, системы контроля версий, CI/CD, облака и много другое.

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

Наши дни

И Pascal и Москвич-412 живее всех живых и будут жить. Есть много людей, которые ценят и любят их. Как много воспоминаний связано с ними, как много сил вложено! Тот крутой алгоритм был написан именно на нем. Именно на этой машине впервые приехал к морю. Сидение идеально отрегулировано и удобно как дома. Руки сами пишут знакомый синтаксис. Мышечная память позволяет не глядя включить нужную радиостанцию. Все библиотеки уже найдены, а все расходные запчасти известны. Если вдруг понадобится другая библиотека, то парни с форума подскажут или даже напишут новую для вас, а может что-то даже и найдется на старых CD дисках, которые хранятся еще с молодости. Запчасти можно найти по знакомствам или на разборках, да и весь гараж забит ими, ведь так надежней.

Будет ли Москвич-412 первым автомобилем сегодня? Сегодня есть столько интересных языков программирования, как и автомобилей. Зачем мучиться с механической трансмиссией? Сопоставление с образцом ведь так удобно! Неизменяемые ссылочные типы данных помогают избежать множество ошибок. Некоторые скриптовые языки программирования можно запустить прямо в браузере. Круиз контроль и ассистенты удерживания полосы действительно удобны. Датчик дождя и освещенности позволяет больше не управлять фарами вручную. Как результат, ответ скорее нет.

Экономика и социум бесчувственно делают свое дело. Большое сообщество работает на пользу каждому его члену. Вопросы на stackoverflow закрываются быстро. Форумы пополняются статьями и советами по обслуживанию автомобиля. Библиотеки для языка программирования создаются и улучшаются каждый день. Магазины полны запчастей для популярных моделей. IDE здорово упрощают жизнь, а автодилер избавляет от головной боли с обслуживанием. Вакансии на популярные языки программирования проще закрывать для работодателей. Конвейерная сборка большого количества машин делает их дешевле.

Давайте улучшим и все будет хорошо. Заменим двигатель и поставим полный привод, добавим модных синтаксических особенностей языка и сахара.Увы, все хорошо не будет. Новый двигатель не влезет в кузов, а новое ключевое слово сломает совместимость. Добавляя улучшения которые не ломают совместимости, мы можем только привносить эволюционные изменения, оставаясь без революционных изменений и всегда на шаг сзади. А может без совместимости прокатит? Новое несовместимое изменение раздробит сообщество. Больше фары от другой машины не подойдут, а код не скомпилируется. Увы, это сделает жизнь еще больнее и дороже.

Эпилог

Много нюансов было опущено: Pascal не ржавеет, Москвич-412 больше не производится, а старые проекты поддерживать все равно надо. Все верно, а статья должна быть комментарием «ой все» под оригинальным постом. Мир не идеален, если хоть кто-то улыбнется от иронии в начале, то я уже буду рад.

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

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

© Habrahabr.ru