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

Почему я продолжаю ездить на устаревших Москвиче и А-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 больше не производится, а старые проекты поддерживать все равно надо. Все верно, а статья должна быть комментарием "ой все" под оригинальным постом. Мир не идеален, если хоть кто-то улыбнется от иронии в начале, то я уже буду рад.
Я сторонник не очень популярной идеи: любой прикладной код когда-нибудь умрет и это нормально. С одной стороны, если нет изменений в логике, то бизнес проиграет конкуренцию и умирает. С другой стороны, рано или поздно поддерживать старые технологии станет дороже чем написать новый код. Я всецело за программирование ради интереса и/или саморазвития, но коммерческая разработка не про это. Есть задача, исходная ситуация, бюджет и время. Если машина больше экономически не удовлетворяет, то ее надо менять. Если технология больше не удовлетворяет нуждам бизнеса, то ее надо менять.
Если для бизнеса все просто, то для личностного роста ��се не так очевидно. Можно выиграть тактически, выбрав заранее изученный язык для экономии времени, но проиграть стратегически позднее. Очень легко попасть в ловушку невозвратных затрат и окуклиться в зоне комфорта. Начать патологически накапливать код, а не знания и опыт, которым надо делиться для кооперации. В итоге каждый решает сам, главное помнить ради чего все это. Выбрать красную дорожку и стать специалистом в узкой области с некоторыми рисками, или можно пойти по зеленой, стать полиглотом и выбирать инструмент для конкретной ситуации.
