Делфийская история успеха программиста из Улан-Удэ

    Мир суровый, но маленький и возможности его изменить есть у каждого. В 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.
    Share post

    Comments 91

      +2
      Есть еще FMX for linux и VCL for linux. Так что кроссплатформенность еще больше чем кажется. Я собирал приложения с одинаковым интерфейсом для Linux, Windows и Mac из одного проекта просто сменив платформу сборки. Для андроид тоже можно, но тут я уже не экспериментировал. Использовать надо Delphi 10.2 /10.3
        0
        Я про Linux не в курсе, думал что это отдельные open source пакеты, думаете стоит добавить в статью?
          +3
          Это дополнения для среды от стороннего разработчика(платные), можете добавить. Меня лично, как делфи разработчика, очень удивила возможность деплоить один бинарник в linux так же просто как и в windows.
            +1
            Добавил, возможно в Wikipedia устаревшая информация
              –1
              а разве автоматом Википедия не регулирует моменты устаревания? Я помню на какой-то странице прям жирным тегом показывала, мол, внимание, данная информация чего-то там 224 дня
              0
              Причем, сторонним разработчиком является KSDev того же самого Крюкова. Равно как и в случае CrossVCL
            0
            Насколько помню, VCL под Linux выпускается сторонним разработчиком, стоит немало, и нет никаких гарантий, что развитие продолжится. Более того, этот разработчик ушел из команды Embarcadero из-за разногласий
            +9
            Переименование Борланда было дикостью космического масштаба. В своей ЦА известность и привычность этого имени приближалась к Кока-коле или Мерседесу. Зачем его было менять?! Это невозможно объяснить.
              0
              Руководство хотело подчеркнуть стратегический курс на корпоративный сектор, но это наоборот еще хуже повлияло на результаты продаж, так как заказчики после переименования не понимали куда будут развиваться продукты.
                +3
                Согласен: дичайшей дикостью. Еще до Дельфи Борланд стал одним из лидеров рынка компиляторов благодаря своим турбо-языкам, а на рынке ОО Паскаля вытеснил продукт Микрософта. Переименование — это ошибка маркетинга. Не менее дикая ИМХО была ошибка развития: утрата совместимости с Дельфи-7 в последующих версиях. Думаю, что сравнительно не очень высокий рейтинг в TIOBE — во многом плата за эти ошибки.
                  0
                  В смысле — утрата совместимости? Коллеги говорили, что компилили в семёрке мои исходники, сделанные в 2009 версии.
                    +1
                    Раньше тип string был равен anisString, т.е. то одному байту на символ, а потом кто-то умный в Embarcadero решил, что пусть будет string = wideString, т.е. 2 байта на символ. А т.к. дофига программ использовало строки как буфера, то резко все указатели уехали.
                      0
                      Это да, может быть; я везде в 2009, где надо было писать однобайтовые строки, писал по умолчанию ANSIChar и ANSIString; семёрка эти типы принимала нормально, и всё компилировалось и работало.
                        +1
                        Вот это точно «былинный отказ», тут не поспоришь. Самому сейчас надо переносить проект в много миллионов строк с 7 на 10.2, и это ппц.
                        Самое поганое, что даже недостаточно просто заменить string на ansistring, pchar на pAnsiChar. Старая строка была по сути byte string, и при операциях не учитывалась кодировка.
                        Кроме того, WinApi везде в новых дельфях по умолчанию используется в W варианте, тоже много переделок. RTL вся только под WideString. Отсюда — постоянные преобразования от однобайтного к двухбайтному представлению и обратно — потеря производительности. Просто тупо удвоенный расход памяти, учитывая, что все строки — ASCII и второй байт всегда будет равен нулю.
                        И нет бы сделать как в FPC, чтобы можно было выбрать Ansi-only вариант или Unicode, так нет, просто порвали совместимость.
                          0
                          Я тупо менял sting на AnsiString, pchar на PAnsiChar и т.д., ну и ручками доковыривал, если что поломалось. Проблема с быстродействием не стояла, потому как компьютеры со времён Delphi 6-7 ушли далеко вперёд.
                            0
                            Я тупо менял sting на AnsiString, pchar на PAnsiChar и т.д., ну и ручками доковыривал

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

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

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

                              0
                              Придется просто по частям, сначала библиотеки, потом самые маленькие утилиты пакета и так далее.
                              0
                              Самому сейчас надо переносить проект в много миллионов строк с 7 на 10.2, и это ппц.
                              Самое поганое, что даже недостаточно просто заменить string на ansistring, pchar на pAnsiChar.
                              В целом не всё так плохо. По собственному опыту переноса нескольких миллионнострочных приложений. Как раз таки, как правило, string и char/pchar трогать не нужно.
                                0
                                Мне интересно, что же все-таки такое, «многомиллионное», по вашим словам, вы переносите?
                                Google Chrome (browser) runs on 6.7 million lines of code (upper estimate). The Android operating system runs on 12-15 million lines.
                                Если честно, то «свежо предание, да верится с трудом»…
                                  0
                                  Кинул в личку
                              0

                              Не WideString, а UnicodeString.


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

                                0
                                Решение «кого-то умного» полностью поддерживаю, неюникодное приложение в 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 вагон.

                                  0
                                  Copy, если что, c TBytes работает вполне. Как и с любыми другими динамическими массивами.
                                    0
                                    Скорее вопросы будут не просто с копированием участка, а с выделением строки из TBytes и наоборот.
                                    В общем, решения-то есть, но все равно сложностей много.
                                0
                                Не только string. У меня ассемблерные вставки не заработали.
                                0
                                Наоборот. То, что написал в шестерке, без проблем транслировал в семерке. Но то, что писал в семерке, не смог транслировать в следующей версии «как есть».
                            +1
                            В 1996 году начиная изучать только что появившийся Delphi, я не мог себе представить, какая будет судьба у этого языка, который сильно повлиял на Java и C#

                            Справедливо только про C# (разработчика переманили и дизайнер форм очень похож), который вышел позже. Про Java же сомнительно, и Delphi и Java вышли в 1995
                              0
                              А у Delphi, в свою очередь, дизайнер форм во многом очень похож на Visual Basic, где он в таком виде появился в 1992 году.
                                0
                                ИМХО дизайнеры форм (Delphi и VB) похожи на ResEdit середины 1980х ( в Вики плохая картинка).
                                0
                                Если не найду источник где я взял упоминание про Java, то удалю из статьи. Пока искал, нашел забавный факт как Андерс Хейлсберг устроился в Borland. Оказывается он написал компилятор Паскаля для MS-DOS и продал его Borland, впоследствии стал ее главным инженером. История такая же как у Евгения Крюкова
                                  +1
                                  Это про Никлауса Вирта, а не Borland:
                                  Комментаторы не раз отмечали, что идеи Вирта зачастую опережали развитие компьютерной индустрии на годы, иногда — на десятилетия. Разработанная в начале 1970-х система Pascal-P, предполагающая компиляцию программ на Паскале в универсальный «пи-код» и реализацию на любой платформе интерпретатора пи-кода (одна из известных её реализаций — UCSD-Pascal Университета Сан-Диего), которая позволяла с минимальными затратами переносить Паскаль-системы на новые аппаратные платформы, более чем на два десятилетия опередила идеи интерпретатора промежуточного кода, реализованные в системах, поддерживающих исполнение программ на языке Java и в платформе .NET. Идея совмещения системы программирования со сборщиком мусора, освобождающим программиста от необходимости отслеживать время жизни объектов, динамически размещённых в памяти, была реализована в 1988 году в языке и операционной системе Оберон. Обе эти идеи были использованы разработчиками Java и .NET во второй половине 1990-х годов.

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

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

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

                                    Synopse.
                                    Так а в чем проблема-то, если решение есть, и оно хорошее? Часть популярных пакетов потом становится стандартом, как те же Indy или FastMM.
                                    Пакетов — море, инструментов для отладки — тоже. Чего нет, можно подключить хоть из C, хоть из net.
                                      +4
                                      Оно НЕ хорошее, оно единственное работающее. Нет на indy ssl-rest сервера, на синапсе можно прикрутить, но после знатных танцев с бубнами. Понимаете, и это во всём! Чуть то нужно — ищи хоть что-нибудь, доделывай, переделывай, и это из-за ОЧЕНЬ маленького сообщества. Не у кого спросить, невозможно найти примеры, на гитхабе жуткое неразвивающееся старьё, и т.д… Задалбливает.
                                      Насчёт подключения сторонних либ. Вы пробовали перевести хидеры из C++ в Делфи? Попробуйте перетащить и отладить (!) 100-200 классов, уверяю, вам не понравится.
                                      Пакет для отладки более-менее удобный только один — EurecaLog, сторонний, платный. Впрочем, как и многое в Делфах
                                        –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?
                                        Это же замечательно, что есть возможность расширения сторонними производителями.
                                          +2
                                          О да! mORMot! Опять сторонее, создаваемое ОДНИМ человеком, с жёсткими ограничениями. Таблиц не больше 64, left join в запросах работает криво, при ошибке на сервере запрос остаётся в отрытом состоянии, отжирая память на клиенте. И ОДНО обсуждение в русскоязычном интернете… Кстати, не мы ли там разговаривали, уж больно ответ похож? ;))
                                          А так да, всё нормально…
                                            +1
                                            Опять сторонее, создаваемое ОДНИМ человеком

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

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

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

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

                                            Даже не знаю, что ответить. А кому оно нужно? За последние 10-12 лет из русскоязычных ресурсов пользовался только Хабром. Мне не понять вашу боль — для меня «задать вопрос» железобетонно = «задать вопрос на английском ресурсе». Особенно если продукт не из б. СССР.
                                              0
                                              В любой версии, ограничение на 64 таблицы фундаментальное, обойти нельзя. Ошибка на join тоже непростая, разработчик не обещает её исправить, типа, пользуйтесь ORM, тащите с сервера толпу данных и объединяйте их на клиенте.
                                              А по -поводу русскоязычного — это просто показывает распространение делфей у нас…
                                                0
                                                А по -поводу русскоязычного — это просто показывает распространение делфей у нас…

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

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

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

                                                0
                                                Ссылка на другую запись создаётся как ( кусок кода из мормота )
                                                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 размера в самом начале! А так я делал, делал, отлаживал, отлаживал, и все никак понять не мог — схренали ссылка показывает «в ту степь»

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

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

                                            +1
                                            Нет на 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. Всё либо бесплатное, либо с ограничениями (последний пакет, по возможностям он местами лучше Эврики).
                                              0
                                              mORMot в помощь:
                                              Использую, у него свои косяки.
                                              Существует с десяток авто-переводчиков, большей частью справляются автоматом.
                                              Можно примеры? А то у нас человек сильно матерится, переводя HikVision и Bosch SDK
                                              Есть FastMM, есть JCL Debug
                                              Они научились автоматически создавать тикет в тикет-системе?
                                                0
                                                Можно примеры? А то у нас человек сильно матерится, переводя HikVision и Bosch SDK
                                                Вот хотя б из свежих:
                                                github.com/neslib/Chet
                                                Они научились автоматически создавать тикет в тикет-системе?
                                                Mad Except умеет.
                                                  0
                                                  Вот хотя б из свежих:
                                                  К сожалению, и этот не умеет С++, что прискорбно.
                                                  Mad Except умеет.
                                                  По нашему опыту, он самостоятельно падает чаше Еврики
                                                    0
                                                    Можно попробовать здесь что-то поискать:
                                                    stackoverflow.com/questions/100596/best-resources-for-converting-c-c-dll-headers-to-delphi
                                                    По нашему опыту, он самостоятельно падает чаше Еврики
                                                    Странно, у меня сложилось мнение как раз наоборот. Эврика, бывает, иногда падает, правда очень редко. Mad не видел ни разу, что бы упал. Правда, мы его юзали меньше, Эврика удобнее.
                                                  0
                                                  Существует с десяток авто-переводчиков, большей частью справляются автоматом.
                                                  Можно примеры?

                                                  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
                                                    0
                                                    Спасибо, такого не видел.
                                            0
                                            По первым пунктам — RemObjects SDK + DataAbstract

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

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

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

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

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

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

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

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

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

                                                      Кстати, в Clarion со «скобочками» ( и, заодно, с "=") ещё более лаконично:
                                                      If x = 5
                                                        y = z * 3
                                                      .
                                                        0
                                                        Рассуждать о многословности Java под статьёй о Delphi, где операторные скобки занимают от 3 до 5 символов — можно, и никакого двоемыслия здесь нет.
                                                        Тяжеловесная форма блочного оператора в (Object) Pascal воспринимается как синтаксический шум и быстро перестает быть чем-то значимым.

                                                        Многословность Java в другом — начиная от принятой тяжеловесности идентификаторов и заканчивая собственно строго объектной парадигмой, что требует написания дополнительного чисто формального кода.
                                                          0
                                                          Многословность Java в другом — начиная от принятой тяжеловесности идентификаторов и заканчивая собственно строго объектной парадигмой, что требует написания дополнительного чисто формального кода.
                                                          В конце концов не зря же Котлин появился :)
                                                          Писать begin/end, к слову, в Delphi давно не нужно — экспертом ctrl+shift+b блок добавляется на любом выделенном фрагменте кода (или просто на пустом месте) и сразу форматируется как нужно.
                                                      +2
                                                      самое плохое в этом 2 месячном приключении это Visual Studio
                                                      Эти слова выдают явного неофита, незнакомого ни с азами профессии, ни с industry standards, а «хейтрество» «виндоус» (равно, как и написание) вообще с головой выдает пресловутую «школоту».
                                                        0
                                                        А «хейтрество» «виндоус» (равно, как и написание) вообще с головой выдает пресловутую «школоту».

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

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

                                                    Странно, решения своих проблем я находил без проблем, даже в рунете. Благо когда язык был на пике популярности писалось на нем многое.
                                                    Если вам не сложно, приведите пару примеров синтаксического сахара которого вам так не хватало в Делфи.
                                                      0
                                                      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
                                                      0

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

                                                        0
                                                        С PostgreSql много что работает: FireDAC, UniDAC, Zeos и так далее. DAC'ов для Delphi наверно с десяток разных. Сам UniDAC с Постгре юзаю.
                                                        0
                                                        REST, ORM, SSL, PostrgeSQL, MongoDB, нормальный парсер JSON, наконец! Где это всё?

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

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

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

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

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

                                                                +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-ом) в то время, когда остальные программисты (вернее, «остальными программистами» были мы :) ) использовали «допотопные» технологии.
                                                                  0
                                                                  Не буду спорить, может и не так сильно устойчивую, но в любом случае конкурентоспособность даже в «догоняющем» плане Евгений Крюков все-таки повысил. А про то, что в пик популярности Delphi в России, на западе этой популярности не было я знаю. Меня вообще в этой истории привлек момент, что программист из глубины России получил одну из ведущих ролей все-таки в небезызвестной компании, и как совпадение предыдущий главный инженер Borland попал в нее точно также, продав ей свой компилятор.
                                                                    0
                                                                    Ну, с программистами из России (подразумевая под этим весь exUSSR) в свое время все обстояло не так уж и плохо — немало русских добилось успеха на Западе. Евгений, безусловно, молодец: так удачно продать third party разработку — это нужно много и серьезно работать, ну, и удача явно не помешает в этом деле.

                                                                    P.S. Будете смеяться, но у меня до сих пор установлена Delphi 7, и даже работает (хотя не пишу на ней уже лет эдак… цать. Есть просто один небольшой проектик реализации «smart home» на X10, написанный в то время, когда еще таких слов-то не было, который захотелось не так давно «подрихтовать» чуток).
                                                                    0
                                                                    Delphi, даже в свои лучшие времена, так и не стала industry standard; даже в 97-98 в Штатах практически никто (по масштабам индустрии) Delphi не использовал
                                                                    Ну, как раз Microsoft делала всё, чтобы защитить штатовский рынок. А вот в Японии, Бразилии, СССР Delphi был очень популярен.
                                                                      +1
                                                                      Угу, я как раз об этом и написал. А, учитывая, что 90% всего «софта» тогда писалось в США (как я думаю), то не удивительно, что «не взлетело». Хотя еще и компиляторы от Watcom когда-то были (в свое время весьма удачные, и эффективней микрософтовских), но тоже «не взлетели».
                                                                0
                                                                Сам сижу на Delphi. Решил попробовать пару дней назад FMX под Android. Хоть и для корпоратива, но я не готов так мучать пользователей. И это на хорошем железе. Web-интерфейс от UniGui с реализацией на Sencha Touch работает отзывчивее и приятнее. Потом попробовал Flutter и просто офигел: идея рисовать интерфейс самостоятельно, ровно как и в FMX. Если бы мне не сказали, что это не натив, то и не заподозрил бы.
                                                                  +1

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


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

                                                                    0
                                                                    Про Крюкова странно конечно. В общем тяжелая судьба, но эти голландцы сделали потом C#
                                                                      0
                                                                      ИМНИП, одна из версий Дельфи была предназначена исключительно для .net
                                                                      Delphi 8.
                                                                    0
                                                                    Простите, а где сама история успеха этого программиста?
                                                                      0
                                                                      Ну не поражением же считать покупку твоей разработки и оффер в международную компанию, или это у вас сарказм по поводу «невезучести» Delphi?
                                                                        +1
                                                                        Нет, просто я думал тут будет больше про него чем про историю языка и всего что было с ним
                                                                      0

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

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

                                                                        Для меня 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, и каждый раз мысль "не то, они не желают нас слышат". Главное продать обернув купленную очередную шаровару в красивую обертку.

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

                                                                        Only users with full accounts can post comments. Log in, please.