Почему я перестал писать на Delphi

В этой статье я хочу ответить на один из вопросов, который мне часто задают в том числе при «живом» общении.

Почему я ушёл от разработки на Delphi и почему когда-то основной язык был исключён из стека поддерживаемых мной технологий.

На самом деле это вызвано целым рядом весьма существенных причин.

Причина 1. Ценовая политика вендора

Delphi стоит в разы дороже аналогичных решений многих своих конкурентов.

По состоянию на конец 2018 года за Delphi Professional просили 87 999 руб. (цена на официальном сайте). Для сравнения, Visual Studio Professional тогда же стоила 30 058 руб. (цена в Microsoft Store). Разница почти в 3 раза.

Полноценной бесплатной версии доступной для небольших компаний и индивидуальных разработчиков у Delphi в отличие от той же Visual Studio нет.

Официально в июле 2018 года вышла Community Edition, но у неё есть лицензионное ограничение 5 000$ в год совокупного дохода. То есть если Ваш суммарный доход (не только от Delphi программ) превышает указанную величину, вы обязаны купить коммерческую версию.

Причина 2. Востребованность

К сожалению, при всём уважении к Delphi сфера применения для него и аналогичных технологий в последние годы значительно сократилась.

Даже в Enterprise секторе, который всегда славился своей консервативностью акцент уже давно сместился в сторону мобильной и web разработки. Но, если с первой Delphi ещё может как-то справиться, то к последнему он до сих пор не готов.

Если в 2012-2013 годах Delphi программист ещё чувствовал себя на рынке вполне уверенно, то в 2018 году вакансий по Delphi на том же HeadHunter единицы.

Как это ни прискорбно, в таких условиях вложения в приобретение дорогостоящего программного пакета и поддержание знаний и навыков в актуальном состоянии просто не оправдывают себя.

Причина 3. Общее отставание от современных трендов

Процесс разработки на Delphi не менялся уже очень много лет.

Целый ряд технологий в Delphi доступен в лучшем случае в виде библиотек от сторонних производителей, которые также часто далеко не бесплатные.

Печально. Но в Delphi до сих пор нет полной поддержки ООП (хотя бы вследствие ограничений, связанных с интерфейсами).

Как минимум частично исправить ситуацию должна была библиотека FireMonkey. Только она длительный период времени была довольно «сырой» и по ряду своих возможностей ещё уступает «ветерану» корпоративного ПО – VCL. Поэтому, сделать чтобы выглядело красиво – это FMX, а сделать так чтобы работало эффективно – это пока ещё VCL.

Как следствие всего вышеизложенного снижение производительности у программиста и нередко ухудшение качества ПО. Конечно, если речь не идёт о задачах, которые легко решаются по принципу «накидать компонентов на форму».

Причина 4. Неблагоприятные условия на рынке

В силу ряда причин Delphi программистов пока ещё достаточно много, но, как уже говорилось выше, вакансий для них наоборот крайне мало. Поэтому очень редко кто из Delphi разработчиков сейчас в той или иной степени не сталкивается со всеми «прелестями» так называемого «рынка покупателя».

Конечно, даже в такой ситуации найти вакансию или проект на Delphi вполне возможно. Только каковы будут условия?

Резюме

Как это ни печально, но все вышеизложенные причины привели меня к одному (в прочем вполне закономерному) следствию. Писать на Delphi в настоящее время:

  • Практически бесперспективное занятие в плане опыта и карьеры;
  • Просто не выгодно по деньгам.

Это и заставило меня перейти с Delphi на альтернативные технологии и в 2017 году я полностью прекратил разработку на этом языке программирования.

Ничего личного. Просто работа.

Искренне надеюсь, что эта статья в достаточной степени разъяснит основания для принятия мной такого решения.

10 комментариев

  1. Возможно и зря. Пройдет время и delphi опять будет в моде. Как фортран.
    По поводу FireMonkey — я правильно понимаю что из-за кросплатформенности все функции отличаются? В частности программирование под Mak к примеру. Платформы же разную структуру имеют (в частности папок) и т.д. WinAPI уже тоже не заюзать?

    1. Пройдет время и delphi опять будет в моде. Как фортран.

      Дело здесь не в моде, а в сочетании целого ряда факторов, о которых я писал в статье.
      К слову, у Delphi несколько лет назад уже был всплеск популярности после длительного спада. Но, он быстро прошёл и сменился даже ещё большим спадом, т.к. внедрения только технических новшеств (той же кроссплатформы) оказалось недостаточно, чтобы в корне изменить ситуацию.

      Посмотрим, что будет дальше, но пока предпосылок для роста популярности Delphi что-то не заметно.

      я правильно понимаю что из-за кросплатформенности все функции отличаются?

      В любой кроссплатфоменной технологии отличия касаются в основном операций специфичных для той или иной платформы. Например, сохранение файлов в Android имеет свои особенности, а WinAPI будет работать только под Windows. В остальных случаях всё везде одинаково. Только вот обойтись без, так называемых, платформозависимых API получается не всегда.

      P.S. Впервые слышу о популярности Фортрана.

  2. Например, сохранение файлов в Android имеет свои особенности, а WinAPI будет работать только под Windows

    Так я об этом и спрашивал. Как решается такая проблема? Есть какая то универсальная функция? Или фактически мне нужно переписывать под каждую ОС весь код если я много работаю с ОС, папками, записью файлов и т.д.?

    1. Данная проблема решается при помощи условной компиляции, когда в зависимости от платформы в программу включаются те или иные альтернативные наборы операторов.

      С её помощью можно сделать кросплатформенным очень многое (если не всё), но общий объём кода будет увеличиваться пропорционально числу поддерживаемых платформ. Как-то так.

  3. Нисколько не препятствую вашему решению.
    Но далеко не все так однозначно как вы пишете.

    1. По поводу ценовой политики вендора конечно есть вопросы.
    Embarcadero в отличии от того же MS зарабатывает основные деньги на продаже весьма узкого ассортимента ПО и не может раздавать инструменты даром.
    Если взять других конкурентов (например Qt), то там коммерческая лицензия за год стоит 5000$ на одного разработчика, что уже дороже бессрочной лицензии от Эмбы. А за скомпилированное ПО на FreeQt версии вы вообще не имеете права брать деньги. Delphi Comunity же позволяет это делать как раз до 5000$. Что IMHO в самый раз, чтобы условный студент попробовал свои силы.

    2. По поводу меньшей востребованности. Да есть такое.
    Но если вы вечный соискатель мечтающий лишь о зарплате и готовы прыгать с места на место, где сегодня на пол-рубля больше — то да — вам тогда нужно стремиться только к самому модному и новому.
    А если вы участвуете в долгосрочном проекте и на хорошем счету, то я знаю дельфистов зарплатами более 200т в России.

    3. Какое собственно общее отставание от современных трендов вас беспокоит?
    Если сравнивать сам язык, то я бы поспорил. Декларативность сверху-вниз и разделение интерфейса от имплементации как раз способствует более грамотному дизайну, чем зачастую, например, на C#.
    Наличие встроенных испокон века мета-классов( class of ) позволяет элегантно обходить тормозной механизм рефлексии на C#, ну а в С++ такого вообще нет ( только у самой Эмбы есть специальный TMetaClass для C++)
    Фирменный паскалевский Set of, более гибкие свойства и прочее.
    Интерфейсы, кстати, более продвинутые чем на С#. Просто они изначально были заточены на COM. А если вас напрягает автоматический подсчет ссылок, то есть такие заглушки как TSingletonImplementation и аттрибуты [UnsafeAttribute] [WeakAttribute]. В последней версии ввели даже inline объявление переменных, теперь не нужно все объявлять в начала процедуры/функции.
    FireMonkey сейчас уже вполне рабочий и мобильные приложения (особенно мобильные довески к основному приложению) позволяет писать вполне стабильные. Главное быстро и работают потом быстрее, чем монстры поверх Xamarin.
    Да, пока нет таких удобных фенечек как LINQ. Но где оно есть, кроме как у «Корпорации Добра» в одном отдельно-взятом языке?

    Единственное, что может напрягать — это отсутствие хороших веб-решений, кроме разве что UNIGui.
    НО не забываем, что Дельфи — это все же НАЙТИВ и в предназначен для готовых найтивных решений на всех платформах, а не для последующей работы интерпретаторов или jit-компиляторов в фреимворковых песочницах. С таким же успехом в этом можно обвинять C++.
    Но если у вас в приоритете WEB морды, то и с MS тут лучшее не связываться, а писать их лучше сразу на HTML+CSS+JavaScript+какой-то фреймворк.

    4. Неблагоприятные условия на рынке как уже и написал волнуют в большей степени «попрыгайчиков» за зарплатой. Но тогда лучше сейчас сразу прыгать на Питон и на «чистый ВЕБ». «Эффективные менеджеры» по своей врожденной хайповой глупости и технической некомпетентности платят в корпоративе большие деньги сейчас именно за это.

    Кстати, есть еще и такое условие-фактор, который называется, а на чем писать свое собственное коммерческое десктопное приложение?
    И вот тут 10 раз подумаешь. Можно, например, и на C++Qt. Но там сторонних хороших коммерческих компонентов даже меньше, чем на Дельфях и стоят они в разы дороже. А написание и отладка явно не быстрее и не удобнее, а выстрелить себе в ногу на C++ в десять раз проще, чем на Delphi.
    VC++MFC — динозавр даже по сравнению с немолодым Delphi и ну совсем уже не кроссплатформа.
    Можно на Java, но там сразу своя куча проблем. И уж что-что, а сам язык удобным для десктопа назвать затруднительно: ограниченное количество типов, ограничение 1фаил-1класс, этот вечный гемор с out-параметрами, вечный гемор с доступом к платформе, своеобразные дженейрики и т.п. Также весьма разный подход в плане выбора визуализации (особенно если учесть javaFX) и с подбором хороших сторонних решений для десктопа тоже беда или весьма не дешево. Да и вообще Java на десктопе это на любителя.

    А вот с C# и .NET в своём десктопном проекте я бы точно не связывался.
    К тому же эти вечные метания MS из стороны в сторону уже порядком достали.
    Да и всех своих адептов они сами мимолетно кидают без зазрения совести.
    Так уже было и с прикладными Бейсиковцами, и с Silverlight-овцами и с владельцами WinPhone.
    Еще пять лет 8 назад народ метался между WinForms и WPF, а сейчас с точки зрения самой MS и то и то устарело и кроссплатформенным уж точно не будет. И они явно намекают всем на ASP.NET чуть ли как на единственное правильное интерфейсное решение для их новомодной .NET Core.

    Короче, успехов вам.
    Хотя, лично я уже знаю людей, которые сначала ушли с Дельфей, а теперь вернулись. Все познается в сравнении и везде есть свои тараканы.
    А Дельфи хоронят практически с момента создания (особенно в Штатах), а он по прежнему живее всех живых, более предсказуемый и готовые программы работают стабильно, быстро и непрожорливо десятилетиями без какого-либо гемора связанного со средой выполнения.

    1. Alex, очень приятно видеть комментарий сторонника Delphi. Целая статья в его защиту. Но, увы…

      Embarcadero в отличии от того же MS зарабатывает основные деньги на продаже весьма узкого ассортимента ПО и не может раздавать инструменты даром.

      Это их проблемы.
      По отношению к Embarcadero «обычный» программист это клиент. Звучит грубо, но это так. Клиенту нужен рабочий инструмент, а он себя не окупает. Вот и всё. Ничего личного.

      По поводу меньшей востребованности. Да есть такое.
      Но если вы вечный соискатель мечтающий лишь о зарплате и готовы прыгать с места на место, где сегодня на пол-рубля больше — то да — вам тогда нужно стремиться только к самому модному и новому.
      А если вы участвуете в долгосрочном проекте и на хорошем счету, то я знаю дельфистов зарплатами более 200т в России.

      Неблагоприятные условия на рынке как уже и написал волнуют в большей степени «попрыгайчиков» за зарплатой.

      А, Вы за даром работаете?.. И почему Вы считаете, что те, кто уходит с Delphi плохие специалисты?
      Кроме того, высокая зарплата, к сожалению, ещё не признак высокой квалификации.
      Что касается долгосрочных проектов. Чем дольше «живёт» проект или ПО, тем больше и сложнее вызовы времени, на которые ему приходится отвечать. Жизнь не стоит на месте. С Delphi это делать с каждым разом всё труднее.

      Какое собственно общее отставание от современных трендов

      Советую внимательно оглядеться по сторонам и трезво посмотреть, что происходит в отрасли. А, также в частности трезво сравнить VCL/FMX с тем же WPF. Просто для примера.
      Конечно, очень многое зависит от специфики решаемых задач. Если задача решается путём обычного формотворчества, то здесь с Delphi можно даже и выиграть. С такими вещами Delphi справляется на раз-два-три, но, что касается всего остального…

      Кстати, есть еще и такое условие-фактор, который называется, а на чем писать свое собственное коммерческое десктопное приложение?

      Это «условие-фактор» имеет смысл только, если Ваше «коммерческое десктопное приложение» кому-то нужно. Десктоп сейчас очень сильно сдал свои позиции вследствие развитие web и мобильных технологий.
      Он не «умер», как некоторые возможно считают. Просто очень многие задачи стало проще и главное эффективнее решать на других платформах.

      Нисколько не препятствую вашему решению.

      Alex, со своей стороны я также нисколько не осуждаю Ваш выбор.

      Могу сказать только одно. Если человек что-то хочет, обычно он ищет возможности, в противном случае он будет искать причины. Если Вам так нравится Delphi и Вы так сильно хотите с ним работать, используйте его на здоровье! Возможно для Вашего проекта это даже наиболее подходящее решение.

      Просто помимо Вас и Вашего проекта есть ещё много чего другого в этой жизни. И то, что подходит для Вас вовсе не обязательно подходит для других.

      1. Клиенту нужен рабочий инструмент, а он себя не окупает.

        Простите, но если бы так было, то новые версии Delphi просто перестали бы выпускать и продавать по причине полного отсутствия спроса.
        Но как видим, этого не происходит именно по той причине, что инструмент себя окупает.
        Например, лично я использую в своей работе такие инструменты как TestComplete и HelpNDoc, написанные на Delphi.
        И надо сказать, что TestComplete ну совсем не дешевый. И просто поверьте, что лично я выбираю инструменты не по тому, на чем они написаны, а по отношению цена/(качество+функционал).

        С Delphi это делать с каждым разом всё труднее.

        Хочется спросить, что конкретно делать с каждым разом труднее?

        А, также в частности трезво сравнить VCL/FMX с тем же WPF.

        Я работал некоторое время с WPF и именно поэтому врагу не пожелаю такого прожорливого заковыристого (из-за XML) и малоудобного монстра. Привязка там вообще была ужас. Да это и не кроссплатформа, а значит и вообще не стоит усилий по нынешним временам.

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

        А если же вам нужно на мобилках поражать фенечками типа плавных переходов, анимаций и 3D, то можно быстро и на кроссплатформенном FMX.
        Поэтому я более чем трезво смотрю. И уж куда-куда но никак не в сторону полузаброшенной и моноплатформенной WPF.
        Игрался с QML, но в реале таких задач просто нет пока.
        А еще есть простые и дешевые решения типа встраиваемого Хромиума, если позарез нужен нестандартный интерфейс.

        Десктоп сейчас очень сильно сдал свои позиции вследствие развитие web и мобильных технологий.

        Этой мантре лет десять как, если не больше. За это время успели даже выйти из моды планшеты, на которые возлагалось столько «революционных» надежд 🙂
        А только по факту для работы (а не потребления контента) все как работали на десктопе так и работают. И измениться в ближайшем будущем это не может. Даже WEB и мобильными офисами все быстро наигрались и вернулись на десктопные версии.

        Если Вам так нравится Delphi и Вы так сильно хотите с ним работать, используйте его на здоровье!

        Мне нравится не столько Delphi и Object-pascal, хотя и у современного Object-pascal все еще много преимуществ. Мне нравится конечный результат, который я получаю в найтиве под любую из платформ.
        Конечно, еще больше мне нравится результат на C++, но для его достижения нужно применить гораздо больше усилий, времени и внимания.
        А менеджет решения мне в принципе не нравятся на десктопах. Да и по-хорошему IMHO им место лишь в корпоративе.
        А конкретно с технологиями от MS я бы вообще связываться поостерегся по множеству причин.

        Просто помимо Вас и Вашего проекта есть ещё много чего другого в этой жизни.

        Так я вроде и не претендовал на «всю жизнь». Я же сайты на Дельфях или на C++ писать не призываю 🙂
        Но и на десктоп и на мобилки с ВЕБ технологиями лезть — это IMHO либо от жесткой экономии либо от отсутствия знаний самого десктопа и мобилок, либо от тупости очередного «эффективного менеджера» 🙂

        1. Delphi просто перестали бы выпускать и продавать по причине полного отсутствия спроса.

          Простите, он уже сейчас почти никому не нужен. Если бы он себя окупал, проектов на Delphi было бы гораздо больше. И спрос на программистов под него был бы соответствующим.

          Я работал некоторое время с WPF и именно поэтому врагу не пожелаю такого прожорливого заковыристого (из-за XML) и малоудобного монстра. Привязка там вообще была ужас.

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

          А если же вам нужно на мобилках поражать фенечками типа плавных переходов, анимаций и 3D, то можно быстро и на кроссплатформенном FMX.

          А, о чём говорю? Если для решения задачи достаточно просто быстро накидать компонентов на форму, тут вопросов нет.

          Да это и не кроссплатформа, а значит и вообще не стоит усилий по нынешним временам.

          По данным сервиса Яндекс Радар на сегодня доля Windows 96,71%, MacOS 2,33% и 0,95% всё остальное (это я про десктоп). Делайте выводы.

          А только по факту для работы (а не потребления контента) все как работали на десктопе так и работают.

          Вас послушать, так большинство (если не все) владельцев ПК и ноутбуков только и делают, что работают. Чертят чертежи, делают расчёты, печатают документы, создают 3D модели и т.д. Вы же прекрасно понимаете, что это далеко не так.
          Да и мобильные устройства уже давно используются не только для развлечений. Уже давно есть ТСД и кассовые аппараты на базе Android. «Полевые» сотрудники вообще работают как раз на телефонах и планшетах.
          А, те же например графические редакторы и САПР, которые традиционно были десктопным ПО? Посмотрите такие web проекты как Figma, Tinkercad или «Веб-приложение AutoCAD». Про мобильные платформы я даже промолчу. Поэтому, простите, но рассуждения о технологиях подобные Вашим в 2019 году выглядят весьма странно.

          Можно довольно долго продолжать эту дискуссию. Но, как я полагаю, в этом нет никакого смысла.

          Если Вы хотите поучаствовать в прениях на тему Delphi и, в частности, его перспектив, то можете поискать в сети ресурс с соответствующим обсуждением и присоединиться к нему. А, мне это занятие совсем не интересно.

          1. Лично я вижу, что вы просто боитесь честного диалога.

            Простите, он уже сейчас почти никому не нужен.

            Это коммерческий продукт, который продолжает продаваться и приносить вполне ощутимую прибыль.
            Более того я привел примеры существующих коммерческих проектов на Delphi и список этот можно продолжать. Еще как пример австралийская Auslogics все свои системные утилиты пишет на Delphi. На C# или на ВЕБ скриптах такое нельзя писать. Только на найтиве.

            В России же есть сотни успешных именно «коробочных» продуктов, которые продолжают писаться на Delphi.
            Как пример, могу назвать вам Tillypad или R-Keeper, которые продали и продают свои продукты в сотни ресторанов и отелей как в России так за рубежом.

            Подозреваю, что Вы просто не разобрались в WPF

            Прекрасно разобрался и даже писал морду под это, чтобы еще лучше разобраться.
            Но как и говорил, все красивости WPF в корпоративе на десктопе вообще никому не нужны, а плавающей и удобной разметки можно добиться и на WinForms и на VCL с использованием сторонних решений, а на FMX или QML и подавно. Но сама идея с многословно-мострообразным XML проигрывает на фоне конкурентов. И вдвойне проигрывает из-за отсутствия кроссплатформенности. Я даже замеры делал. Оно еще и медленнее, чем QML или FMX.

            Можно довольно долго продолжать эту дискуссию. Но, как я полагаю, в этом нет никакого смысла.

            Конечно нет смысла. Если исходя из вашего текста вы всерьез думаете, что какие-то ВЕБ решения, написанные на примитивнейшем и тормозном скрипте работающем в песочнице, способны заменить полноценный оптимизированный найтивный десктоп, то действительно не о чем. Расскажите свои мечты компаниям Autodesk или Adobe. Они улыбнуться.
            Впрочем, время нас рассудит 😉
            Успехов! 🙂

          2. Лично я вижу, что вы просто боитесь честного диалога.

            Очень жаль, что Вы относитесь к теме обсуждения столь предвзято.

            все красивости WPF в корпоративе на десктопе вообще никому не нужны,

            Как Вам сказать?.. Лет 10-20 тому назад бизнес возможно и устраивал «железобетонный» интерфейс в стиле первых версий Windows, но сейчас, когда люди поняли, что удобство интерфейса напрямую влияет на эффективность работы, воззрения бизнеса относительно данного вопроса изменились. Ради любопытства например зайдите на сайт MS и посмотрите как выглядит Dynamics 365.

            Я даже замеры делал.

            В рамках честного диалога, говорить о замерах имеет смысл с указанием не только конкретных цифр, но и описанием того как, где, когда и на чём эти цифры были получены. Тем более внутренняя реализация того же .NET периодически меняется. К слову, современные JIT-компиляторы после «прогрева» могут обеспечить производительность на уровне нативного кода.

            Расскажите свои мечты компаниям Autodesk или Adobe. Они улыбнуться.

            Я Вам только, что привёл 2 web проекта от Autodesk.

            какие-то ВЕБ решения, написанные на примитивнейшем и тормозном скрипте работающем в песочнице

            Возможно, так было опять же более 20-ти лет назад. Современные интерпретируемые языки (PHP, Python, JS) работают гораздо эффективнее. А, бэкенд написанный на Java или C#, так и вовсе не является «скриптовым».
            Поэтому, не хочу Вас обидеть, но Ваши «познания» в области технологий просто удивляют.

            Впрочем, время нас рассудит

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

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

            В прочем, думается мне, время само всё расставит на свои места.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *