Мир суровый, но маленький и возможности его изменить есть у каждого. В 1996 году начиная изучать только что появившийся Delphi, я не мог себе представить, какая будет судьба у этого языка, который сильно повлиял на Java и C#, а также какая судьба будет у самой компании Borland, от названия которой у каждого олдскульного кодера идут мурашки по коже.

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

image

На фото один из видов древнегреческого города Дельфы, в честь которого была названа среда разработки Delphi. Источник — ru.wikipedia.org

Судьба у Borland выдалась непростая. Переманивание главного разработчика Delphi Андерса Хейлсберга в Microsoft, последующее странное переименование культовой Borland в непонятный Inprise. Падение продаж, и как следствие серия перепродаж самой компании по частям.

Не буду рассказывать подробности как Google в 2005 году поняла важность мобильного рынка, которому еще только предстоит появиться через несколько лет. Но в 2005 году Google покупает компанию Android за 130 млн долларов.

В 2007 году с выходом iPhone многие понимают, что пришла новая эра и Apple сметет все на своем пути к лидерству на мобильном рынке. Даже Google не успевала со своим Android, первая версия которого вместе с SDK появилась только в 2008 году.

В 2007 году, только что созданный фонд Thoma Cressey Bravo выкупает 100% акций компании Embarcadero. В следующем 2008 году фирма Embarcadero покупает за 23 миллиона долларов компанию CodeGear, в которую были переданы патенты на Delphi. CodeGear я помню еще с 2006 года, как поставщика компилятора С++ для наладонников PalmPilot, которые стали первым прообразом сегодняшних мощных смартфонов с большими экранами.

В 2010 году, видимо сойдя с ума от прогнозируемых аналитиками возможностей, HP на пике стоимости покупает Palm за 1 миллиард, в надежде что станет круче Apple. Уже в следующем же 2011 году HP прекращает выпуск мобильных устройств Palm Pre, так как их никто не покупает.

Позже происходит маленький, но очень клёвый момент в этой неравной битве за мобильный рынок. Я считаю, что первыми покупателями новинок являются гики, среди которых много программистов, и не в последнюю очередь именно они определяют крутость и перспективу устройств. Одной из главных перспектив на растущем мобильном рынке является возможность кросс-платформенной разработки приложений.

В 2011 году, упомянутая выше Embarcadero которой досталось наследие Delphi, покупает права на VG-Scene, это GUI фреймворк, который разрабатывался Евгением Крюковым из г.Улан-Удэ как вектор-базированная GUI-библиотека следующего поколения. Евгений Крюков позже получил предложение работать в Embarcadero, которая имеет офисы в Торонто, Мельбурне, Мюнхене, Мейденхед (Великобритания), Испании и Санкт-Петербурге (Россия).

В 2012 году эта библиотека под названием FireMonkey (FMX) входит вместе с VCL в состав основных пакетов: Delphi XE3, Delphi XE2, C++Builder XE2 и RAD Studio XE2, включая RadPHP и Embarcadero Prism. Именно эта библиотека, дает возможность для Delphi выполнять один и тот же код для Windows, Mac OS X, Linux, Android и iOS.

Цитата из Wikipedia:
FireMonkey позволяет отделить пользовательский интерфейс от бизнес-логики и механизмов доступа к данным (см. model-view-controller), что в частности позволяет размещать невизуальные части приложения в облачных сервисах: Amazon или Azure.
Разработка Евгения Крюкова вернула и Delphi и компании Embarcadero устойчивую конкурентоспособность. Несмотря на то, что популярность языка Delphi/Object Pascal падает, в 2019 году он занимает 14 строчку в рейтинге языков программирования TIOBE.

Комментарии (91)


  1. 0xf0a00
    24.03.2019 13:14
    +2

    Есть еще FMX for linux и VCL for linux. Так что кроссплатформенность еще больше чем кажется. Я собирал приложения с одинаковым интерфейсом для Linux, Windows и Mac из одного проекта просто сменив платформу сборки. Для андроид тоже можно, но тут я уже не экспериментировал. Использовать надо Delphi 10.2 /10.3


    1. Zyryanek Автор
      24.03.2019 13:17

      Я про Linux не в курсе, думал что это отдельные open source пакеты, думаете стоит добавить в статью?


      1. 0xf0a00
        24.03.2019 13:20
        +3

        Это дополнения для среды от стороннего разработчика(платные), можете добавить. Меня лично, как делфи разработчика, очень удивила возможность деплоить один бинарник в linux так же просто как и в windows.


        1. Zyryanek Автор
          24.03.2019 13:23
          +1

          Добавил, возможно в Wikipedia устаревшая информация


          1. Mouseee
            24.03.2019 21:25
            -1

            а разве автоматом Википедия не регулирует моменты устаревания? Я помню на какой-то странице прям жирным тегом показывала, мол, внимание, данная информация чего-то там 224 дня


        1. DmLam
          24.03.2019 19:34

          Причем, сторонним разработчиком является KSDev того же самого Крюкова. Равно как и в случае CrossVCL


    1. oldd
      24.03.2019 17:49

      Насколько помню, VCL под Linux выпускается сторонним разработчиком, стоит немало, и нет никаких гарантий, что развитие продолжится. Более того, этот разработчик ушел из команды Embarcadero из-за разногласий


  1. dom1n1k
    24.03.2019 14:53
    +9

    Переименование Борланда было дикостью космического масштаба. В своей ЦА известность и привычность этого имени приближалась к Кока-коле или Мерседесу. Зачем его было менять?! Это невозможно объяснить.


    1. Zyryanek Автор
      24.03.2019 17:18

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


    1. third112
      24.03.2019 17:42
      +2

      Согласен: дичайшей дикостью. Еще до Дельфи Борланд стал одним из лидеров рынка компиляторов благодаря своим турбо-языкам, а на рынке ОО Паскаля вытеснил продукт Микрософта. Переименование — это ошибка маркетинга. Не менее дикая ИМХО была ошибка развития: утрата совместимости с Дельфи-7 в последующих версиях. Думаю, что сравнительно не очень высокий рейтинг в TIOBE — во многом плата за эти ошибки.


      1. lubezniy
        24.03.2019 19:15

        В смысле — утрата совместимости? Коллеги говорили, что компилили в семёрке мои исходники, сделанные в 2009 версии.


        1. oldd
          24.03.2019 19:21
          +1

          Раньше тип string был равен anisString, т.е. то одному байту на символ, а потом кто-то умный в Embarcadero решил, что пусть будет string = wideString, т.е. 2 байта на символ. А т.к. дофига программ использовало строки как буфера, то резко все указатели уехали.


          1. lubezniy
            24.03.2019 19:31

            Это да, может быть; я везде в 2009, где надо было писать однобайтовые строки, писал по умолчанию ANSIChar и ANSIString; семёрка эти типы принимала нормально, и всё компилировалось и работало.


          1. MacIn
            24.03.2019 21:00
            +1

            Вот это точно «былинный отказ», тут не поспоришь. Самому сейчас надо переносить проект в много миллионов строк с 7 на 10.2, и это ппц.
            Самое поганое, что даже недостаточно просто заменить string на ansistring, pchar на pAnsiChar. Старая строка была по сути byte string, и при операциях не учитывалась кодировка.
            Кроме того, WinApi везде в новых дельфях по умолчанию используется в W варианте, тоже много переделок. RTL вся только под WideString. Отсюда — постоянные преобразования от однобайтного к двухбайтному представлению и обратно — потеря производительности. Просто тупо удвоенный расход памяти, учитывая, что все строки — ASCII и второй байт всегда будет равен нулю.
            И нет бы сделать как в FPC, чтобы можно было выбрать Ansi-only вариант или Unicode, так нет, просто порвали совместимость.


            1. oldd
              24.03.2019 21:06

              Я тупо менял sting на AnsiString, pchar на PAnsiChar и т.д., ну и ручками доковыривал, если что поломалось. Проблема с быстродействием не стояла, потому как компьютеры со времён Delphi 6-7 ушли далеко вперёд.


              1. MacIn
                24.03.2019 23:14

                Я тупо менял sting на AnsiString, pchar на PAnsiChar и т.д., ну и ручками доковыривал

                Это-то не проблема, и утилиты для этого есть. Но этого мало.
                Представьте, что у вас весь код — ASCII, и вам надо кинуть исключение, а оно в новой RTL только Unicode — нужны либо явные приведения, а это нечитаемо, либо неявные, а это лишние warning'и, подавлять которые некомильфо.
                Вся работа с TStringList'ами, с WinAPI переписывается. В общем, веселье еще то.
                Проблема с быстродействием не стояла, потому как компьютеры со времён Delphi 6-7 ушли далеко вперёд.

                Сравнение-то не компьютера времен 6-7 и сегодняшнего дня. А сегодняшнего дня с 7кой и сегодняшнего дня с 10.
                Там, где много приведений туда-обратно, это является проблемой. А уж двойная потеря памяти и вовсе атас, в некоторых местах может не хватить адресного пространства (код-то 32 битный).


            1. HSerg
              24.03.2019 22:53

              Если проект действительно настолько большой, то переносите через промежуточные версии. Будет гораздо легче (но не обязательно быстрее).


              1. MacIn
                25.03.2019 00:30

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


            1. Groramar
              25.03.2019 16:51

              Самому сейчас надо переносить проект в много миллионов строк с 7 на 10.2, и это ппц.
              Самое поганое, что даже недостаточно просто заменить string на ansistring, pchar на pAnsiChar.
              В целом не всё так плохо. По собственному опыту переноса нескольких миллионнострочных приложений. Как раз таки, как правило, string и char/pchar трогать не нужно.


              1. vortupin
                25.03.2019 17:08

                Мне интересно, что же все-таки такое, «многомиллионное», по вашим словам, вы переносите?

                Google Chrome (browser) runs on 6.7 million lines of code (upper estimate). The Android operating system runs on 12-15 million lines.
                Если честно, то «свежо предание, да верится с трудом»…


                1. Groramar
                  25.03.2019 17:28

                  Кинул в личку


          1. Maccimo
            25.03.2019 01:16

            Не WideString, а UnicodeString.


            Решение «кого-то умного» полностью поддерживаю, неюникодное приложение в XXI веке это дичь какая-то. Да и исправление тривиальное, заменить на RawByteString. А если уместно, то перевести на использование TBytes.


            1. MacIn
              25.03.2019 18:51

              Решение «кого-то умного» полностью поддерживаю, неюникодное приложение в XXI веке это дичь какая-то.

              Да ну? Вот проект, в котором я работаю: полностью американский рынок, только ASCII, только хардкор. Юникод — бесполезная свистелка.
              Да и поймите, string — это не просто строка текста, где можно говорить о кодировке.

              Если кто-то не в курсе (это я не вам, а так в сторону), почему в Delphi часто строки используют как буферы данных, поясняю: типа shared_ptr там нет (не было в тем времена), а строка в Дельфи с самых ранних версий — RefCounted, поэтому строка — это в первую очередь, динамический байтовый массив, с поддержкой совместного владения, copy-on-write и автоматического удаления.
              Поэтому строками можно свободно передавать данные на любую глубину вложенности, между любыми объектами — она всегда thread safe и автоматически удаляется по завершению использования. При этом работать с этим массивом можно стандартными строковыми функциями из RTL, результат можно хранить в RTL же коллекциях без преобразований типа.
              Да и исправление тривиальное, заменить на RawByteString

              Не совсем. RawByteString это не настоящий тип данных, а обертка для cast'а.
              Новый RTL работает только с юникодом — это — постоянные преобразования туда-обратно. Implicit, что кидает warning'и тысячами. Так что или обертки, или сторонние классы типа JCL AnsiStringList'а.
              WinApi, который теперь по умолчанию использует W версии.
              Индексирование по строке.
              Заменить на TBytes не везде можно, много где для членения буферов используются функции типа Copy/Pos. Плюс ко всему замена типа FastCode, как будет работать с TBytes — а хез. Сколько вылезет косяков в приложении, которому 30 лет — можно только гадать.
              Вон, правильно пишут про ассемблерный код.
              Да там нюансов для legacy вагон.


              1. Groramar
                25.03.2019 19:08

                Copy, если что, c TBytes работает вполне. Как и с любыми другими динамическими массивами.


                1. MacIn
                  25.03.2019 19:52

                  Скорее вопросы будут не просто с копированием участка, а с выделением строки из TBytes и наоборот.
                  В общем, решения-то есть, но все равно сложностей много.


          1. third112
            25.03.2019 04:45

            Не только string. У меня ассемблерные вставки не заработали.


        1. third112
          25.03.2019 04:38

          Наоборот. То, что написал в шестерке, без проблем транслировал в семерке. Но то, что писал в семерке, не смог транслировать в следующей версии «как есть».


  1. maxzh83
    24.03.2019 16:02
    +1

    В 1996 году начиная изучать только что появившийся Delphi, я не мог себе представить, какая будет судьба у этого языка, который сильно повлиял на Java и C#

    Справедливо только про C# (разработчика переманили и дизайнер форм очень похож), который вышел позже. Про Java же сомнительно, и Delphi и Java вышли в 1995


    1. Whuthering
      24.03.2019 16:49

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


      1. third112
        24.03.2019 17:57

        ИМХО дизайнеры форм (Delphi и VB) похожи на ResEdit середины 1980х ( в Вики плохая картинка).


    1. Zyryanek Автор
      24.03.2019 17:06

      Если не найду источник где я взял упоминание про Java, то удалю из статьи. Пока искал, нашел забавный факт как Андерс Хейлсберг устроился в Borland. Оказывается он написал компилятор Паскаля для MS-DOS и продал его Borland, впоследствии стал ее главным инженером. История такая же как у Евгения Крюкова


      1. BD9
        25.03.2019 04:18
        +1

        Это про Никлауса Вирта, а не Borland:

        Комментаторы не раз отмечали, что идеи Вирта зачастую опережали развитие компьютерной индустрии на годы, иногда — на десятилетия. Разработанная в начале 1970-х система Pascal-P, предполагающая компиляцию программ на Паскале в универсальный «пи-код» и реализацию на любой платформе интерпретатора пи-кода (одна из известных её реализаций — UCSD-Pascal Университета Сан-Диего), которая позволяла с минимальными затратами переносить Паскаль-системы на новые аппаратные платформы, более чем на два десятилетия опередила идеи интерпретатора промежуточного кода, реализованные в системах, поддерживающих исполнение программ на языке Java и в платформе .NET. Идея совмещения системы программирования со сборщиком мусора, освобождающим программиста от необходимости отслеживать время жизни объектов, динамически размещённых в памяти, была реализована в 1988 году в языке и операционной системе Оберон. Обе эти идеи были использованы разработчиками Java и .NET во второй половине 1990-х годов.

        Delphi развился в самостоятельный язык. «Эффективные менеджеры» из Borland могли бы взять лучшее из Оберона и Модулы и других идей Вирта, но — не взяли. Ну и про потеряли рынок.
        Желающие поизучать наследие Вирта могут посмотреть на ЯП: Паскаль (Lazarus), Oberon, Modula, Zonnon, Go, Nim, Lua, Ada, Eiffel,…


    1. Stas911
      24.03.2019 21:12

      Приличные IDE для Java, насколько помню, появились только в начале 2000х, тч у Борланда (мир его праху) была фора минимум лет в 5. Да и вообще, не помню серьезного cпроса и вообще использования Java до начала 2000х. В это время софта на Delphi и VB был вагон написан.


      1. maxzh83
        24.03.2019 21:46

        Приличные IDE для Java, насколько помню, появились только в начале 2000х

        При чем тут IDE? В статье речь про язык. Да и основная концепция (Write once, run anywhere) и виртуальная машина Java ничего общего с Delphi не имеет.


        1. Stas911
          24.03.2019 21:54

          Толку от языка, если для него нет инфраструктуры?


          1. maxzh83
            24.03.2019 22:04
            +2

            Еще раз, речь про то, на что повлиял Delphi.

            Толку от языка, если для него нет инфраструктуры?

            Ну вот и сравните сколько сейчас IDE и инфраструктуры для Java и сколько для Delphi. При этом вы сами сказали, что у Delphi фора была, так может в языке дело?


  1. oldd
    24.03.2019 17:15
    +4

    Разработка Евгения Крюкова вернула и Delphi и компании Embarcadero устойчивую конкурентоспособность.
    Одним FMX жив не будешь. REST, ORM, SSL, PostrgeSQL, MongoDB, нормальный парсер JSON, наконец! Где это всё? А нигде, как были кривые сторонние решения, так всё и осталось, как раньше молились на VirtualTreeView и Synapce, так до сих пор ничего не поменялось, хочешь получить что-то работающее — пиши ручками. И очень чувствуется недостаток разработчиков языка, новые мелкие фичи вводятся с невероятной помпой, вместо разработки компонентов покупают шареварщиков.
    Я программирую на делфах с самого первого выпуска, и соскочил с него на котлин. Господи, какой же кайф, когда и в языке куча сахара, и сообщество имеется, и решений множество на любой вкус.
    Поезд делфей ушёл, и основная вина в этом руководства, которое в эпоху бесплатных средств разработки задрало цену в заоблачные высоты, а теперь пытаются хоть кого-то привлечь выпуском community edition.
    И очень жалко разработчиков, которые поставили весь свой бизнес не на ту лошадь. Например, Сергей Ткаченко, которые написал текстовый редактор уровня word, с таблицами, гиперссылками и прям вот дофига всего. Работы море, а кому продать результат, если на делфах только остаются, но никто не приходит? Что было бы, если бы он начал писать на Java…


    1. MacIn
      24.03.2019 17:59
      +1

      так всё и осталось, как раньше молились на VirtualTreeView и Synapce,

      Synopse.
      Так а в чем проблема-то, если решение есть, и оно хорошее? Часть популярных пакетов потом становится стандартом, как те же Indy или FastMM.
      Пакетов — море, инструментов для отладки — тоже. Чего нет, можно подключить хоть из C, хоть из net.


      1. oldd
        24.03.2019 18:06
        +4

        Оно НЕ хорошее, оно единственное работающее. Нет на indy ssl-rest сервера, на синапсе можно прикрутить, но после знатных танцев с бубнами. Понимаете, и это во всём! Чуть то нужно — ищи хоть что-нибудь, доделывай, переделывай, и это из-за ОЧЕНЬ маленького сообщества. Не у кого спросить, невозможно найти примеры, на гитхабе жуткое неразвивающееся старьё, и т.д… Задалбливает.
        Насчёт подключения сторонних либ. Вы пробовали перевести хидеры из C++ в Делфи? Попробуйте перетащить и отладить (!) 100-200 классов, уверяю, вам не понравится.
        Пакет для отладки более-менее удобный только один — EurecaLog, сторонний, платный. Впрочем, как и многое в Делфах


        1. MacIn
          24.03.2019 18:59
          -1

          Нет на indy ssl-rest сервера, на синапсе можно прикрутить, но после знатных танцев с бубнами

          Не пробовал рест в синапсе, не могу сказать; но документация у них очень обширная, модульность неплоха, должно быть выполнимо — судя по примерам, REST сервер делается легко. Форум у них опять же есть, живой, на вопросы отвечают очень быстро. Я использую синапс мормот сейчас просто как https/websockets библиотеку и здесь выбор есть — Indy (1 connection=1 thread, не подходит), ICL и тому подобное или morMot от синапса (async, worker thread pool все дела, причем используется httpd ядра NT).
          В моей области деятельности — все есть, поэтому «так во всем» принять не могу.
          Касательно синапса «Не у кого спросить, невозможно найти примеры» так и вовсе мимо — и примеры есть полные, и форум, как писал выше.

          В общем, вопрос «где это все» — как-то странен.

          Насчёт подключения сторонних либ. Вы пробовали перевести хидеры из C++ в Делфи? Попробуйте перетащить и отладить (!) 100-200 классов, уверяю, вам не понравится

          Из плюсов — нет. Просто из Си — да, это не проблема. NETовские DLLки тоже использовал без проблем.

          Пакет для отладки более-менее удобный только один — EurecaLog, сторонний, платный. Впрочем, как и многое в Делфах

          Да, Eureka тоже пользуюсь. Инструмент отличный, не нарадуюсь. Приятно же при креше получать полный отчет с детализацией до номера строки.
          Платный? Ну да, так что с того? 150-250$ за лицензию для одиночки и до 1250$ за полную enterprise с исходниками на всю команду — разве это расходы? 750$ на команду если без исходников. Это не деньги.
          FastMM помогает отладить утечки памяти, например. Через map2dbg можно и WinDbg использовать и тому подобное.

          Мне решительно не понятен ваш фетиш на тему «сторонний — не сторонний». Инструмент — есть, какая разница, кем он выпущен? Никого же не возмущает, что надо использовать, скажем, сторонний (изначально) Boost?
          Это же замечательно, что есть возможность расширения сторонними производителями.


          1. oldd
            24.03.2019 19:04
            +2

            О да! mORMot! Опять сторонее, создаваемое ОДНИМ человеком, с жёсткими ограничениями. Таблиц не больше 64, left join в запросах работает криво, при ошибке на сервере запрос остаётся в отрытом состоянии, отжирая память на клиенте. И ОДНО обсуждение в русскоязычном интернете… Кстати, не мы ли там разговаривали, уж больно ответ похож? ;))
            А так да, всё нормально…


            1. MacIn
              24.03.2019 20:00
              +1

              Опять сторонее, создаваемое ОДНИМ человеком

              Так и пусть стороннее. Про то, сколько там разработчиков — не знаю, мне казалось, что команда.

              Таблиц не больше 64, left join в запросах работает криво, при ошибке на сервере запрос остаётся в отрытом состоянии, отжирая память на клиенте.

              В какой версии? Не думаю, что ограничение на количество таблиц невозможно исправить. Но — повторю — я использовал только сетевую библиотеку mORMot, конкретно обсуждать ваш случай не могу.

              И ОДНО обсуждение в русскоязычном интернете…

              Даже не знаю, что ответить. А кому оно нужно? За последние 10-12 лет из русскоязычных ресурсов пользовался только Хабром. Мне не понять вашу боль — для меня «задать вопрос» железобетонно = «задать вопрос на английском ресурсе». Особенно если продукт не из б. СССР.


              1. oldd
                24.03.2019 20:04

                В любой версии, ограничение на 64 таблицы фундаментальное, обойти нельзя. Ошибка на join тоже непростая, разработчик не обещает её исправить, типа, пользуйтесь ORM, тащите с сервера толпу данных и объединяйте их на клиенте.
                А по -поводу русскоязычного — это просто показывает распространение делфей у нас…


                1. alan008
                  26.03.2019 19:29

                  А по -поводу русскоязычного — это просто показывает распространение делфей у нас…

                  Уж если считать, что они у нас не распространены, то где тогда. РФ был последний оплот паскаля, можно сказать.


                  1. Groramar
                    26.03.2019 19:55

                    Паскаль довольно хорошо распространен не в Америке (по понятным причинам — 'благодаря' Майкрософту): Бразилия, Япония, Германия.
                    В мире сейчас больше трех миллионов пользователей Delphi, по Лазарусу нет данных.


            1. Chaa
              25.03.2019 09:02

              Максимум таблиц и полей в таблице 256, связано с ограничением на размер set в Delphi.
              Команда там интернациональная, и русскоязычных там довольно много. Общаемся в основном на местном форуме на английском.


              1. oldd
                25.03.2019 09:07

                Ссылка на другую запись создаётся как ( кусок кода из мормота )
                unit mORMot;
                function TSQLRecord.RecordReference(Model: TSQLModel): TRecordReference;
                begin
                ..if (self=nil) or (fID<=0) then
                ....result := 0 else begin
                ....result := Model.GetTableIndexExisting(PSQLRecordClass(Self)^);
                ....if result>63 then // TRecordReference handle up to 64=1 shl 6 tables
                ......result := 0 else
                ......inc(result,fID shl 6);
                ....end;
                end;

                И как в 6 бит запихнуть аж 256 таблиц? Не скажу, что документацию выучил наизусть, но такое фундаментальное ограничение должно быть написано красными буквами 14 размера в самом начале! А так я делал, делал, отлаживал, отлаживал, и все никак понять не мог — схренали ссылка показывает «в ту степь»

                И действительно большое спасибо за предупреждение о максимальном количестве таблиц, в документации этого тоже нет


                1. Chaa
                  25.03.2019 09:24

                  MAX_SQLTABLES сейчас 256. RecordReference не исправили скорее всего из соображений обратной совместимости. Можете исправить у себя, 56 бит для идентификатора записи должно хватить надолго.
                  Но лучше разделить большую систему на несколько поменьше.


        1. Groramar
          25.03.2019 17:14

          Нет на indy ssl-rest сервера, на синапсе можно прикрутить, но после знатных танцев с бубнами.

          mORMot в помощь:
          github.com/synopse/mORMot
          Довольно навороченная бесплатная либа.
          Понимаете, и это во всём! Чуть то нужно — ищи хоть что-нибудь, доделывай, переделывай, и это из-за ОЧЕНЬ маленького сообщества.

          Я бы не сказал, что сообщество даже в рунете маленькое, не говоря о мировом. Отвечают почти всегда.
          Не у кого спросить, невозможно найти примеры

          Если уж не нашел один из десятка активных форумов, можешь на телеграм канал зайти:
          t.me/Delphi_Lazarus
          Ежедневные, почти ежечасные обсуждения всего подряд.
          на гитхабе жуткое неразвивающееся старьё

          Это не так, множество проектов довольно активно развивается, вот список:
          github.com/Fr0sT-Brutal/awesome-pascal
          Насчёт подключения сторонних либ. Вы пробовали перевести хидеры из C++ в Делфи?

          Пробовали. Существует с десяток авто-переводчиков, большей частью справляются автоматом. Поправить хитрые места только.
          Пакет для отладки более-менее удобный только один — EurecaLog, сторонний, платный. Впрочем, как и многое в Делфах

          Это неверно. Есть FastMM, есть JCL Debug, есть Mad Excpept. Всё либо бесплатное, либо с ограничениями (последний пакет, по возможностям он местами лучше Эврики).


          1. oldd
            25.03.2019 17:47

            mORMot в помощь:
            Использую, у него свои косяки.
            Существует с десяток авто-переводчиков, большей частью справляются автоматом.
            Можно примеры? А то у нас человек сильно матерится, переводя HikVision и Bosch SDK
            Есть FastMM, есть JCL Debug
            Они научились автоматически создавать тикет в тикет-системе?


            1. Groramar
              25.03.2019 18:49

              Можно примеры? А то у нас человек сильно матерится, переводя HikVision и Bosch SDK
              Вот хотя б из свежих:
              github.com/neslib/Chet
              Они научились автоматически создавать тикет в тикет-системе?
              Mad Except умеет.


              1. oldd
                25.03.2019 19:22

                Вот хотя б из свежих:
                К сожалению, и этот не умеет С++, что прискорбно.
                Mad Except умеет.
                По нашему опыту, он самостоятельно падает чаше Еврики


                1. Groramar
                  25.03.2019 21:04

                  Можно попробовать здесь что-то поискать:
                  stackoverflow.com/questions/100596/best-resources-for-converting-c-c-dll-headers-to-delphi

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


            1. vvmtutby
              26.03.2019 09:41

              Существует с десяток авто-переводчиков, большей частью справляются автоматом.
              Можно примеры?

              SWIG (Simplified Wrapper and Interface Generator).
              Начиная с v1.3.22 — Modula-3, с UPDATE 2017:
              Modified by FMXExpress ( see on GitHub ) version of
              SWIG 3.0.11 for Delphi and Object Pascal


              1. oldd
                26.03.2019 09:52

                Спасибо, такого не видел.


    1. shiko_1st
      24.03.2019 19:14

      По первым пунктам — RemObjects SDK + DataAbstract

      Кстати, нормальный парсер JSON в C# тоже сторонний пакет — Newtonsoft.Json

      Но так-то да, боль ваша понятна. Сам на C# сейчас.


      1. dikkini
        24.03.2019 19:54
        -9

        Написал виндовое приложение на с# после 5 лет явы и питона. С# это боль, боль которую я лечил 1 месяцем кодинга на питоне. А знаете почему боль? Язык то хороший, ну с оговорками, а-ля я не готов писать переменные с большой буквы, а фигурные скобки переносить на новую строку — глаза вытекают при прочтении, но это мелочи, самое плохое в этом 2 месячном приключении это Visual Studio, после IDE от IntelliJ она воспринимается как Блокнот после Sublime Text. Ну и конечно виндоус, это печаль, я не представляю как люди продуктивно работают на этой ОС


        1. darked
          24.03.2019 20:29
          +2

          Подключаете ReSharper к VS и снова радуетесь жизни )


        1. Dansoid
          24.03.2019 22:59
          +2

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

          Глаза вырывают скобочки не там? Это отдельная тема где они должны стоять. И все что вы перечислели это необязательно.

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

          И так-же, у вас были деньги на Jetbrains продукты под линухами, почему вы рассчитывали без них обойтись на винде? Ставим ReSharper и имеем все те же плюшки. Или совсем рядом Rider — тот же экспириенс IDEA, и, учитывая сколько вы «помучались» с Visual Studio, думаю до недоделок вы бы и рядом не добрались.


          1. Maccimo
            25.03.2019 01:30
            +3

            Под статьёй о Delphi, в котором операторные скобки занимают от трёх до пяти символов каждая, рассуждать бы о многословности Java. :)


            1. vvmtutby
              25.03.2019 18:15

              Под статьёй о Delphi, в котором операторные скобки занимают от трёх до пяти символов каждая
              Это весьма известная история ( и ей тут самое место):
              За выживший в «эволюционной борьбе» begin можете сказать спасибо вполне конкретному ( с какого-то момента) бизнесмену. Почти дословно: «И зачем нам Borland Modula-2, когда и то что есть продаётся?»
              В Modula-2, ADA и Oberon «пятибуквенных скобок» меньше.

              Кстати, в Clarion со «скобочками» ( и, заодно, с "=") ещё более лаконично:
              If x = 5
                y = z * 3
              .


            1. MacIn
              25.03.2019 22:04

              Рассуждать о многословности Java под статьёй о Delphi, где операторные скобки занимают от 3 до 5 символов — можно, и никакого двоемыслия здесь нет.
              Тяжеловесная форма блочного оператора в (Object) Pascal воспринимается как синтаксический шум и быстро перестает быть чем-то значимым.

              Многословность Java в другом — начиная от принятой тяжеловесности идентификаторов и заканчивая собственно строго объектной парадигмой, что требует написания дополнительного чисто формального кода.


              1. Groramar
                25.03.2019 22:15

                Многословность Java в другом — начиная от принятой тяжеловесности идентификаторов и заканчивая собственно строго объектной парадигмой, что требует написания дополнительного чисто формального кода.
                В конце концов не зря же Котлин появился :)
                Писать begin/end, к слову, в Delphi давно не нужно — экспертом ctrl+shift+b блок добавляется на любом выделенном фрагменте кода (или просто на пустом месте) и сразу форматируется как нужно.


        1. vortupin
          25.03.2019 01:38
          +2

          самое плохое в этом 2 месячном приключении это Visual Studio
          Эти слова выдают явного неофита, незнакомого ни с азами профессии, ни с industry standards, а «хейтрество» «виндоус» (равно, как и написание) вообще с головой выдает пресловутую «школоту».


          1. geher
            25.03.2019 10:23

            А «хейтрество» «виндоус» (равно, как и написание) вообще с головой выдает пресловутую «школоту».

            Это да. Старика Виндоуса можно не любить ("мышами от него воняет", © Командир Ком), но писать его имя с маленькой буквы — перебор.


    1. 0xf0a00
      24.03.2019 20:35

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

      Странно, решения своих проблем я находил без проблем, даже в рунете. Благо когда язык был на пике популярности писалось на нем многое.
      Если вам не сложно, приведите пару примеров синтаксического сахара которого вам так не хватало в Делфи.


      1. oldd
        24.03.2019 20:45

        transaction {
        ....for (row in (s_tree.select { (s_tree.objectid eq parent.id) and (s_tree.objecttype eq parent.type) })) {
        ........parentPathStr = row[s_tree.objectpath]
        ........break
        ....}
        }
        Запустил транзакцию, выполнил запрос с параметрами, взял нужное поле, удалил запрос, закрыл транзакцию. В select передана DSL лямбда… Этот запрос всегда должен возвращать одну запись, а break- это перестраховка.
        Дело не в том, чего не хватало, в делфах и дженерики есть, и хелперы, в последних делфах даже var разрешили в коде писать (не прошло и 10 лет..) Но вот лаконичность синтаксиса kotlin — это прям как крылья за спиной. Вот сравните просто лямбды на котлине и анонимные функции на делфах — вроде и предназначение одинаково, но насколько меньше писать, никаких тебе function(bla-bla) :bla


    1. andreyiq
      25.03.2019 07:28

      FireDac вроде как умеет работать с PostgreSql. К ресту запросы через TIdHttp спокойной делаются и ssl там есть. Для json есть superobject. VirualTreeView отличный в DevExpress


      1. Groramar
        25.03.2019 17:22

        С PostgreSql много что работает: FireDAC, UniDAC, Zeos и так далее. DAC'ов для Delphi наверно с десяток разных. Сам UniDAC с Постгре юзаю.


    1. Groramar
      25.03.2019 16:57

      REST, ORM, SSL, PostrgeSQL, MongoDB, нормальный парсер JSON, наконец! Где это всё?

      Рекомендую поискать тут (вроде бы всё, что хочется есть):
      github.com/Fr0sT-Brutal/awesome-pascal


  1. chyvack
    24.03.2019 17:45

    Каким образом к теме относится 2005 год и гугл? из приведенного абзаца ничего не понятно.


    1. Zyryanek Автор
      25.03.2019 09:10

      Я привёл это для полноты картины и ретроспективы покупок и поглощений в борьбе за мобильный рынок


  1. vortupin
    24.03.2019 17:46
    +2

    Разработка Евгения Крюкова вернула и Delphi и компании Embarcadero устойчивую конкурентоспособность. Несмотря на то, что популярность языка Delphi/Object Pascal падает, в 2019 году он занимает 14 строчку в рейтинге языков программирования TIOBE.

    «Вы либо крестик снимите, либо трусы подтяните» (старый бородатый анекдот)
    Я вот так, навскидку, и не назову сходу 14 языков программирования. Говорить при этом о «устойчивой конкурентоспособности» (с каким языком, кстати?), как мне кажется, не приходится. Что, впрочем, отнюдь не умаляет достоинства разработки Евгения Крюкова.


    1. Zyryanek Автор
      24.03.2019 19:23

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


      1. HSerg
        24.03.2019 23:17
        +4

        Переход массовым и был… Все знакомые организации и разработчики ушли с Delphi. Одни любители (для Windows-поделок) и legacy support остались.


      1. vortupin
        25.03.2019 01:59
        +7

        Сергей, ну, что значит "был бы"? Delphi, даже в свои лучшие времена, так и не стала industry standard; даже в 97-98 в Штатах практически никто (по масштабам индустрии) Delphi не использовал, хотя альтернативы были достаточно «жутковатые»: MFC или только-только «зарелизенный» и глючный Visual Basic.

        «Перехода», как такового, не было потому, что на Delphi никто так всерьез в мире и не переходил; Borland делал все, что возможно, но силы и финансы были уж больно неравны.

        Помню, как я был удивлен, только что переехав в Штаты, что практически никто из американских коллег не слышал ни о Borland-овских IDE и компиляторах, ни о Norton Commander (а это были самые популярные программы программистов из exUSSR на то время). Да, аналог «гуёвой» поделки, которую я «ваял» между перекурами на Delphi за день, американский коллега уныло «пилил» и отлаживал минимум неделю, но… Его «поделка», к сожалению, была более «конкурентноспособной» и долгоживущей, нежели моя — потому, что найти в Штатах программиста, пишущего с использованием MFC было на порядок или два проще, кто знал Pascal и умел использовать Delphi.

        P.S. В каком-то смысле нам, «перестроечным программистам», повезло — мы использовали advanced IDE с advanced framework (впоследствие ставшие C# с .NET-ом) в то время, когда остальные программисты (вернее, «остальными программистами» были мы :) ) использовали «допотопные» технологии.


        1. Zyryanek Автор
          25.03.2019 02:16

          Не буду спорить, может и не так сильно устойчивую, но в любом случае конкурентоспособность даже в «догоняющем» плане Евгений Крюков все-таки повысил. А про то, что в пик популярности Delphi в России, на западе этой популярности не было я знаю. Меня вообще в этой истории привлек момент, что программист из глубины России получил одну из ведущих ролей все-таки в небезызвестной компании, и как совпадение предыдущий главный инженер Borland попал в нее точно также, продав ей свой компилятор.


          1. vortupin
            25.03.2019 02:29

            Ну, с программистами из России (подразумевая под этим весь exUSSR) в свое время все обстояло не так уж и плохо — немало русских добилось успеха на Западе. Евгений, безусловно, молодец: так удачно продать third party разработку — это нужно много и серьезно работать, ну, и удача явно не помешает в этом деле.

            P.S. Будете смеяться, но у меня до сих пор установлена Delphi 7, и даже работает (хотя не пишу на ней уже лет эдак… цать. Есть просто один небольшой проектик реализации «smart home» на X10, написанный в то время, когда еще таких слов-то не было, который захотелось не так давно «подрихтовать» чуток).


        1. sergegers
          25.03.2019 21:29

          Delphi, даже в свои лучшие времена, так и не стала industry standard; даже в 97-98 в Штатах практически никто (по масштабам индустрии) Delphi не использовал
          Ну, как раз Microsoft делала всё, чтобы защитить штатовский рынок. А вот в Японии, Бразилии, СССР Delphi был очень популярен.


          1. vortupin
            25.03.2019 21:51

            Угу, я как раз об этом и написал. А, учитывая, что 90% всего «софта» тогда писалось в США (как я думаю), то не удивительно, что «не взлетело». Хотя еще и компиляторы от Watcom когда-то были (в свое время весьма удачные, и эффективней микрософтовских), но тоже «не взлетели».


  1. afgm
    24.03.2019 22:00

    Сам сижу на Delphi. Решил попробовать пару дней назад FMX под Android. Хоть и для корпоратива, но я не готов так мучать пользователей. И это на хорошем железе. Web-интерфейс от UniGui с реализацией на Sencha Touch работает отзывчивее и приятнее. Потом попробовал Flutter и просто офигел: идея рисовать интерфейс самостоятельно, ровно как и в FMX. Если бы мне не сказали, что это не натив, то и не заподозрил бы.


  1. 4p4
    25.03.2019 09:52
    +1

    Знаю проект который наоборот окончательно отказался от Дельфи благодаря Крюкову, они купили у него лицензию на VG scene, а он прекратил поддержку, потому что ушёл в Борланд.


    Вообще Борланд создали Голландцы, которые потом уехали в Лондон, а потом в США. В сущности чужаки и это объясняет, что их продукты американцам мало известны. Поначалу у них был бизнес гаражного типа, с паскалем им повезло, склепали на коленке, продавался неплохо, стали нанимать народ. Но это не самоокупалось и превратиться в большой америкаский бизнес они не сумели, хотя вокруг них и отличная команда собралась уже из местных. Но кто будет покупать компиляторы у независимого производителя? Паскаль /Дельфи просто не окупались. Люди сделали всё что могли и в конце приняли логичное решение — устроиться поодиночке в этой жизни пока есть предложения. На момент переименования в Инпрайз уже вроде почти все разбежались. Вся последущая история это жизнь после смерти и то как настоящие американцы могут в своей стране делать деньги даже из того, что вот собственно говоря имеется теперь.


    1. Zyryanek Автор
      25.03.2019 10:33

      Про Крюкова странно конечно. В общем тяжелая судьба, но эти голландцы сделали потом C#


      1. barbanel
        25.03.2019 11:40

        ИМНИП, одна из версий Дельфи была предназначена исключительно для .net
        Delphi 8.


  1. prankov
    25.03.2019 11:25

    Простите, а где сама история успеха этого программиста?


    1. Zyryanek Автор
      25.03.2019 11:38

      Ну не поражением же считать покупку твоей разработки и оффер в международную компанию, или это у вас сарказм по поводу «невезучести» Delphi?


      1. prankov
        25.03.2019 11:43
        +1

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


  1. Gorthauer87
    25.03.2019 12:10
    +1

    Вообще оно может все и выжило бы, если бы они честно двигались в сторону opensource, в конечном счете, для всех популярных языков есть opensource реализации, даже MS с .net пошли в конце концов по этому пути.


    1. Groramar
      26.03.2019 09:30

      Lazarus+FPC opensource как раз. Постепенно по фичам приближается к Delphi. LCL был кросс-платформенным всегда. Среда запускается прямо 'по месту', что удобно. Работает на чем угодно, что имеет процессор и хоть какую-то операционку.


  1. toxicdream
    25.03.2019 14:20
    +1

    Для меня Delphi это пример того как хорошие идеи губятся эффективными менеджерами.
    Вирт — гений. Его идеи оказали огромное влияние на всю IT- отрасль. Любой программист или компания пытавшаяся игнорировать хотя бы некоторые его "истины" в итоге наступал на такие грабли, что в итоге не все оставались на плаву.
    К сожалению, Вирт не менеджер, и он не оставил такого же короткого, ёмкого и всем понятного свода правил для управления. В итоге Borland хоть и следовала правилам Вирта в IT-части, не смогла вытянуть в менеджменте. Современные гиганты как раз таки основаны "правильными" менеджерами, которые интуитивно следуют правилам "IT-менеджмента". Попытка формализовать эти правила выливается в многотомные талмуды ITIL, TOGAF и хреново знает ещё что. Это область все ещё ждёт своего Вирта.
    И добавлю про сам Delphi. Он "развивается" "эффективными менеджерами" по принципу "здесь купить — там продать". Они так и не выстроили нормальный диалог с сообществом. Информатика — наука о способах генерации, хранения, передачи, обработки и представления информации. И язык программирования должен развивать инструменты для покрытия всех этих способов с учётом их изменении. У нас же кое-как допилили Indy для работы с TCP/IP и UDP. Причём только с OpenSSL. А ведь кроме OpenSSL есть несколько способов безопасной передачи информации. Но нет, ни WinCryptoAPI, ни WinCNG. Не говоря о других. И API у OpenSSL поменялся. Но поддержку не завозят 2 год. Что насчёт MQ? MQ это IoT, это будущее. Есть три стандарта протоколов MQ. Delphi не поддерживает ни один из них. Заниматься для этого переводом заголовочных файлов C/C++ это мазохизм. Клепание для этого обертки над C# либами проводит к осознанию что лучше все на C# переписать.
    Каждый раз когда говорят о Delphi мне становится грустно. Как вспоминания о студенчестве оставшееся в прошлом. Но в отличие от молодости востребованность языка можно вернуть. Наблюдаешь за каждым релизом, смотришь на roadmap, и каждый раз мысль "не то, они не желают нас слышат". Главное продать обернув купленную очередную шаровару в красивую обертку.


    1. Zyryanek Автор
      25.03.2019 16:22

      Эх, кажется я насыпал соль на рану своей публикацией.