Я попробовал сделать маленький срез исторических событий, чтобы рассказать об одном малоизвестном русском программисте из Улан-Удэ. Это очень круто, что один человек из глубинки России может вклиниться в историю и повлиять на конкуренцию больших компаний. Это дает всем нам основание думать, что усилия и надежды могут оправдаться.
На фото один из видов древнегреческого города Дельфы, в честь которого была названа среда разработки 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)
dom1n1k
24.03.2019 14:53+9Переименование Борланда было дикостью космического масштаба. В своей ЦА известность и привычность этого имени приближалась к Кока-коле или Мерседесу. Зачем его было менять?! Это невозможно объяснить.
Zyryanek Автор
24.03.2019 17:18Руководство хотело подчеркнуть стратегический курс на корпоративный сектор, но это наоборот еще хуже повлияло на результаты продаж, так как заказчики после переименования не понимали куда будут развиваться продукты.
third112
24.03.2019 17:42+2Согласен: дичайшей дикостью. Еще до Дельфи Борланд стал одним из лидеров рынка компиляторов благодаря своим турбо-языкам, а на рынке ОО Паскаля вытеснил продукт Микрософта. Переименование — это ошибка маркетинга. Не менее дикая ИМХО была ошибка развития: утрата совместимости с Дельфи-7 в последующих версиях. Думаю, что сравнительно не очень высокий рейтинг в TIOBE — во многом плата за эти ошибки.
lubezniy
24.03.2019 19:15В смысле — утрата совместимости? Коллеги говорили, что компилили в семёрке мои исходники, сделанные в 2009 версии.
oldd
24.03.2019 19:21+1Раньше тип string был равен anisString, т.е. то одному байту на символ, а потом кто-то умный в Embarcadero решил, что пусть будет string = wideString, т.е. 2 байта на символ. А т.к. дофига программ использовало строки как буфера, то резко все указатели уехали.
lubezniy
24.03.2019 19:31Это да, может быть; я везде в 2009, где надо было писать однобайтовые строки, писал по умолчанию ANSIChar и ANSIString; семёрка эти типы принимала нормально, и всё компилировалось и работало.
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, так нет, просто порвали совместимость.oldd
24.03.2019 21:06Я тупо менял sting на AnsiString, pchar на PAnsiChar и т.д., ну и ручками доковыривал, если что поломалось. Проблема с быстродействием не стояла, потому как компьютеры со времён Delphi 6-7 ушли далеко вперёд.
MacIn
24.03.2019 23:14Я тупо менял sting на AnsiString, pchar на PAnsiChar и т.д., ну и ручками доковыривал
Это-то не проблема, и утилиты для этого есть. Но этого мало.
Представьте, что у вас весь код — ASCII, и вам надо кинуть исключение, а оно в новой RTL только Unicode — нужны либо явные приведения, а это нечитаемо, либо неявные, а это лишние warning'и, подавлять которые некомильфо.
Вся работа с TStringList'ами, с WinAPI переписывается. В общем, веселье еще то.
Проблема с быстродействием не стояла, потому как компьютеры со времён Delphi 6-7 ушли далеко вперёд.
Сравнение-то не компьютера времен 6-7 и сегодняшнего дня. А сегодняшнего дня с 7кой и сегодняшнего дня с 10.
Там, где много приведений туда-обратно, это является проблемой. А уж двойная потеря памяти и вовсе атас, в некоторых местах может не хватить адресного пространства (код-то 32 битный).
Groramar
25.03.2019 16:51Самому сейчас надо переносить проект в много миллионов строк с 7 на 10.2, и это ппц.
В целом не всё так плохо. По собственному опыту переноса нескольких миллионнострочных приложений. Как раз таки, как правило, string и char/pchar трогать не нужно.
Самое поганое, что даже недостаточно просто заменить string на ansistring, pchar на pAnsiChar.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.
Если честно, то «свежо предание, да верится с трудом»…
Maccimo
25.03.2019 01:16Не
WideString
, аUnicodeString
.
Решение «кого-то умного» полностью поддерживаю, неюникодное приложение в XXI веке это дичь какая-то. Да и исправление тривиальное, заменить на
RawByteString
. А если уместно, то перевести на использованиеTBytes
.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 вагон.
third112
25.03.2019 04:38Наоборот. То, что написал в шестерке, без проблем транслировал в семерке. Но то, что писал в семерке, не смог транслировать в следующей версии «как есть».
maxzh83
24.03.2019 16:02+1В 1996 году начиная изучать только что появившийся Delphi, я не мог себе представить, какая будет судьба у этого языка, который сильно повлиял на Java и C#
Справедливо только про C# (разработчика переманили и дизайнер форм очень похож), который вышел позже. Про Java же сомнительно, и Delphi и Java вышли в 1995Whuthering
24.03.2019 16:49А у Delphi, в свою очередь, дизайнер форм во многом очень похож на Visual Basic, где он в таком виде появился в 1992 году.
Zyryanek Автор
24.03.2019 17:06Если не найду источник где я взял упоминание про Java, то удалю из статьи. Пока искал, нашел забавный факт как Андерс Хейлсберг устроился в Borland. Оказывается он написал компилятор Паскаля для MS-DOS и продал его Borland, впоследствии стал ее главным инженером. История такая же как у Евгения Крюкова
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,…
Stas911
24.03.2019 21:12Приличные IDE для Java, насколько помню, появились только в начале 2000х, тч у Борланда (мир его праху) была фора минимум лет в 5. Да и вообще, не помню серьезного cпроса и вообще использования Java до начала 2000х. В это время софта на Delphi и VB был вагон написан.
maxzh83
24.03.2019 21:46Приличные IDE для Java, насколько помню, появились только в начале 2000х
При чем тут IDE? В статье речь про язык. Да и основная концепция (Write once, run anywhere) и виртуальная машина Java ничего общего с Delphi не имеет.Stas911
24.03.2019 21:54Толку от языка, если для него нет инфраструктуры?
maxzh83
24.03.2019 22:04+2Еще раз, речь про то, на что повлиял Delphi.
Толку от языка, если для него нет инфраструктуры?
Ну вот и сравните сколько сейчас IDE и инфраструктуры для Java и сколько для Delphi. При этом вы сами сказали, что у Delphi фора была, так может в языке дело?
oldd
24.03.2019 17:15+4Разработка Евгения Крюкова вернула и Delphi и компании Embarcadero устойчивую конкурентоспособность.
Одним FMX жив не будешь. REST, ORM, SSL, PostrgeSQL, MongoDB, нормальный парсер JSON, наконец! Где это всё? А нигде, как были кривые сторонние решения, так всё и осталось, как раньше молились на VirtualTreeView и Synapce, так до сих пор ничего не поменялось, хочешь получить что-то работающее — пиши ручками. И очень чувствуется недостаток разработчиков языка, новые мелкие фичи вводятся с невероятной помпой, вместо разработки компонентов покупают шареварщиков.
Я программирую на делфах с самого первого выпуска, и соскочил с него на котлин. Господи, какой же кайф, когда и в языке куча сахара, и сообщество имеется, и решений множество на любой вкус.
Поезд делфей ушёл, и основная вина в этом руководства, которое в эпоху бесплатных средств разработки задрало цену в заоблачные высоты, а теперь пытаются хоть кого-то привлечь выпуском community edition.
И очень жалко разработчиков, которые поставили весь свой бизнес не на ту лошадь. Например, Сергей Ткаченко, которые написал текстовый редактор уровня word, с таблицами, гиперссылками и прям вот дофига всего. Работы море, а кому продать результат, если на делфах только остаются, но никто не приходит? Что было бы, если бы он начал писать на Java…MacIn
24.03.2019 17:59+1так всё и осталось, как раньше молились на VirtualTreeView и Synapce,
Synopse.
Так а в чем проблема-то, если решение есть, и оно хорошее? Часть популярных пакетов потом становится стандартом, как те же Indy или FastMM.
Пакетов — море, инструментов для отладки — тоже. Чего нет, можно подключить хоть из C, хоть из net.oldd
24.03.2019 18:06+4Оно НЕ хорошее, оно единственное работающее. Нет на indy ssl-rest сервера, на синапсе можно прикрутить, но после знатных танцев с бубнами. Понимаете, и это во всём! Чуть то нужно — ищи хоть что-нибудь, доделывай, переделывай, и это из-за ОЧЕНЬ маленького сообщества. Не у кого спросить, невозможно найти примеры, на гитхабе жуткое неразвивающееся старьё, и т.д… Задалбливает.
Насчёт подключения сторонних либ. Вы пробовали перевести хидеры из C++ в Делфи? Попробуйте перетащить и отладить (!) 100-200 классов, уверяю, вам не понравится.
Пакет для отладки более-менее удобный только один — EurecaLog, сторонний, платный. Впрочем, как и многое в Делфах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?
Это же замечательно, что есть возможность расширения сторонними производителями.oldd
24.03.2019 19:04+2О да! mORMot! Опять сторонее, создаваемое ОДНИМ человеком, с жёсткими ограничениями. Таблиц не больше 64, left join в запросах работает криво, при ошибке на сервере запрос остаётся в отрытом состоянии, отжирая память на клиенте. И ОДНО обсуждение в русскоязычном интернете… Кстати, не мы ли там разговаривали, уж больно ответ похож? ;))
А так да, всё нормально…MacIn
24.03.2019 20:00+1Опять сторонее, создаваемое ОДНИМ человеком
Так и пусть стороннее. Про то, сколько там разработчиков — не знаю, мне казалось, что команда.
Таблиц не больше 64, left join в запросах работает криво, при ошибке на сервере запрос остаётся в отрытом состоянии, отжирая память на клиенте.
В какой версии? Не думаю, что ограничение на количество таблиц невозможно исправить. Но — повторю — я использовал только сетевую библиотеку mORMot, конкретно обсуждать ваш случай не могу.
И ОДНО обсуждение в русскоязычном интернете…
Даже не знаю, что ответить. А кому оно нужно? За последние 10-12 лет из русскоязычных ресурсов пользовался только Хабром. Мне не понять вашу боль — для меня «задать вопрос» железобетонно = «задать вопрос на английском ресурсе». Особенно если продукт не из б. СССР.oldd
24.03.2019 20:04В любой версии, ограничение на 64 таблицы фундаментальное, обойти нельзя. Ошибка на join тоже непростая, разработчик не обещает её исправить, типа, пользуйтесь ORM, тащите с сервера толпу данных и объединяйте их на клиенте.
А по -поводу русскоязычного — это просто показывает распространение делфей у нас…alan008
26.03.2019 19:29А по -поводу русскоязычного — это просто показывает распространение делфей у нас…
Уж если считать, что они у нас не распространены, то где тогда. РФ был последний оплот паскаля, можно сказать.
Groramar
26.03.2019 19:55Паскаль довольно хорошо распространен не в Америке (по понятным причинам — 'благодаря' Майкрософту): Бразилия, Япония, Германия.
В мире сейчас больше трех миллионов пользователей Delphi, по Лазарусу нет данных.
Chaa
25.03.2019 09:02Максимум таблиц и полей в таблице 256, связано с ограничением на размер set в Delphi.
Команда там интернациональная, и русскоязычных там довольно много. Общаемся в основном на местном форуме на английском.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 размера в самом начале! А так я делал, делал, отлаживал, отлаживал, и все никак понять не мог — схренали ссылка показывает «в ту степь»
И действительно большое спасибо за предупреждение о максимальном количестве таблиц, в документации этого тоже нетChaa
25.03.2019 09:24MAX_SQLTABLES сейчас 256. RecordReference не исправили скорее всего из соображений обратной совместимости. Можете исправить у себя, 56 бит для идентификатора записи должно хватить надолго.
Но лучше разделить большую систему на несколько поменьше.
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. Всё либо бесплатное, либо с ограничениями (последний пакет, по возможностям он местами лучше Эврики).oldd
25.03.2019 17:47mORMot в помощь:
Использую, у него свои косяки.
Существует с десяток авто-переводчиков, большей частью справляются автоматом.
Можно примеры? А то у нас человек сильно матерится, переводя HikVision и Bosch SDK
Есть FastMM, есть JCL Debug
Они научились автоматически создавать тикет в тикет-системе?Groramar
25.03.2019 18:49Можно примеры? А то у нас человек сильно матерится, переводя HikVision и Bosch SDK
Вот хотя б из свежих:
github.com/neslib/Chet
Они научились автоматически создавать тикет в тикет-системе?
Mad Except умеет.oldd
25.03.2019 19:22Вот хотя б из свежих:
К сожалению, и этот не умеет С++, что прискорбно.
Mad Except умеет.
По нашему опыту, он самостоятельно падает чаше ЕврикиGroramar
25.03.2019 21:04Можно попробовать здесь что-то поискать:
stackoverflow.com/questions/100596/best-resources-for-converting-c-c-dll-headers-to-delphi
По нашему опыту, он самостоятельно падает чаше Еврики
Странно, у меня сложилось мнение как раз наоборот. Эврика, бывает, иногда падает, правда очень редко. Mad не видел ни разу, что бы упал. Правда, мы его юзали меньше, Эврика удобнее.
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
shiko_1st
24.03.2019 19:14По первым пунктам — RemObjects SDK + DataAbstract
Кстати, нормальный парсер JSON в C# тоже сторонний пакет — Newtonsoft.Json
Но так-то да, боль ваша понятна. Сам на C# сейчас.dikkini
24.03.2019 19:54-9Написал виндовое приложение на с# после 5 лет явы и питона. С# это боль, боль которую я лечил 1 месяцем кодинга на питоне. А знаете почему боль? Язык то хороший, ну с оговорками, а-ля я не готов писать переменные с большой буквы, а фигурные скобки переносить на новую строку — глаза вытекают при прочтении, но это мелочи, самое плохое в этом 2 месячном приключении это Visual Studio, после IDE от IntelliJ она воспринимается как Блокнот после Sublime Text. Ну и конечно виндоус, это печаль, я не представляю как люди продуктивно работают на этой ОС
Dansoid
24.03.2019 22:59+2Вот противоположное мнение появилось. Жава как была многословной так исталась. Питон как скриптовый язык хорош, но для больших решений это будущая попаболь.
Глаза вырывают скобочки не там? Это отдельная тема где они должны стоять. И все что вы перечислели это необязательно.
Вот работаю на маке, в свободное время, благо работодатели дали такую возможность, сам бы не решился экспереметировать. И хочу вам сказать, это слабое подобие левой руки, хотя если подготовиться скриптами за пятерку лет, то можно и работать с той же эффективностью что у меня сейчас на на винде.
И так-же, у вас были деньги на Jetbrains продукты под линухами, почему вы рассчитывали без них обойтись на винде? Ставим ReSharper и имеем все те же плюшки. Или совсем рядом Rider — тот же экспириенс IDEA, и, учитывая сколько вы «помучались» с Visual Studio, думаю до недоделок вы бы и рядом не добрались.Maccimo
25.03.2019 01:30+3Под статьёй о Delphi, в котором операторные скобки занимают от трёх до пяти символов каждая, рассуждать бы о многословности Java. :)
vvmtutby
25.03.2019 18:15Под статьёй о Delphi, в котором операторные скобки занимают от трёх до пяти символов каждая
Это весьма известная история ( и ей тут самое место):
В Modula-2, ADA и Oberon «пятибуквенных скобок» меньше.За выживший в «эволюционной борьбе» begin можете сказать спасибо вполне конкретному ( с какого-то момента) бизнесмену. Почти дословно: «И зачем нам Borland Modula-2, когда и то что есть продаётся?»
Кстати, в Clarion со «скобочками» ( и, заодно, с "=") ещё более лаконично:
If x = 5 y = z * 3 .
MacIn
25.03.2019 22:04Рассуждать о многословности Java под статьёй о Delphi, где операторные скобки занимают от 3 до 5 символов — можно, и никакого двоемыслия здесь нет.
Тяжеловесная форма блочного оператора в (Object) Pascal воспринимается как синтаксический шум и быстро перестает быть чем-то значимым.
Многословность Java в другом — начиная от принятой тяжеловесности идентификаторов и заканчивая собственно строго объектной парадигмой, что требует написания дополнительного чисто формального кода.Groramar
25.03.2019 22:15Многословность Java в другом — начиная от принятой тяжеловесности идентификаторов и заканчивая собственно строго объектной парадигмой, что требует написания дополнительного чисто формального кода.
В конце концов не зря же Котлин появился :)
Писать begin/end, к слову, в Delphi давно не нужно — экспертом ctrl+shift+b блок добавляется на любом выделенном фрагменте кода (или просто на пустом месте) и сразу форматируется как нужно.
vortupin
25.03.2019 01:38+2самое плохое в этом 2 месячном приключении это Visual Studio
Эти слова выдают явного неофита, незнакомого ни с азами профессии, ни с industry standards, а «хейтрество» «виндоус» (равно, как и написание) вообще с головой выдает пресловутую «школоту».geher
25.03.2019 10:23А «хейтрество» «виндоус» (равно, как и написание) вообще с головой выдает пресловутую «школоту».
Это да. Старика Виндоуса можно не любить ("мышами от него воняет", © Командир Ком), но писать его имя с маленькой буквы — перебор.
0xf0a00
24.03.2019 20:35Господи, какой же кайф, когда и в языке куча сахара, и сообщество имеется, и решений множество на любой вкус.
Странно, решения своих проблем я находил без проблем, даже в рунете. Благо когда язык был на пике популярности писалось на нем многое.
Если вам не сложно, приведите пару примеров синтаксического сахара которого вам так не хватало в Делфи.oldd
24.03.2019 20:45transaction {
....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
andreyiq
25.03.2019 07:28FireDac вроде как умеет работать с PostgreSql. К ресту запросы через TIdHttp спокойной делаются и ssl там есть. Для json есть superobject. VirualTreeView отличный в DevExpress
Groramar
25.03.2019 17:22С PostgreSql много что работает: FireDAC, UniDAC, Zeos и так далее. DAC'ов для Delphi наверно с десяток разных. Сам UniDAC с Постгре юзаю.
Groramar
25.03.2019 16:57REST, ORM, SSL, PostrgeSQL, MongoDB, нормальный парсер JSON, наконец! Где это всё?
Рекомендую поискать тут (вроде бы всё, что хочется есть):
github.com/Fr0sT-Brutal/awesome-pascal
vortupin
24.03.2019 17:46+2Разработка Евгения Крюкова вернула и Delphi и компании Embarcadero устойчивую конкурентоспособность. Несмотря на то, что популярность языка Delphi/Object Pascal падает, в 2019 году он занимает 14 строчку в рейтинге языков программирования TIOBE.
«Вы либо крестик снимите, либо трусы подтяните» (старый бородатый анекдот)
Я вот так, навскидку, и не назову сходу 14 языков программирования. Говорить при этом о «устойчивой конкурентоспособности» (с каким языком, кстати?), как мне кажется, не приходится. Что, впрочем, отнюдь не умаляет достоинства разработки Евгения Крюкова.Zyryanek Автор
24.03.2019 19:23Без этой разработки думаю был бы неизбежен массовый переход на другие языки, а так держатся ведь
HSerg
24.03.2019 23:17+4Переход массовым и был… Все знакомые организации и разработчики ушли с Delphi. Одни любители (для Windows-поделок) и legacy support остались.
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-ом) в то время, когда остальные программисты (вернее, «остальными программистами» были мы :) ) использовали «допотопные» технологии.Zyryanek Автор
25.03.2019 02:16Не буду спорить, может и не так сильно устойчивую, но в любом случае конкурентоспособность даже в «догоняющем» плане Евгений Крюков все-таки повысил. А про то, что в пик популярности Delphi в России, на западе этой популярности не было я знаю. Меня вообще в этой истории привлек момент, что программист из глубины России получил одну из ведущих ролей все-таки в небезызвестной компании, и как совпадение предыдущий главный инженер Borland попал в нее точно также, продав ей свой компилятор.
vortupin
25.03.2019 02:29Ну, с программистами из России (подразумевая под этим весь exUSSR) в свое время все обстояло не так уж и плохо — немало русских добилось успеха на Западе. Евгений, безусловно, молодец: так удачно продать third party разработку — это нужно много и серьезно работать, ну, и удача явно не помешает в этом деле.
P.S. Будете смеяться, но у меня до сих пор установлена Delphi 7, и даже работает (хотя не пишу на ней уже лет эдак… цать. Есть просто один небольшой проектик реализации «smart home» на X10, написанный в то время, когда еще таких слов-то не было, который захотелось не так давно «подрихтовать» чуток).
sergegers
25.03.2019 21:29Delphi, даже в свои лучшие времена, так и не стала industry standard; даже в 97-98 в Штатах практически никто (по масштабам индустрии) Delphi не использовал
Ну, как раз Microsoft делала всё, чтобы защитить штатовский рынок. А вот в Японии, Бразилии, СССР Delphi был очень популярен.vortupin
25.03.2019 21:51Угу, я как раз об этом и написал. А, учитывая, что 90% всего «софта» тогда писалось в США (как я думаю), то не удивительно, что «не взлетело». Хотя еще и компиляторы от Watcom когда-то были (в свое время весьма удачные, и эффективней микрософтовских), но тоже «не взлетели».
afgm
24.03.2019 22:00Сам сижу на Delphi. Решил попробовать пару дней назад FMX под Android. Хоть и для корпоратива, но я не готов так мучать пользователей. И это на хорошем железе. Web-интерфейс от UniGui с реализацией на Sencha Touch работает отзывчивее и приятнее. Потом попробовал Flutter и просто офигел: идея рисовать интерфейс самостоятельно, ровно как и в FMX. Если бы мне не сказали, что это не натив, то и не заподозрил бы.
4p4
25.03.2019 09:52+1Знаю проект который наоборот окончательно отказался от Дельфи благодаря Крюкову, они купили у него лицензию на VG scene, а он прекратил поддержку, потому что ушёл в Борланд.
Вообще Борланд создали Голландцы, которые потом уехали в Лондон, а потом в США. В сущности чужаки и это объясняет, что их продукты американцам мало известны. Поначалу у них был бизнес гаражного типа, с паскалем им повезло, склепали на коленке, продавался неплохо, стали нанимать народ. Но это не самоокупалось и превратиться в большой америкаский бизнес они не сумели, хотя вокруг них и отличная команда собралась уже из местных. Но кто будет покупать компиляторы у независимого производителя? Паскаль /Дельфи просто не окупались. Люди сделали всё что могли и в конце приняли логичное решение — устроиться поодиночке в этой жизни пока есть предложения. На момент переименования в Инпрайз уже вроде почти все разбежались. Вся последущая история это жизнь после смерти и то как настоящие американцы могут в своей стране делать деньги даже из того, что вот собственно говоря имеется теперь.
Gorthauer87
25.03.2019 12:10+1Вообще оно может все и выжило бы, если бы они честно двигались в сторону opensource, в конечном счете, для всех популярных языков есть opensource реализации, даже MS с .net пошли в конце концов по этому пути.
Groramar
26.03.2019 09:30Lazarus+FPC opensource как раз. Постепенно по фичам приближается к Delphi. LCL был кросс-платформенным всегда. Среда запускается прямо 'по месту', что удобно. Работает на чем угодно, что имеет процессор и хоть какую-то операционку.
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, и каждый раз мысль "не то, они не желают нас слышат". Главное продать обернув купленную очередную шаровару в красивую обертку.
0xf0a00
Есть еще FMX for linux и VCL for linux. Так что кроссплатформенность еще больше чем кажется. Я собирал приложения с одинаковым интерфейсом для Linux, Windows и Mac из одного проекта просто сменив платформу сборки. Для андроид тоже можно, но тут я уже не экспериментировал. Использовать надо Delphi 10.2 /10.3
Zyryanek Автор
Я про Linux не в курсе, думал что это отдельные open source пакеты, думаете стоит добавить в статью?
0xf0a00
Это дополнения для среды от стороннего разработчика(платные), можете добавить. Меня лично, как делфи разработчика, очень удивила возможность деплоить один бинарник в linux так же просто как и в windows.
Zyryanek Автор
Добавил, возможно в Wikipedia устаревшая информация
Mouseee
а разве автоматом Википедия не регулирует моменты устаревания? Я помню на какой-то странице прям жирным тегом показывала, мол, внимание, данная информация чего-то там 224 дня
DmLam
Причем, сторонним разработчиком является KSDev того же самого Крюкова. Равно как и в случае CrossVCL
oldd
Насколько помню, VCL под Linux выпускается сторонним разработчиком, стоит немало, и нет никаких гарантий, что развитие продолжится. Более того, этот разработчик ушел из команды Embarcadero из-за разногласий