Pull to refresh

Comments 377

Как он может быть мертв если он единственный кто кросплатформенный и на реально все платформы может нативно + человеческий редактор и конструктор + кодовая база и офигенная обратная совместимость.
UFO just landed and posted this here
Да-да, вы про Qt только обязательно расскажите, что простая формочка с двумя кнопками со статическими либами на винде занимает всего лишь ~200 Mb, ребилдится при этом полностью всего за 8 часов, если полностью из сорцов собирать. А уж какая у Qt идеальная обратная совместимость — легенды прямо ходят! То, что писано в предыдущей _минорной_ версии не соберется более нигде — ни в следующей версии Qt, ни в предыдущей, ни в какой. Про кросс-платформенность и Qt также можно почитать веселые истории на тему сокетов в винде и линупсе, например. Про мак даже и вообще лучше не вспоминать от греха.
UFO just landed and posted this here
UFO just landed and posted this here

Нативный компилятор Дельфи под Win32- самый быстрый из мною виденных.
Реально С++ после него кажется сошедшим с комикса xkcd. И ребилд всего проекта на нём- обычное дело, не проблема ваще. Правда компиляторы под другие платформы, как я слышал, построены на основе LLVM, что не лучшим образом сказалось на скорости. Но все равно с цпп- нёбо и земля.

UFO just landed and posted this here
Оптимизация отстает от плюсовой до 5-7 процентов. Чаще всего разницы на глаз между плюсовыми и делфевыми сырцами заметить невозможно. Основные алгоритмы оптимизированы на уровне ассемблера в коробке, так что разницы там вообще нет. Шаблонов, к счастью, не завезли. Дженерики существуют и давно.
UFO just landed and posted this here
К сожалению, оптимизация сгенерированного кода для Embarcadero не приоритет. Она есть, но могла бы быть и лучше. Насколько знаю, сейчас разработка IDE и платформы отдана в оффшорные команды, и они очень заняты поддержкой новых платформ Android, iPhone и проч. В качестве замены предлагается использовать готовые оптимизированные специализированные библиотеки, написанные на Delphi либо других языках. А при наличии опыта у команды — использовать ассемблерные вставки для оптимизации узких мест. Как пример — оптимизация нейросети под команды AVX: github.com/joaopauloschuler/neural-api/blob/master/neural/neuralvolume.pas

Инлайнить можно глобальные процедуры и методы классов (см. примеры в коде по ссылке выше). С типобезопасностью у Pascal/Delphi проблем не было никогда. Поэтому не вижу проблем наваять быстрый и безопасный Delphi-код c цепочками обработчиков. Не знаю что там поменяли в шаблонах у С/С++, когда я последний раз пытался разбираться в нём, там можно было творить жуткие вещи. Может, сейчас слегка обрезали возможности этой «фичи» в языке…
Шаблон я бы отнёс к минусам, говорящим о том, что в C++ существует проблема с раздуванием кода. И шаблоны призваны упростить работу программиста C++. Только вот в Delphi с этим проблем я не наблюдал, следовательно для чего там такой инструмент (читайте костыль)?

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

Вот вам простой пример, пробросте дельфийский класс в питон, в С++ благодаря шаблонам это делается в несколько строчек.
Подробнее можно? Что по-вашему пробросить? Чтоб питон его из библиотеки достал?
Да например есть класс
class A
{
public:
    void msg(const std::string& text);
    int count();
};

А в питоне соответственно
import my_lib

my_a = my_lib.A()
my_a.msg("hello my little pony")
print(my_a.count())

в плюсах это делается так
BOOST_PYTHON_MODULE(my_lib)
{
   boost::python::class_<A>("A")
		.def("msg", &A::msg)
		.def("count", &A::count)
}

Лично я знаю способ через интерфейсы. Только вот это не значит, что нет ещё какого способа.
Ну при быстром гуглении я не нашёл, а через интерфейсы, можете показать?
Но это же не то. Это как запихнуть интерфейс класса в длл (в дельфях нельзя классы в длл экспортить 0_о вот это поворот) для питона это не подходит.
Вообщем пока дельфи не в состоянии сделать то что для меня необходимо. Ну точнее может, но без шаблонов код превращается в кошмар сродни проброски lua.
Кстати можно посмотреть как биндится луа и сравнить. В С++ будет примерно также как и с питоном. В дельфи я думаю мало что изменилось в этом плане со времён моего обучения в универе, там биндинги были только через работу с lua стеком интересно есть ли подвижки сейчас.
Просто в С++ в нативном виде луа также только через луа стэк работает. Но благодаря шаблонам это превращается в простой код.

Шаблоны я могу много ещё для каких целей предложить, которые уменьшают работу в несколько раз. Так что не надо говорить что
Вы предлагаете поставить плюс к C++ относительно Delphi, функционалом, нужным только C++.
потому что это не так, у вас просто нет ни опыта ни знаний для того чтобы в принципе оценить ценность шаблонов С++. (что-то сродни эффекту Даннинга Крюгера)
Во-первых, в Delphi ещё с ранних времён поддерживали COM и OLE, и библиотеки COM классов были столбовой дорогой. И настолько лучше, чем в C++ тех лет, что кто не прогал COM в Delphi, можно считать, вообще не имеет понятия о COM. Потом уже каждый отдельный Python через OLE подхватит всё автоматом.

Во-вторых, в Delphi 2010 пошли по пути Objective-C. Код нативный, но может быть сдобрен произвольно обильным количеством метаинформации. Класс или лучше интерфейс помечаются $M, затем вызовы можно делать через System.Rtti. Я не знаком с Python API, но, я так понимаю, раз и навсегда там можно закодить, чтоб из Python'овских any переделывать в System.Rtti.TValue, всё это дело вызывать и обратно результат заворачивать. И это будет работать для всего, где в Delphi есть RTTI, без написания def().def(). До Delphi 2010 поддержка RTTI тоже была, но ей довольно непросто было пользоваться (см. Hallvard Vassbotn RTTI Utils и переводы блога у GunSmoker).

Вообще, конечно, лучше всего IBM SOM возродить для нативного кода, чем маяться с языкоцентричными решениями
Потом уже каждый отдельный Python через OLE подхватит всё автоматом.

Ух, а можно пример? А то быстрое гугление не находит ничего похожего.
Я не знаком с Python API, но, я так понимаю, раз и навсегда там можно закодить, чтоб из Python'овских any переделывать в System.Rtti.TValue, всё это дело вызывать и обратно результат заворачивать. И это будет работать для всего, где в Delphi есть RTTI, без написания def().def().

Опять же, очень хочется увидеть библиотеку которая это делает.

Насчёт COM и OLE конечно это довольно полезные вещи, но они требуют довольно прилично кода для обвязки, и это даже не близко по удобству как экспорт С++ класса.
zabaykin.ru/?p=53 вот нашёл работу с OLE из Python

Да только это обёртка над ком, там используется не сама ком библиотека, она завраплена скорее всего через тот же С++.
А это через RTTI:
github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Components/Sources/Core/WrapDelphi.pas

Причём, как я вижу по истории, они там с 2005го года ещё через старенький неудобный RTTI умели работать.

А теперь смотрим как делаются биндинги в питон при помощи этой библиотеки
github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo08/Unit1.pas
Вы правда считаете это лучше чем то что предлагает С++?
Там по сути пробрасывается
struct Point
{
   int x,y;
};

В комментариях к модулю-обёртке, в истории изменений был указан номер демо 31. Открыл и вижу:

github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.pas#L74

Использование из Python:

github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.dfm#L112

Да только это обёртка над ком, там используется не сама ком библиотека, она завраплена скорее всего через тот же С++.


Не понял
В комментариях к модулю-обёртке, в истории изменений был указан номер демо 31. Открыл и вижу:

github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.pas#L74

Использование из Python:

github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/De

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

Питон не умеет использовать напрямую ком объекты, для этого их оборачивают при помощи С или С++
А я не вижу. Смотрю в описание класса
  procedure SetMeUp(S: string; I : Integer);
  function DescribeMe(): string;


Смотрю как заворачивается:

  p := PyDelphiWrapper.Wrap(TTestClass.Create, soOwned);
  PythonModule.SetVar( 'DVar', p );
  PyEngine.Py_DecRef(p);


И я почитал, с TTestRTTIAccess чуть ниже более прямой пример, только на современный RTTI опирается.

Питон не умеет использовать напрямую ком объекты, для этого их оборачивают при помощи С или С++


Единый для всех win32com этим и занимается. Ну а также oleaut32.dll, в которой движок, читающий библиотеку типов из ресурсов и реализующий IDispatch для бинарных интерфейсов.
Смотрю как заворачивается:

Так там каждый инстанс заворачивается. А в примере на питоне я нигде не увидел просто
 some_Var = mymodule.TTestClass()

Единый для всех win32com этим и занимается. Ну а также oleaut32.dll, в которой движок, читающий библиотеку типов из ресурсов и реализующий IDispatch для бинарных интерфейсов.
А понял, да прикольно, но всё равно писать com библиотеки вместо нормального кода то ещё извращание + это к сожалению только для винды.
Если у нас можно дампить методы и аргументы любых классов и записей с расширенным RTTI, то и сам класс пробрасывается.

В dfm я видел, как это делается для органов управления:

      class MyForm(Form):
        def __init__(self, Owner):
          self.Caption = 'Subclassed form'
          self.btnClose = Button(self)
          self.btnClose.Parent = self
          self.btnClose.Caption = 'Close'
          self.btnClose.SetBounds(10, 10, 120, 30)
          self.btnClose.OnClick = self.btnCloseClick
      
          self.chkCanClose = CheckBox(self)
          self.chkCanClose.Parent = self
          self.chkCanClose.Caption = 'Can close?'
          self.chkCanClose.SetBounds(10, 50, 120, 30)
      
          self.grdTest = DrawGrid(self)
          self.grdTest.Parent = self
          self.grdTest.SetBounds(10, 100, 300, 250)
          self.grdTest.OnDrawCell = self.grdTestDrawCell
          self.grdTest.OnSelectCell = self.grdTestSelectCell
      
          self.OnCloseQuery = self.MyFormCloseQuery
          self.OnClose = self.MyFormClose
          self.Width = 400
          self.Height = 400


Как минимум Button и CheckBox здесь динамически созданы

писать com библиотеки вместо нормального кода


А с чего вдруг нормальным кодом не считается COM? Какой смысл делать кучу привязок под отдельные языки программирования, когда можно осчастливить всех разом. Я вот для Visual DialogScript сделал мост в OLE и получил возможность качать файлы по SFTP. И всё остальное, что можно делать через OLE библиотеки. 2ГИСом рулить. А так стали бы в 2ГИС делать модуль для VDS? Очень сомневаюсь.

И управление памятью там сразу понятное. В Delphi, если программа вся на интерфейсах, как у нас на работе, тоже всё понятно. А в C++ там я не знаю как надо офигеть, чтоб каждый нюанс типа shared_ptr_from_this корректно учесть. Шаблонами я не видел, чтоб это делалось, зато видел, как напильником работают в SWIG.

+ это к сожалению только для винды


На ущербных операционках вполне пашет PyXPCOM.

Вообще, конечно, это мощный камень в огород государства. Кто как не государство должно строить недостающую инфраструктуру. На примере Jabber мы уже увидели, как коммерсы неспособны договориться.
Ну или как IBM с Apple тянули на своих плечах кроссплатформенный IBM System Object Model (Windows, OS/2, Mac OS, UNIX AIX, мэйнфреймы с OS/390). Компилятор C++ модифицировали, чтоб SOM классы генерил вместо обычных C++ классов. И интеграцию в скрипты REXX всего этого дела. Object COBOL ещё получил SOM как единственный способ делать объекты. Сторонние разработчики запилили DirectToSOM Modula-2, и стало как минимум три языка нативного программирования, между которыми работает наследование классов, есть выход в скрипты, удалённый вызов методов и все остальные прелести Middleware. Но потом пришла Java, и вроде как натив стал не нужен, а когда поняли, что нет, нужен, про былые достижения натива забыли.

Коммерсам это вспомнить будет выгодно, если у раковины будет один слив. То есть, никогда или
только для винды

или если всё запечатать в проприетарный ЯП.

Подходящее место — это университеты, как бы только их отучить смотреть в рот коммерсам, а самим творить историю.
UFO just landed and posted this here
А сколько само Delphi из сорцов ребилдится?
Так как сырцы Делфи (IDE) закрыты, то могу сказать сколько времени собирается Лазарусь. Секунд 10-15.
ребилдится при этом полностью всего за 8 часов, если полностью из сорцов собирать


А сколько само Delphi из сорцов ребилдится?


Вы напрасно пытаетесь тут что-то выкружить.
У Borland Pascal всегда была довольно шустрая компиляция, ибо одного прохода достаточно, Вирт продумал это при проектировании языка.
Можно предположить, минут 20-30.
30 минут vs 8 часов — это небо и земля.
И это полностью из исходников, чего никто не делает.
А из подготовленных предварительно (автоматически) бинарников библиотек/объектных файлов — считанные секунды (очень крупные программы — десятки секунд).

Вы Delphi тоже из сорцов собираете каждый раз?

UFO just landed and posted this here
Это проблема винды, да и только винды. В *nix операционах закачивается разовый набор библиотек qt, а все приложения, как винда, за собой не тянут тонну бинарников и весят еле еле.

Еще можно статически скомпилировать QT и будут у вас бинарники по паре мегабайтов.

Так же по моему опыту, я собирал программу на Qt4, при этом изначально тестировал ее в Qt5 на локальном компе, а потом удаленно компилил на машинке с астра-линуксом (на котором только 4 версия работает) и там все работало
Знаете, минимальное окошко на Qt весит примерно 5 метров, что ли.
На D7 — 400 кб.
Справедливости ради, текущие минимальные программы на Delphi XE весят по 2 Мб — все в угоду совместимости и кросплатформенности и вряд ли кто-то сейчас станет писать серьезный коммерческий софт на D7, раз есть D XE, хотя в общем то и по сей день программы написанные в далеких 2000-х на D7 прекрасно работают на Win 10 например, хотя зачастую и не обходится без костылей и танцев с бубном.
Я вам больше скажу — софт написанный на D7 еще и прекрасно работает под вайном )
Знаю, юзеры об этом рапортуют периодически )

У меня есть программа написанная больше 13 лет назад в D7, и она все еще отлично работает в современной винде. И это просто удивительно. Самое интересное что я теперь даже скомпилировать эту программу не смогу, поскольку использовались сторонние библиотеки, которые даже скачать теперь просто невозможно (да и не помню как это все настраивать).

А каково будет еще через 13 лет собирать проекты, которые все зависимость в сети хранят.
до сих пор пишу на D5. переехал бы на что посвежее, но смысла особого нет — и так всё нормально работает.
В версиях поновее появилось удобное визуальное выравнивание компонентов прямо при расстановке без выделения компонентов и вызова меню. (Не помню, с какой — кажется, в D2010 уже было).
Пожалуй, да, выравнивание компонентов одна из немногих вещей, которой не хватает. но можно привыкнуть. Вторая посерьезнее, но к дельфи отношения не имеет — хочется больших тематических наборов картинок под кнопки с удобным поиском. И как-то упорядочить работу с этим, а то бывает добавишь в программу, а потом не помнишь из какого файла… Но все эти претензии не настолько существенны, чтобы все бросить и переезжать.
немного не то что вы хотите — но вот (syncfusion metrostudio) достаточно удобный бесплатный оффлайн каталог, с поиском и всем таким.
скачал последнюю 5-ю версию, поставил, но или не разобрался или иконки там только монохромные. а меня от интерфейса аля виндоуз10 подташнивает. да и не удобно в программе — когда иконок на форме десяток-другой, цвет имеет значение.
Хотя редактор там, надо признать, интересный.
Цвет и форму иконок можно менять. Правда в иконке будет только два цвета, насколько я помню, зато любых + прозрачность. И форму тоже можно менять.

Я и не говорил что это идеальное решение. Но. Несколько тысяч, бесплатно, оффлайн, с поиском… Если хотите и вам не хватает того что там есть — сделайте экспорт из этого редактора и раскрасьте сами.
Icons8. В последних версиях RAD Studio через GetIt можно установить одним кликом. Но можно и через сайт скачать. Довольно удобно.
'Вылезает из XAML и HTML' — 'Что_О? О чем говорят эти люди?'
В XE2 (если не ошибаюсь) появилась встроенная поддержка работы с zip-архивами. Буквально на днях маленький проект с ней делал.

Generics, полноценная поддержка Unicode — уже пары этих пунктов достаточно, чтобы забыть D5 как страшный сон.

UFO just landed and posted this here
современные возможности посмотрю, спасибо.
что касается остального — я хотел донести мысль, что и на 5-ке, которая 1999-го года, т.е. будет 21 год в этом году, что по меркам разработки уже какая-то древность, что-то типа Алгола в 90-х, так вот, на 5-ке вполне можно комфортно разрабатывать достаточно сложные standalone корпоративные системы, которые будут быстро работать и нетребовательны к ресурсам. Несомненно, для начинающих есть существенные выгоды в новых версиях, но когда на Delphi пишешь 25 лет уже давно есть набор практически всех необходимых для работы библиотек, значительная часть которых еще и самостоятельно написана.

А юникод… ну вот в 3-ке с ним были проблемы, помню, что и сподвигло с нее переехать, а вот в 5-ке как-то не вижу больших проблем.
Delphi был изначально очень хорошо, можно сказать, идеально, спроектирован.
В том числе благодаря чему он и держится до сих пор в топах языков (почти всегда в десятке +-, из, замечу, тысяч и тысяч) не смотря на постоянные и безуспешные попытки его похоронить :)

Java JS Python C++ C# Ruby VB PHP Swift Go — вот уже список топ10 закончился, при этом все эти языки гарантированно популярнее делфи.


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

Но по сравнению с тем же сишарпом (спроектированного тем самым Хелсбергом) оказался просто предыдущей, менее удачной инкарнацией.
Всего лишь ошибка выжившего. Был бы поддержан Делфи Майкрософтом, и сейчас тоже самое говорили бы о Сишарпе.

Основные идеи делфи: процедуры и функции как отдельные сущности, ключевые слова вместо спецсимволов, то что в половине компиляторов нужно было писать FunctionName :=… чтобы что-то вернуть, а в половине Result := ..., ну и так далее — не особо удобны, и для соверменного языка недопустимы. Впрочем, и сишарп уже старичок, которому понемногу пора собираться на покой.

То что вместо месива значков и скобочек в исходниках нормальные человеческие слова — это уже на вкус и цвет. Важно, чтобы язык был удобен тем, кто на нём пишет.
В актуальных компиляторах (Delphi, FPC) можно возвращать значение функции так: Exit(Value); Эквивалент return value; в C.
То есть визуальную среду, объектную модель, статическую сильную типизацию и прочие плюшки вы опустили? То, до чего другие языки тянутся десятилетиями уже было в Делфи изначально.

Не писал десктоп формы с 2013 года, и из наверное полсотни знакомых с которыми общаюсь ни один не пишет.


Но если бы вдруг понадобилось — взял бы Winform/WPF, которые живые и отлично работает.

визуальную среду

Пока ты студент, не умеющий программировать — замечательная вещь. Как только начинаются серьёзные проекты и основная работа с GUI принимает форму доработки собственных визуальных компонентов, «визуальность» уже не воспринимаешь как что-то значимое. Зачастую проще и удобнее сформировать UI в коде.


объектную модель, статическую сильную типизацию

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

Пока ты студент, не умеющий программировать — замечательная вещь. Как только начинаются серьёзные проекты и основная работа с GUI принимает форму доработки собственных визуальных компонентов, «визуальность» уже не воспринимаешь как что-то значимое. Зачастую проще и удобнее сформировать UI в коде

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

Я больше о топ 10 языках.
В JS сильную типизацию только недавно завезли и то не из коробки (и, замечу, тем же человеком что и Делфи сделал) статической я так понял там так и нет, в Питоне тоже насколько я знаю статическую недавно сделали внешней же библиотекой.
C/C++, понятно, что до сильной типизации сильно не дотягивают.
Что осталось? Шарпы появились позже Делфи.
Жава, ок. Только что язык настолько многословный (и еще делфи на begin/end пеняют, смех), что пришлось Котлин переизобретать.
UFO just landed and posted this here
Многословность Java всегда добавляет неудобств, множество. IDE конечно, помогает, но это не панацея. Да и читать сгенерированный код всё равно придется. Другой вопрос — насколько менее многословен Delphi?
И что с того, что позже то? :)

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

То, к чему другие языки приходили годами и десятилетиями, было в Делфи изначально и давно, и это один из плюсов в общем-то. Кодовая база успела наработаться сразу с хорошим синтаксисом и кода и объектной модели. А что мы сейчас видим в JS? Ежегодные фреймворки. Которые один от другого отличаются, как здесь писали, сильнее, чем Сишарп от Делфи. Врятли это так уж хорошо и удобно для бизнеса — постоянно переписывать код занова.
Нам вот неудобно.
Мы среди прочего пишем часть проектов на JS. Всё до сих пор написано на jQuery, который уже, видимо, не торт. А переписать возможности (точнее времени) нет совсем.
А вам пользователи не присылают смешные скриншоты с мониторов Ретина, где DPI 300%? И как дела с автоматическим показом экранной клавиатуры на вендопланшетах

С языком, конечно, не связано напрямую, но для Delphi GUI — это важная часть экосистемы
Всё ок с High DPI в Делфи в последних версиях, либо в сторонних гуи компонентах (мы SpTBX используем) на более старых версиях.
Минимальное окошко на Delphi 3 — 2 кБ (приложение скомпилировано как консольное, но использует WinAPI).
С WinApi можно засунуть вывод графики 3d в эти 2 кб, без проблем… знаю это так как когда-то давно делелал 64кб игры и демки
Что ж вы так выборочно комментите…
Нормальный редактор и нормальный конструктор — Qt в пролете со свистом. Делфи среда собранная, ставишь и все работает.C Qt нужны пляски. Собираешь как жигули и пытаешься как то ездить. В Делфи если надо добавить компоненты, в пару кликов все добавляется. Что может этому противопоставить Qt? Ничего не может. Из оставшегося только кроплатформенность которая поддерживается за счет таскания на спине жирных библиотек Qt. У Делфи все пакуется в один exe файл и никакого головняка. Некоторые компоненты позволяют не ставить драйверы для баз данных типа оракла. Просто копируешь exe на голую винду и все у тебя работает. Куда уж проще. Про дикий расход ресурсов у Qt, что бы этот комбайн работал и совместимость вам уже ниже написали.

Товарищи с горящими седалищами, вы можете минусить меня, плевать в карму… затыкать рты другим, но факт в том что Делфи понял куда ему надо и пришел в движение. И минусы не изменят того что по совокупности факторов он уже хорошее решение для многих задач.

В Делфи если надо добавить компоненты, в пару кликов все добавляется.

Да только формошлёпство к сожалению уже давно не используют при написании приложений, все всё больше уходят в сторону QML, XAML подобных решений, хз есть ли что-то подобное в дельфях (вроде FireMonkey подходит)
формошлёпство

Одно единственное слово по которому можно определить разбирается человек в том о чем говорит или нет. Так вот вы — нет. Потому что если бы разбирались то знали, что 70-80% компонентов вообще не визуальные и к интерфейсу никак не относятся.
QML, XAML

Разметку и описание формы, можно сделать на любом языке, хоть на китайском. Даст ли это какие то преимущества если Делфи на них перейдет? Да никаких, только батхерт у разрабов. Является ли это преимуществом над кем то? Тоже нет. Это просто еще один диалект. Кто то куда то переходит, ну флаг им в руки камень на шею. Бездумно идя за модой далеко не уйдешь.
Потому что если бы разбирались то знали, что 70-80% компонентов вообще не визуальные и к интерфейсу никак не относятся.
да я знаю что они не визуальные по типу таймера и кучи остального, но темнемение это засирает внутреннее представление (и в дельфи и в C# это раздрожало)
Даст ли это какие то преимущества если Делфи на них перейдет? Да никаких, только батхерт у разрабов. Является ли это преимуществом над кем то? Тоже нет.

ну в случае с QML это не просто развёртка но ещё и несложный скриптовый язык, который позволяет проще делать более сложные гуи а также такое разделение позволят дизайнерам работать параллельно от программистов не влезая при этом в ide
да я знаю что они не визуальные по типу таймера и кучи остального, но темнемение это засирает внутреннее представление (и в дельфи и в C# это раздрожало)

О как, а Си и Си ++ и т.д. не засирают ?? ИМХО: всё зависит от кривости рук разработчика, и никакой язык в этом не поможет.

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

Вы файл форм видели? Там такой же простой язык… и практически ничем не отличается. Так же как и везде при соблюдении определённых правил может быть изменено отдельно от кода.
Вы файл форм видели? Там такой же простой язык

Угу, выглядит как смесь Паскаля с YAML. В D2006, кажется, надо было опцию сохранения в текстовом виде отдельно включать, иначе по умолчанию в бинарном писалось.

Вот если б еще генерация этого кода не страдала типовой проблемой — перестановка порядка полей, из-за чего диффы ломаются. (Та же проблема наблюдается, например, у ASCII форматов CAD-программ — PCAD, в частности)
Если что — то в любое время можно любую форму сохранить как в текстовом виде так и в бинарном, в любой версии Делфи. То есть надо текстовая — ок — нажали — сохранилось как текстовая.
Порядок полей строго определен, все нормально там с диффами, постоянно использую, удобно.
Я про умолчания.
Раньше в текстовом именно что специально надо было сохранять, а теперь это умолчанием сделали (в RAD Studio 10 по крайней мере).

Про порядок полей я, похоже, действительно не прав — перепутал с другими ASCII-форматами визуальных данных (PCAD точно этим страдает).

в дельфи 20 летней давности — чекбокс, в каком формате сохранять во всплывающем меню при клике на форму. раз выставил при создании формы и всегда будет так сохраняться. проблем никаких. и честно признаюсь, иногда куски форм копирую текстом из этих файлов, бывают редкие случаи, когда так проще.
UFO just landed and posted this here
а ещё надо компоненты, которых до сих пор нет много где. Ну, как нет — названия есть…
Ещё в D5 можно было кинуть пару компонент, а они сами свяжутся, потому что у компонент был интерфейс времени редактирования. Именно из этого подхода J2EE потом выросло и многое, многое другое — но так легко и красиво больше не встречал.
Клиентская часть для работников банковских/финансовых учереждений состоит на 99% из огромного количества форм. Предлагаете позакрывать их нафиг что бы они не заставляли формы плодить?
Не буду спорить. Не цена заоблачная. посмотреть на цены Visual Studio( я молчу про Community) или продукты от JetBrains. Например, net core+Avalonia, такой же кроссплатфом. Ну да, avalonia ещё развивается, но уже стабильно работает. Для мобильных приложений выбор платформ просто зашкаливает и причем абсолютно бесплатных.
Справедливости ради, Avalonia не натив, и придётся тащить за собой рантайм, а из-за этого даже с сжатием и удалением всего лишнего hello world будет весить не меньше 10мб
Ну давайте, в наше время скоростного инета и терабайтных жёстких, расскажите важность о необходимости экономии 10 мегабайт.
Нет, давайте ударными темпами приближать тепловую смерть вселенной.
а ты скачай 10 мегабайт через 2G при плохой связи на скорости 1-2 килобайта/сек. Я лежал в больнице и эта скорость была реально, с частыми обрывами
Это же не просто блоб какой-нибудь, скачал и выкинул, это же код, который будет ежедневно выполняться на моём процессоре и тратить мною оплаченную электроэнергию. И речь же о пустышке, реальных приложений в 10 МБ сейчас ещё поискать, любая свистелка несколько сотен МБ легко занимает. А, скажем, на смартфоне встроенная память далеко не бесконечна. Мне что, каждый раз смартфон менять из-за того, что кому-то лень было писать компактный код?
Для маленьких проектов это неважно. Для того, что работает на больших enterprise серверах, где одновременно крутится тысячи задач экономия пары мегабайт может быть весьма существенной.
Для маленьких проектов это неважно. Для того, что работает на больших enterprise серверах, где одновременно крутится тысячи задач экономия пары мегабайт может быть весьма существенной.


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

Всё дело только в оценках — а стоит ли оптимизировать.
Если экономия ресурсов железа отложит вхождение на рынок на полгодика — ни один бизнес в здравом уме не пойдет на это. Запустят проект многожрущим, всё равно это выгодно бизнесу.
Зависит от. Экономия ресурсов железа обеспечивает стабильность работы его при больших нагрузках. Игнор оптимизации чреват факапами в периоды пиковых нагрузок. Где-то на это плюют, а где-то это приводит к очень ощутимому ущербу, как репутационному, так и материальному.

Последний случай — сбой в работе Альфа Банка 27-го декабря. Но там все реально сложно было предсказать. Хотя можно, конечно… Технические подробности рассказать не могу, да и слишком сложно это объяснить тем, кто не в курсе как оно все работает. Так что поверьте на слово — проблема была именно в недостаточной оптимизации (и работы в этом направлении будут выполнены и выводы на будущее будут сделаны). Хотя здесь к этому вопросу подход более чем серьезный. Но именно вот этого момента не учли.
10мб — это хеллоу ворлд даже без авалонии. С авалонией, если ещё добавить пару дополнительных библиотек, всякие картинки, файлы для локализации — легко за сотню уйдёт. И это надо для каждого приложения. (но это всё ещё лучше, чем chrome с собой тащить)
У Delphi лицензии разовые, а у JetBrains разве не подписка?

У JetBrains подписка, но с fallback'ом, если она была приобретена на год или больше

UFO just landed and posted this here
А колесики вам не прие*****? Мы тут про Делфи вообщет. Причем тут плюсовые компоненты и каким они раком к Делфи?
UFO just landed and posted this here
Повторю ссылку:
github.com/Fr0sT-Brutal/awesome-pascal
Это все бесплатное, математические пакеты там тоже есть.
На Торри можно посмотреть еще:
torry.net/pages.php?s=100
Но математические пакеты на плюсах проработаны лучше, спорить не буду. Хидеры в помощь :) Подключаемо все.
UFO just landed and posted this here
Такс… налицо отсутствие взаимопонимания. Компоненты про которые я написал, это те которые на делфи и для делфи. Они бесшовно итегрируются в IDE добавля готовый функционал, а их код собирается в состав exe файла.
А вы говорите про готовые библиотеки с функционалом. Но и на ваш вопрос есть ответ. Во первых в делфи есть автоматический импорт интерфейсов из библиотек. У вас будет сгенерен файл с заголовками функций которые библиотека реализует, подключаете его к проекту, в рантайме подтягиваете библиотеку, получаете адрес на нужную вам процедуру приводите к типу процедуры и вызываете. Если вам в нескольких программах нужен функционал можно его оформить ввиде компонента и добавлять поддержку либы одним кликом.
Во вторых, если автоимпорт не сработал, можно написать файл самому и подключить его как я выше написал.Причем описывать все не обязательно, можно описать только то что вы будете вызывать.
Да просто когда гуглишь, есть ли библиотека для решения той или иной задачи (работы с графами, хитрого матана, да мало ли), то в основном находишь плюсовые библиотеки.


Наверное просто потому, что Гугль уже подстроился под ваши требования.
Имхо, должно куча под Фортран такого гуглится.
UFO just landed and posted this here
Так а какие стандартные интерфейсы классов кроме COM существуют? Придумают такие кроссплатформенными — будут и они ставится. Пока что есть. Delphi тут при чем? Что COM'а нигде больше нет кроме винды :)
А если нужны не компонентные обертки, а просто хидеры плюсовых библиотек — то большинство основных переведены и давно.
UFO just landed and posted this here
В пределах Windows — вполне стандарт.
Точно на все? Вот на все-все-все?

Странно, на на AS/400 (i5/OS, IBM i) C и C++ есть (компилятор встроен в операционку в составе ILE), а Дельфы нету…

Community edition же есть. Абсолютно полнофункциональный.

Delphi Community Edition is a great way to get started building high-performance applications for Windows without database. Да полнофункциональный. Да и условия более жёсткие по сравнению с VS например.
Interbase/Firebird работает из коробки. Для других баз можно поставить внешние компоненты, платные или бесплатные (Zeos, например).
И, да, не только Windows. Телефонный пак входит в комплект CE.

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

Технически он полнофункциональный на уровне Professional версии. Юридически ограничение одно — доход с разрабатываемого ПО не должен превышать $5000.
Вы получаете деньги разрабатывая софт на пиратской версии?
и что. у многих никогда не было лиценции на винду, фотошоп да кучу всего.
и все хорошо. в мире есть Гораздо большее зло чем пирацский софт. он есть был и будет
Прикольно.
Старый вариант, который был просто «No.» только лаконично отвечал на поставленный вопрос.
Ещё можно было написать более явно:
const IsDelphiDying = false;

Я бы не был так уверен, все таки лучше как var объявить

Все верно, старый сайт был с No.
И второй аналогичный тоже с No.
Но где-то я видел еще один вариант с False, поэтому собственно посчитал его более логичным с программистской точки зрения.
Delphi вполне себе живет, развивается и соответствует текущим трендам разработки ПО

Что ж вы свой сайт на PHP сделали, а не на Delphi

Сайт я сделал на HTML.
Ибо ни к чему это микроскопом забивать гвозди…
Delphi уже, к слову, умеет в веб: UniGUI, TMS Web Core с помощью сторонних библиотек, понятно (Ext JS для первого пака), или транспилляции (у второго пака).
Лазарус умеет собирать в WebAssembly.
Перешёл по ссылке — аж слезой от воспоминаий прошибло;) ...20 лет назад… ё-моё…
Помнится, первый CGI писал ещё на Turbo Pascal 7.0.
UFO just landed and posted this here
Не умеет в Linux, и неизвестно когда научится
Обещают в этом квартале. Уже почти.
Забавно, но у них самих сайт работает на ASP.NET, судя по хедерам. С кросплатформенностью тоже непонятно.
Не всё сразу.
Ценник в целом конский и у тех и у тех.
Ценник в Унигуе предполагает годичный саппорт. Можно хорошо напрягать саппорт на форуме и мылом, дают готовые решения совершенно бесплатно. Чем все постоянно и пользуются (ссылку кидать не буду, есть с их главной страницы). Так что ценник более чем оправдан.
А каков посыл статьи?
Автор хочет сказать, что пишет на Delphi? — каждый сам волен выбирать удобный ему ЯП
Автор хочет рассказать, что он купил освободившийся домен? — если про это каждый будет создавать статьи на хабре, то сайт будет забит подобными статьями без смысловой нагрузки.
Автор хочет сказать, что Delphi жив? — Пусть живет. Пока компаниям требуются другие языки жив он или мертв большинству людей безразлично.
эээ посыл такой:
SEO оптимизатор

был приобретен домен «isdelphidying.com»

теперь вот статья

но, боюсь, остановить смерть таким способом будет сложновато…
Хотел восстановить справедливость, т.к. бывший владелец домена его отчего-то забросил + я и сам лично раз в 1-2 года натыкался на эти сайты и заходил из интереса, «проведать».

И думаю не я один такой, поэтому решил поделиться данной новостью со всеми причастными — все-таки язык был весьма популярен в свое время, и за одно это к нему нужно относиться с уважением.
Delphi реально умер, но воскрес в виде Франкинштейна — Lazarus.

Иногда тёмными ночами, пользуясь тёмной некромантией, поднимаю Delphi 7 на виртуалке и кодю на нём родимом, ибо адепт тьмы.
а зачем на виртуалке? он под вайном нормально работает )
Дополню.
Есть возможность собирать консольные приложения под линукс «из коробки».
При покупке платных компонентов от третьей стороны можно уже собирать нормальное приложение с формочками и всем этим.
Работает на Убунте и на Астре, на остальных не проверяли.
Сравнительно несложные VCL-приложения мы давно под Вайн запускали. Но CrossVcl конечно совсем другой уровень эмуляции. Пашут как родные.

В Дельфях теперь тёмная тема есть из коробки.

Это просто заглушка с оповещением, так сказать.

Для размещения статей существует куча ресурсов, взять хотя бы сайт со статьей про известные программы на Д, из ссылки в стартпосте…
А в чём проблема размещать на хабре?
А про возможности Delphi здесь будет интересно? Здесь люди все больше интересуются готовыми решениями
Думаю, будут интересны статьи. Посмотрите на плюсы — Дефли тут явно любят, и это хорошо.
UFO just landed and posted this here
Работаю в компании которая более 20 лет в своей работе использует как средство разработки Delphi 4. Перенести на современную платформу ту тонну кода, не останавливая работу предприятия просто невозможно, (ооо-чень дорого).

Поэтому, просто вносишь правки в систему под текущее законодательство. Переносить современные концепции в старый код та ещё некромантия.

Выше была шутка по веб-браузер на Delphi, так вот, в нашем проекте такое есть, большинство отчётов на html (правда без javascript). Зато всё летает на таком железе что устарело ещё в прошлом десятилетии.

Но это мелочи, у нас есть контрагент ИП, учётная система которого написана на турбопаскале, под dos, с матричной печатью, более 25 лет непрерывной работы.
Кое-где ещё ЕС-ЭВМ работают, правда в эмуляторах, понятное дело.
UFO just landed and posted this here
Кое-где ещё ЕС-ЭВМ работают, правда в эмуляторах, понятное дело.
Блин, я готов поспорить, что переписать его на каком-то современном стеке окупилось бы довольно быстро. Тогда и либы приходилось писать с нуля и код писался не так уж и быстро
Блин, я готов поспорить, что переписать его на каком-то современном стеке окупилось бы довольно быстро.


А вот и напрасно.

Поинтересуйтесь историей развития системы продажи авиабилетов «Сирена».

Она успешно стартовала еще на тех старых машинах, но потом их сняли с производства и оказалось гораздо выгоднее написать именно эмулятор.

На эмуляторе система продажи авиабилетов и работала пока не пришла пора создать новое поколение ПО.

Обратите внимание, переписать не потому, что нужно оказалось новое железо (это и эмулятор решал). А переписать потому, что понадобилось решать новые прикладные задачи, для которых старая система была не приспособлена.

Вот только тогда и стало выгодно всё переписать с нуля.
Ну не только Сирена… У той же Gabriel, если не ошибаюсь, ядро до сих пор на мейнфреймах крутится, менялись только клиентские терминалы.
Зря. Там очень навороченная АСУП, охватывающая практически все области деятельности крупного машиностроительного предприятия. Учёт всего и вся, номенклатура изделий, деталей, продукции, материалов. Логистика и вот это вот всё. Вообщем без потерь переписать это всё на современном стёке технологий будет стоить очень многие сотни нефти.
Хм… ладно, с опенсорсом все плохо
Замечу, что оупенсора под Делфи хватает. Не только количество реп стоит смотреть. Основной оупенсор существует для решения большинства проблем:
github.com/Fr0sT-Brutal/awesome-pascal
hh.ru, Москва, открытых вакансий
Java — 2520
C# — 1179
Delphi — 129

hh.ru, Санкт-Петербург, открытых ваканий
Java — 1166
C# — 442
Delphi — 48

Сравниваем с ближайшим языком по нише — плюсами, hh.ru, Россия:
312 вакансий «программист delphi»
452 вакансии «программист c++»
Java занимает намного большую нишу, тут спорить не буду. Пока что так.
UFO just landed and posted this here

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

UFO just landed and posted this here
Дело в том, что ни кто ни с одним из таких как вы не спорит, что на Delphi сейчас мало вакансий. Да это так и этому есть вполне объяснимая причина, но она ни в том, что Delphi не поддерживает «шаблоны» или что язык в целом плох, а в том, что застой на протяжении нескольких лет сказался ожидаемо не хорошо на популярности языка. Я уверен на 90%, что каждый из тех, кто утверждает, что Delphi умирает, говорит о среде Delphi 7, которой уже ни много ни мало 18 лет, совершенно не представляя, какого прогресса достигла новая среда под руководством абракадабры (Embarcadero). От Delphi ушли разработчики именно по тому, что других сред разработки (мощных, самодостаточных) нет кроме официальной от, на тот момент Borland и Embarcadero сейчас. Бессмысленно спорить о том, что «Delphi не популярен», да, он не популярен, но он не популярен не потому что он плох.
Более того, его популярность растёт. Не в ваших кругах, пока, но растёт. Ещё вернёмся к этому разговору, поверь.
UFO just landed and posted this here

Я говорю о росте популярности, т.к. его вижу напрямую. И это не касается студентиков и к слову, их запросы на популярности не особо сказывются, т.к. они в 100% случаев гуглят Паскаль.
Я говорю о вновь растущем комьюнити. Я общаюсь с теми, кто использует, я помогаю тем, кто спрашивает. Я вижу контент разработчиков и партнёров на канале в Ютуб. Ну и конечно, я вижу развитие.
За не большое время, в среде появилось масса всего. Достаточно зайти на канал и вы увидите. Rest, doker, веб-технологии, mvc, orm и прочее. Сильный скачек кроссплатформенного фреймворка FireMonkey, поддержка свежего оборудования и дак далее и тому подобное.

Какой идиот ставит по кд минусы? Хоть бы объяснился, обоснуй свои минусы.
Или «Эммм эээээээээ мэээ ээээээ ммммээээээ, он за Delphi, мэээ эммм, моё мнение не совпадает с его, эЭэээЭэЭэЭ, поставлю минус»?
Это, увы, обычная практика на хабре. По популярности — загляньте на телеграмм канал t.me/Delphi_Lazarus
там что называется яблоку негде упасть :) разговоров не меньше чем на Питоне.
У нас ключевая система предприятия на Deplhi 6. Говорят лет 10 похороны устраивают и пока жив… Но есть серьезные проблемы. На рынке разработчиков днем с огнем не сыскать.
Была даже ситуация когда не могли зарелизится и ждали одного разраба из отпуска.
Так что увы… Разработчиков все меньше, технология умирает.
На дельфях мало вакансий и зарплата ниже. Поднимайте зарплату — будут вам разработчики.
Вакансий по Kotlin на hh в 2 раза больше, высокооплачивемых (более ≈ 190-220 т.р.) в ≈ 14 раз.
Дело не только в зарплате. Ну допустим сидит у нас .net разработчик и delphi разработчик.
-Как только нужно планировать обучение на следующий год .net разработчик сразу же кидает начальству 10-к крутых курсов. Delphi разработчик грустит.
— .net разработчик ездит на конференции, ходит на митапы, рассказывает про новые плюшки языка или про тех самых идиотов, которые слили проект. Delphi разработчик грустит
— Delphi разработчик потихоньку читает руководство по C#, потихоньку ходит на митапы и вливается в C# тусовку.
— В конце-концов Delphi разработчик приходит к начальству и просит либо перебросить его в команду .net либо он сам это сделает но в другой компании

Платите delphi разработчику на 50% больше c# и всё будет хорошо :)
Конечно на самом деле всё хуже, проблема отсутствия роста и проблем с поиском нового места в случае чего ( а это чего может случиться в самый неподходящий момент ), очень серьёзно заставляет смотреть в сторону "массовых" технологий, т.к. это некая страховка от полуголодной жизни (причём не только для себя). Вот если бы работодатель купил "страховку" от невозможности найти тот же уровень дохода в случае если работник вдруг станет не нужен, тогда бы можно было и с Дельфи спокойно работать

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


Это страхи начинающих программистов…

Меня вон уже лет 10 никто из «власть придержащих на фирме» (кроме коллег изредка, да и то из любопытства, а не директивно, мол, надо делать так) не спрашивал — а какие именно технологии, языки и пр. я использую для решения той или иной задачи. А 20 лет назад как мне уже прекратили указывать что именно использовать в том или ином случае.

Заказчику/нанимателю всё равно, если вы уже достигли достаточного профессионального уровня: вам просто ставится прикладная конечная задача, а не «напишите цикл и условный оператор на языке X».

Можете конечно написать:
«а когда вы придете на фирму, где определенные технологии и от вас потребуют оставаться в рамках этих технологий»
то я вам отвечу:

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

2) Переключение технологий в масштабе мира происходит не мгновенно, ваши коллеги тормозят так же как и вы. У вас есть куча шансов выбрать интересующую технологию и изучить её заранее. Если вы опытный программист, то профессиональное переориентирование занимает смешные 1-2-3-4 месяца, которые вы можете неспешно и заранее потратить. Другое дело, если вы 20 лет на жопке ровно просидели… тут будут проблемы, согласен.

3) Ключевыми и сложно изучаемыми навыками являются понимания концепций, паттерной, алгоритмов, принципов. А также прокачка умения оговаривать для себя лучшие условия оплаты труда при найме. Языки же и т.п. — это ерунда, это всего лишь инструмент. Если вы умеете пользоваться крестовой отверткой, то и шестигранником сможете научиться за смешное время.

Не все так просто. Это работает пока вы варитесь в небольшой кастрюльке. А как переходите в болшой котел, сразу возникает проблема сопровождения и дальнейшего развития кода.

Не будет вас — кто сможет доработать ваш код?
Случись что на бою — сможет сопровождение решить проблему в ваше отсутствие?

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

У нас, к примеру, платформа IBM i (бывш. AS/400) на серверах IBM Power9. Инструментарий на бэке — основной язык RPG. Часть модулей пишется на C/C++ (большинство разрабов владеют и тем и другим) — там, где решение задачи на C/C++ будет эффективнее. Немножко пишется на CL.

И всегда есть гарантия, что один разработчик разберется и сможет доработать или поправить дефект в коде другого. Тут редко бывает чтобы кто-то годами тянул одну задачу. Есть деление по командам тематическое, но внутри команды любой может подхватить работу другого при необходимости.
Всё, о чем вы написали — относится только к начинающим специалистам.
Которые и не могут диктовать условия — что за технологии использовать на фирме.

И если ты полный новичок — то еще и сталкиваешься с проблемой поиска работы. Это в самом-самом начале карьеры…

А я вам пишу — об опытных.

Не будет вас — кто сможет доработать ваш код?
Случись что на бою — сможет сопровождение решить проблему в ваше отсутствие?


Это как раз моя проблема — обучать других технологиям, что выбрал я.
Еще раз:
У опытного разработчика — нет такой проблемы, как делать на тех технологиях, что заставляют использовать «сверху».
Он сам — «сверху» и сам определяет чем будут пользоваться младшие коллеги.

В крупной конторе есть набор используемых инструментов

На это я сразу ответил заранее.
Но повторю для невнимательных: вы вольны выбирать себе контору, что подходит вам, а не прогибаться под то, что вам не интересно.
Если вы действительно специалист, а не просто себя таковым мните.
Насколько крупна контора где вы работаете? И как часто вам приходитт на доработку сратый код, написанный кем-то другим?

За себя скажу — ведущий разработчик в альфа-банке. На бэкенде, причем, самом глубоком — команда ядровых функций АБС.

Как думаете, могу я тут сказать «а я выбираю дельфи»? Нет, не могу. Потому что ее тут нет. Вся АБС написана на RPG на платформе IBM i. И немного на С/С++ Ну еще часть на CL. И именно это определяет выбор инструмента.

И то, что я дорабатываю сегодня, во-первых, будет поддерживаться командой сопровождения, а потом попадет на доработку кому-то. Может мне, а может кому-то еще. Но все оно должно работать. Стабильно, надежно, эффективно и несмотря ни на что.

до этого работал в небольшой конторке (хотя проект был серьезный — система мониторинга инженерного оборудования зданий, строилось все это как распределенная гетерогенная система на микроядерной архитектуре — моя час была как раз разработка микроядра, которое обеспечивало связь всех остальных узлов системы — прмконтроллеров, интерфейсных клиентов между собой). Там да — я мог сам выбирать на чем писать, какие технологии использовать. И это был хороший опыт. Писал, кстати, на 6-м билдере.

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

Можете.
Третий раз повторяю:
На это я сразу ответил заранее.
Но повторю для невнимательных: вы вольны выбирать себе контору, что подходит вам, а не прогибаться под то, что вам не интересно.
Если вы действительно специалист, а не просто себя таковым мните.

У вас же там не пожизненное рабство? Не?
UFO just landed and posted this here
Здесь люди решили дополнить C# своим ПО. Можно было взять Ada/SPARK.
Новичку нужно будет осваивать это своё ПО. Или — искать человека со знанием редкой технологии. Что лучше — неизвестно.
Этот язык был не Delphi, ведь так? (старый проект)
UFO just landed and posted this here
Насколько крупна контора где вы работаете? И как часто вам приходитт на доработку сратый код, написанный кем-то другим?


Дело не где. Дело — и где и кем. После 30 лет опыта работаю тем, кто всё определяет.

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

На самом деле, по достижении некоторого уровня и опыта перейти с одного языка на другой или с одной платформы на другую совсем не так сложно как кажется поначалу. Устрицы…
На рынке разработчиков днем с огнем не сыскать.
По собственному опыту, разработчики переучиваются за месяц-полтора. Простой и надежный синтаксис и удобная среда сильно помогают.
Зачем они это делают, ведь вакансий очень мало и средняя зарплата существенно ниже, чем для C++, C#, Java?
Все те вакансии, что я видел по Делфи были с зарплатами либо средними по рынку, либо выше. Мы платим разработчикам примерно среднюю по нашему местному рынку (не Москва, если что).
Молодцы, но вы не оказываете существенного влияния на рынок. Соискателю придётся иметь дело с такой печальной статистикой:
image
image
image
image
UFO just landed and posted this here
Молодцы, но вы не оказываете существенного влияния на рынок. Соискателю придётся иметь дело с такой печальной статистикой:
Посмотрите запросы так: программист Delphi и программист C++ (шотить не буду, можете проверить):
449 вакансий «программист с++»
316 вакансий «программист delphi»
То есть с ближайшим 'конкурентом', нативными плюсами — разница незначительная. Да, на управляемых языках вакансий больше. С C++ же Делфи идёт почти вровень.
При этом никто не орёт о том, что Плюсы умирают, а про Делфи я это слышу уже 20 лет :) Парадокс.
Посмотрите запросы так: программист Delphi и программист C++ (шотить не буду, можете проверить):

Почему так? если некоторые пишут Разработчик С++ или просто Senior C++.
если просто писать язык то получается дельфи — 500 С++ — 3000 разница уже существенная
С++ даёт грязную выборку:
Team Lead: разработка мобильного клиента для платформы CommuniGate
Программист iOS (Swift)
Программист JavaScript (WebGL)
Python разработчик / Python software developer
на hh есть фильтр «только в названии» если искать по языку с этой опцией то получается
Delphi Россия 87
C/C++ Россия 1242
С++ Россия 772
Что существенно. Но это тоже не правильно получается потому что не все пишут язык в названии например Game Developer
UFO just landed and posted this here
UFO just landed and posted this here
Зачем они это делают, ведь вакансий очень мало и средняя зарплата существенно ниже, чем для C++, C#, Java?

Утверждают, что зарплаты в паскале выше, чем в C#, JS и Python
www.businessinsider.com/the-top-coding-languages-with-the-highest-salary-2020-4#pascal-is-associated-with-an-average-global-salary-of-6277390-9
На рынке разработчиков днем с огнем не сыскать

За копейки? Конечно, нет.

На просторах СНГ Delphi было мегапопулярной платформой в начале века. Тех, кто умеет с ней работать — очень много. И сейчас они опытные разработчики (конечно, большинство переключилось на другие платформы разработки).

А популярной была из-за великолепной концепции RAD — быстрое написание программ. Обучить новичка под Delphi — не сложно. Неважно на чём писал новичок до того.

Так что «отсутствие специалистов» — не верю.
Всегда можно и человека с огромным опытом нанять. И новичка обучить недолго.

Полагаю 2 причины:
1) Деньги зарплатные малы.
2) Нет того человека, кто бы целенаправлено проводил кадровую политику, с обучением и пр.

Ради интереса, уже много лет подписан на 2 ключевых слова delphi и firebird, и почему-то половина вакансий сильно не изменилась (в т.ч. и по з.п.) т.е. это теже компании что и 5-7 лет назад и теже адреса, по факту вакансий нет.

По хардкору надо было сделать сайт на Delphi. А так… Не интересно.

Ну, вообще-то на дельфи «сайт» не написать, можно только бэкенд сайта.

В данном случае, судя по фразе автора "Сайт я сделал на HTML", бэкенд отсутствует. То есть представляет собой программу с пустым кодом. А про пустой код, как известно, можно сказать, что он написана на всех сразу языках — в том числе и на Дельфи.
Ну это прям какой-то квантовый язык. ;-)
Это отнюдь не рокет сайенс квантовая физика, а простая математика — пустое множество является подмножеством всех возможных множеств.

И кстати, формально пустая программа является квайном, но ее специально исключают из этого класса.
Ну, вообще-то на дельфи «сайт» не написать, можно только бэкенд сайта.

Unigui, TMS Web Core
Ну так они оба дают архитектуру фронтенд на JS + бекенд.
Но все проектирование и работа с кодом идет на Delphi. То есть знания HTML/CSS/JS и верстки не нужно вообще. Хотя знание может улучшить внешний вид и слегка поведение.
Я вот как раз не знаю фронт (но, правда, отлично, побайтно и сильно многопоточно, знаю бэк), однако это не помешало создать три приложения с больше чем ста формами на унигуе. Саппорт слегка помогал, но 99% делал сам.
А, ну если так, то пожалуй да.
У нас на проекте 1.5 Гб исходников на Delphi 7.

Полтора гига текста, чем вы там занимаетесь, если не секрет?

Ну, может у них там:


  • бинари (ресурсы -формы, картинки, иконки и пр.)
  • большая история коммитов (много раз переписывали код)
UFO just landed and posted this here
Ну JSON настолько прост, что написать свой парсер на Дельфи с него можно где-то за час, наверное.

Не стоит писать свой парсер JSON.

Я бы не отказался от парсера, который задействует AVX и все ядра моего нового процессора.

UFO just landed and posted this here
Если парсера JSON под Дельфи до сих пор нет, это лишний раз доказывает, что место Дельфи в тех годах, когда JSON не был мейнстримом.
В молодости стюардесса была хороша, но пора закопать. :D
Парсеров JSON'а под Делфи с десяток минимум. Ну а речь, понятно, вообще не о том была.

Там, немного выше по треду, разработчик из 10 парсеров нашел 0. Можно, конечно, сказать, что плохо искал, и что поленился написать 11-й… Короче, очень мало предпосылок к использованию Дельфи в 21 веке. Угрюмое legacy с 1,5 Гб кода, да и всё пожалуй.Можно и не закапывать, просто есть стюардессы и посвежее.

Плохо искал, все так. Вот прямо под его задачу (10 лет ему уже, замечу):
github.com/hgourvest/superobject#rtti--marshalling-in-delphi-2010
И это не самый старый (2006-й год):
sourceforge.net/projects/lkjson/files/lkJSON/version%200.91
Еще:
www.clevercomponents.com/articles/article037
Изкоробочный вариант:
docwiki.embarcadero.com/RADStudio/Tokyo/en/Serializing_User_Objects
Ха! Я как-то в 2015 за пару ночей накидал парсер JSON-a на АБАПе, муть жуткая

Забавно, а json.net развивается с 2007 года, и в нем уже почти 2000 коммитов. И то я встречал что в нем не было нужного мне функционала.

Если не нашёл готовый, или готовый чем-то не подходит, то почему бы нет?
UFO just landed and posted this here
Преобразование работает прекрасно. Я написал VK API используя сериализатор и проблем не возникло ни с чем. Скармливаешь любую json, он без проблем тебе заполняет класс автоматически.
В ранней юности запилил два коммерческих проекта на Delphi. Потом изучил С++ и словно дополнительные руки выросли. Дальше только на С++. Потом надо было помочь другу с Delphi-проектом. Я весь исплевался, потому что после С++ Паскаль казался каким-то недорослем. К слову, тогда же пытался перетащить друганов с Delphi на С++. Так они стухли на указателях и массивах с указателями на указатели функций.))))
Так вот, мое мнение, что Delphi с тех лет и начал умирать. Примерно после D7.

На работе есть два проекта — один на Borland Builder C++ 5.0, а второй на Embarcadero C++(не самый последний).
Программы в общем-то идентичны по функционалу и числу форм.
У первой ЕХЕ файл 4Мб, в памяти весит 5-6Мб с данными.
Второй EXE — 40Мб, в памяти весит 60Мб.
По внешнему виду одинаковые программы. Вот так вот разжирели VCL-библиотеки за 10-15 лет.
Отсюда считаю, что смотреть надо в сторону C#.
Но там тоже — WinForms тоже вроде как отмирает и мелкомягкие не рекомендуют его для новых проектов. WPF — модерново и xaml-ово, но не вызывает тяги.
Qt жиреет либами и пугает ценами.
Куда движется декстопное вындоуз программирование?

Умирает? :) Довольно большая часть решений уходит в облако

Хрен с ним — с Delphi. Десктопное программирование умирает.
Хмм, VCL-приложение с примерно двумя десятками форм. В ANSI Delphi 2017 размер EXE — 2.4 Мб, в свежайшем Delphi 10.3 — 4.2 Мб. Правда, во всех юнитах отключен новый RTTI (не задействован). Если же в Delphi 10.3 перекомпилировать VCL с отключением RTTI, ещё 1 Мб можно выиграть.
UFO just landed and posted this here
Потом изучил С++ и словно дополнительные руки выросли.
Тут главная проблема — проконтролировать что эти дополнительные руки выросли из правильного места. :)
стухли на указателях и массивах с указателями на указатели функций.
эм, а какая проблема в дельфи с массивами указателей на указатели или с указателями на функции?
type 
  pFunc = function:integer; //ну или какой там формат вызова функций нам нужен
  ppFunc = ^pFunc;
var
 fArr : array of ppFunc;


Если же в массиве должны быть разнородные по вызовам и возвратам функции — объявляем массив нетипизированных указателей, и приводим к типу нужной функции непосредственно перед вызовом нужной функции.
Но такая архитектура выглядит странно, во всех сценариях, требующих такого массива (которые я смог вообразить) логичнее было б использовать ООП и в массиве держать указатели на объекты.
Не стоит обращать внимания мне кажется. Если у тебя молоток — вокруг все — гвозди. Указатели на указатели на указатели на указатели.
Нытья пост, ну и я поною, раз уж. Во время оно Алан Кей сделал Smalltalk, на котором сделали великолепное инженерное решение — Seaside framework, с объектами, с виртуальной машиной, с собственным оконным GUI, и, о боже, с продолжениями (continuations) — и где это сейчас? Нигде. Никлаус Вирт сделал Паскаль, на котором сделали Дельфи, с мгновенной компиляцией, с нативным экзэшником, с мгновенным деплоем (перекинуть экзешник и запустить), с отладчиком почти не хуже Идеевского, с простым и понятным языком, с нормальной компонентной моделью, с VCL, с линкером, который делал exe-файл GUI-приложения под Win32 размером 200 Kb, и это, мы тогда считали, что еще много.

А сейчас хакеры пишут кейгены, которые требуют .NET версии 3.5, а VS Code вообще на «электроне» делают.
выживают не великолепные языки, а те, которые поддерживают корпорации
Для нативного кода нет хорошей платформы запуска, не зависящей от OS. А у Electron вездесущий HTML5
Пожалуйста, все что угодно кроме электрона — хоть на VB пишите, хоть на дельфях, как вам нравится. Главное чтобы этот удивительный мир браузеров-приложений наконец-то стал немодным.
Каждый день запускаю Skype и пла́чу, 140 Мб на Интернет-болталку. А ведь раньше была маленькая шустрая программка, написанная на Delphi…
Рядом в диспетчере задач висит Github Desktop (110 Мб) и смеётся.
А из трея выглядывает Java и просит её обновить. Хотя я вроде сегодня Java-программы не запускал…
Все так. Пока Скайп был на Делфи, он нравился всем. Переписали на Электрон, и его стало невозможно использовать.
Зато на планшетах электронная клавиатура автоматом показывается
Языки программирования иногда имеют одну-единственную главную, но смехотворную и маленькую, причину, по которой они либо стали суперуспешными, либо умирают. Например, в ПХП это было (было в 199х! сейчас уже не важно, раскрутилось) вот что:

# положенный в корень index.php, никаких chmod и т.д.
Ваше имя? <input name=“name”/>
<?if ($name) {?>
Привет, <?=$name?>!
<?}?>


А Паскаль-Дельфи ИМХО убивает begin-end вместо фигурных скобочек. Причем убивает наповал, ибо Вирт зачем-то (ок, невольно) сжег все мосты, зарезервировав фигурные скобки для комментариев, так что никакой возможности что-то сделать с begin-end у языка не было все 30 (40?) лет.

Казалось бы, такие мелочи, но именно они дают весь этот «эффект бабочки» по моему мнению.
А Паскаль-Дельфи ИМХО убивает begin-end вместо фигурных скобочек.


Современные IDE умеют и снипеты и автодополнения и горячие клавиши и скрывать лишний код и пр. и пр.
Так что begin end вполне себе можно писать нажатием одной кнопки.
А Паскаль-Дельфи ИМХО убивает begin-end вместо фигурных скобочек. Причем убивает наповал, ибо Вирт зачем-то (ок, невольно) сжег все мосты, зарезервировав фигурные скобки для комментариев, так что никакой возможности что-то сделать с begin-end у языка не было все 30 (40?) лет.


Куда как более многословную Яву её многословность не убивает.

Ну вообще-то они оба происходят от языка структурного программирования Алгол, и происходило это годах очень близких, 1970 и 1971. Это Си или BCPL изуродовал Алгол, а в Паскале синтаксис просто унаследован.

Если посмотреть, допустим, на какие ЯП ГОСТы есть, там Си или чего-то с фигурными скобками в принципе нет, не смотря на одинаковый возраст Паскаля и Си. Нафиг не падали эти скобки никому, жили и жили без них.
У каждого языка/продукта своя ниша. Надо вовремя суметь из этой ниши выйти и занять другую. Delphi был прекрасен в свое время для разработки настольных систем, но затем значительная часть настольных систем перекочевала в web (а часть ушла в .net), где Delphi не смог предложить чего-то быстрого и удобного. В связи с чем, интерес к среде постепенно начал угасать.

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

Сам же, по основной сфере деятельности использовал Delphi в этом году единственный раз — когда потребовалось со считывателя smart-карт считать данные полиса ОМС. В браузерах это не завелось, а на Delphi с учетом примеров, которые были в сообществе, задача была решена в течение дня.
Ну и вы UI мессенджера на 1млн пользователей на ядрах своих серверов собрались крутить?

Надо научиться побеждать ограничения WebAssembly. Зелёные потоки, сегментированные стеки, а поверх этого RAII. Вот тогда веб станет интересным местом.

Delphi стал популярен в РФ в начале 2000х, когда 1с еще не выпустила 8.0, и когда диски с Delphi пиратились безо всяких проблем с органами (т.е. для предприятий — бесплатно). 1с в большей части старалось повторить успех компонентной модели Delphi, и даже язык в 7 версии 1с стал похож на русифицированный паскаль (и даже номер версии стырили у Дельфи), и пиратские диски точно так же продавались везде, иначе бы никому эта 1с была бы не нужна.

1с нужна была чтобы сдать отчётность на диске её за пол часа а не с ящиком распечаток в очереди на пару дней (из детских воспоминаний когда что-то на эту дискетку писалось не так)

Я думаю вопросы о популярности Delphi нужно ставить только среди Desktop разработчиков, создающий Enterprise приложения ну хотя бы на 100-200 форм со всякими таблицами, вкладками и т. п.. Потому что нормально и быстро делать это можно либо в Delphi, либо в C# на WinForms, а во всех остальных средах это сущее мучение. Попробуйте опровергнуть меня.

Вы слишком категоричны. В U++ это делается еще легче.
UFO just landed and posted this here
Среда и до сих пор очень комфортная, хоть современные версии местами глючат (IDE иногда необъяснимо косячит, но не часто). В 2011 году я с помощью коллег-пользователей профильного форума (не программистского — просто предметные разработчики разных продуктов одного назначения на разных языках и платформах) тоже сделал небольшую программку, которая волей случая вышла на десятки тысяч пользователей и использовалась массово пару лет, пока была актуальной. Она компилировалась в единственный exe размером менее 1 МБайт (Delphi 2009), не требовавший никаких дополнительных компонентов Windows (даже XML-парсер самописный делал, чтобы не связываться с майкрософтовским). Как следствие, проблемы возникли только на старте (пришлось разбираться с косяками в управлении памятью и разницей в работе поиска файлов на разных версиях Windows или ФС), а далее на странице программы практически не было вопросов от пользователей именно по поддержке — только развитие и положительные отзывы. Сомневаюсь, что что-то подобное мне удалось бы сделать на том же C# без множества вопросов от пользователей, почему программа не работает на его языке или версии .Net Framework (ну или просто почему она не работает, если фреймворк не установлен).
UFO just landed and posted this here
ну или просто почему она не работает, если фреймворк не установлен

И как вам там в 2007ом, доллары по 30 уже купили?

UFO just landed and posted this here
К слову — Delphi это уже давно не только десктоп. И телефоны, несколько паков (FMX, FGX). И веб (Унигуй, TMS Web Core). Унигуй очень хорошо зашел. На форуме тысячи неофитов.
Если предприятие по сей день использует в качестве бизнесс процессов делфи или другого диназавра, то рано или поздно прогресс возьмет свое. А оттягивание этого процесса приближает предприятие к болезненому переходу.
Рано или поздно наступит день П и придут ребята в дорогих костюмах и предложат полный пакет услуг автоматизации в облаке, за шестизначные числа, в долларах.

Если говорить про размер и что бы программа работала от одного нажатия без танцев с бубном. У нее были все возможные формы и элементы интерфеса. Вы не поверите, но я могу взять ИГРОВОЙ движок godot и сделать на нем утилиту. И эта утилита будет весить 10-30 м.б. Работать будет везде. Даже в html5. При этом даже школьник, который два раза в жизне питон видел, сможет что-то да сляпать там, посмотрев пару уроков на ютубе. А потребление оперативной памяти врятли превысит 100 мб.
Кстати GDScript, который юзает движок — включили в перчень языков на гитхабе
Скайп переписали с Delphi на Электрон, и сильно это ему помогло? :)

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


Ошибка выжившего, короче.

Ну, такого динозавра как Java же используют и ничего…

Ну так джава нынче действительно кроссплатформенна, и с хорошей поддержкой веба.
А десктоп на ней не пишут.
Ну и Делфи/Лазарус сейчас действительно кроссплатформеный (сужу в том числе по собственным проектам, есть несколько крупных проектов Windows/Linux) и десктоп и веб и телефоны умеет.

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

А в чем заключается «хорошая поддержка веба»?

спринг, freemarker, cloud config — и это все из коробки на грэдле с минимальными телодвижениями. бойлерплейт и рантаймы все под капотом, но если нужно — переопределяются в пару пинков.

Не лучше чем в любом другом языке,

В той же гошечке поддержка веба выглядит несколько… гм… уродливо. в питоне — несколько более «ручная» в плане количества работы.

Это везде с минимальными телодвижениями. Тем более спринг не самый лучший инструмент, далеко(говорю как человек, который им постоянно пользуется).
Сервлеты устаревшие и кривые, мвц со старой поточной моделью, вебфлукс сырые и страшные(Java же). Спринг секьюрити тихий ужас. Сам di в спринге и тот кривой. Да и с кроссплатформенностью не все так однозначно. В основном она есть, но иногда разные jvm ведут себя по разному.
Так что думать что язык используют только потому что он хорош(или инструменты) — ошибка. Большую роль играет история, популярность языка. И я думаю что дельфи кровь подпортила именно политика компании, а никак не качество или "устарелость" языка.

спринг не самый лучший инструмент, далеко

Лучше нету. Есть другие. А лучше — нету.

Сервлеты устаревшие и кривые

Так на уровне сервлетов давно никто не работает.

Спринг секьюрити тихий ужас

В чем ужас? Все работает на аннотациях.

с кроссплатформенностью не все так однозначно

спринг чисто на джаве, какие там проблемы с кроссплатформенностью?

разные jvm ведут себя по разному.

сейчас большая часть JVM — это openjdk. Если кто-то ломает JVM и не трудится проходить Java Compatibility Tests — ну… ССЗБ.
  1. Лучше есть, и много.
  2. На уровне сервлетов работают, как минимум фильтры.
  3. Ужас в отсутствии типизации и единого подхода. Каждый лепит как вздумает, в итоге там полно говнокода(посмотрите на реализацию jwt).
  4. С рефлекшном были проблемы. Аоп не работало, конфигурация не переключалась, проперти не работали на опенждк. На оракл работало.
  5. Openjdk и Oracle jdk. Кто-то ломает — это, видимо, Oracle т.к. они и то и другое пишут.
1. Нету. Это я с ответственностью заявляю вам, как человек, который почти 10 лет назад в джаву вкатился.
2. Фильтры работают немножечко сбоку. А прикладной код на уровне сервлетов сейчас мало кто пишет именно благодаря Spring MVC.
3. Здрасте, приехали. Там есть инфраструктурные бины, которые можно конфигурировать и переопределять. Если у вас не работает — значи вы скорей всего не поняли методологию.
4. Года 3 назад — возможно. Сейчас OpenJDK и OracleJDK — идентичные вещи. У меня, кстати, с Spring Boot ни там, ни там не было проблем.
  1. Тот же ктор в котлине выглядит получше. А большой опыт на одном языке ничего о кругозоре сказать не может
  2. Фильтры это сервлет апи
  3. У меня как-раз работает. Т.к мне пришлось писать свою реализацию токенов, используя апи спринг security. Поэтому ответственно заявляю: апи плохое, сконструировано абы как, везде Object'ы, downcast'ы и просто плохой код. Такое ощущение что сами создатели пытаются действовать в обход апи, посмотрите как работает JwtTokenStorage.
  4. У меня тоже проблем не было. Удивился когда появились. И не три года назад, а пару месяцев.
1. Котлин сам по себе, как бы помягче сказать… не айс. Разрушает ООП парадигму и навязывает писать абы как.
2. А, вы про те фильтры. Да.
3. У меня с хранилищем креденшлов в базе нормально все работает из коробки. OpenId — тоже, хоть и чуть менее, чем из коробки. JWT сам по себе страшный сон, избегаю его где только возможно.
4. На свежих версиях типа 13й? Потому что 8-я — что Open (причем от разных мейнтейнеров), что Oracle — «идентична натуральному».
  1. Скорее не навязывает ООП там, где оно не нужно(а оно редко где нужно).
  2. Jwt тоже из коробки работает. Но вся работа по созданию токенов переехала в TokenEnhancer/TokenConverter(оба интерфейса реализует один класс + там есть downcast). А почему страшный сон, если не секрет?
  3. Речь о кровавом энтерпрайзе, и 8ой версии java. Вообще сколько с этим работаю, убеждаюсь что Java довольно плохой вариант для энтерпрайза. Со всеми ее reflection-based технологиями, когда изменение одного модификатора доступа(убрали final), может полностью остановить работу, не вызывая каких-либо ошибок в compile-time. Отсутствие статических проверок — зло, от этого надо уходить.
>Лучше нету. Есть другие. А лучше — нету.
>1. Нету. Это я с ответственностью заявляю вам, как человек, который почти 10 лет назад в джаву вкатился.

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

про сервлеты не нада, еще как юзают
начинать новый проект на спринге никогда… хватило болота

какого болота? у меня с десяток проектов на спринге сделано. точнее spring boot + spring mvc и сборкой грэдлом. делалось быстро и качественно именно благодаря спрингу.

jersey гораздо гибче.

Вы сравнили. jersey — это лишь реализация jax-rs, а спринг — это еще и дофига инфраструктуры под капотом.

Этот ваш jersey требует контейнера, нафиг не надо. gradle bootJar — и на выходе запускаемый jar-ик. утащили куда надо, положили рядышком конфиг и опционально шаблоны — et voila. с докеризацией опять же проблем нет — просто имидж с java se взять и в него вкрячить несколько файлов.

про сервлеты не нада, еще как юзают

что я могу себе вообразить из полезного, чтобы спускаться на уровень сервлетов — это partial content, самопальный WAF, и обработка аплоадов.
в остальном — это куча бойлерплейта, который просто отнимает время.
>jersey — это лишь реализация jax-rs
слово 'лишь' тут лишнее, реализация и плюхи к ней.

>дофига инфраструктуры под капотом
без нее даже лучше

>Этот ваш jersey требует контейнера
и что, внутри спринга jersey юзается кстати

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

>Лучше нету. Есть другие. А лучше — нету.
за всех говорить не нада вобщем.
реализация и плюхи к ней.

этого мало

без нее даже лучше

нет. когда у вас дохреналлион бинов, которым нужно обеспечивать инстанцирование во время запуска приложения — вы неизбежно приходите к DI. И либо городите свой (потому что ниасилили Spring), либо используете стандарт де-факто (Spring).

и что, внутри спринга jersey юзается кстати

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

задачи разные бывают.

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

за всех говорить не нада вобщем.

если бы спринг не был бы так хорош — он не стал бы стандартом де-факто

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

>когда у вас дохреналлион бинов, которым нужно обеспечивать инстанцирование во время запуска приложения — вы неизбежно приходите к DI. И либо городите свой (потому что ниасилили Spring), либо используете стандарт де-факто (Spring).
хватит бредить уже
Аргументы кончились, я так понимаю.
Что значит «десктоп не пишут»?
Если имеются в виду десктопные приложения — Eclipse IDE, торрент-клиент Azureus / Vuze, игры — Майнкрафт, Project Zomboid.
Также навскидку нашлось:
ThinkFree Office,
Lotus Notes,
UltraMixer (диджейский пульт),
Looking glass (трехмерный рабочий стол),
NASA World Wind («виртуальный глобус» наподобие Google Earth),
jEdit (Programmer`s Text Editor),
jDownloader (open-source download management tool).
Ничем из этого не пользуюсь, и даже затрудняюсь сказать кто из моего окружения этим бы пользовался. Поэтому — увы, но не пишут. Очевидно, кстати, почему — Swing бедноват на контролы, которые к нему писать сложно. JavaFX тащит за собой WebKit, пытается косплеить WPF, и тормозит.
AWT — обнять и плакать.

А, не. Из повседневочки — IntelliJ IDEA и Arduino IDE из того что на Java написано десктопного юзаю. Чуть-чуть пишут, да.
Ну так джава нынче действительно кроссплатформенна, и с хорошей поддержкой веба. А десктоп на ней не пишут.
Вот как раз только что пробежало в телеграмме:
>>ещё не забудьте правильную версию явы установить, чтобы ваше приложение заработало…
>да, да. в инструкции как раз об этом жирно описано, нужна правильная версия Java.
За что среди прочего не люблю всевозможные вирт машины.
«Правильная версия джавы» — это обычно про КриптоПро и иже с ними.
Несколько лет назад был на интервью в одной французской косметической фирме. Так у них вся система для retail'а сделана на Delphi и позволяет писать расширения на нём же. Никак не могли найти человека, кто в Delphi работает или хотел бы работать. Как сказали, не одни они такие.
Посмотрите, все ответы про то что пишут на Delphi только от людей у который унаследованный код… Когда у тебя 1.5гига исходников которые работают очень сложно от них отказаться…

Раньше чтоб создавать нормальные UI под винду ничего толком не было и Delphi/Builder реально помогал и ускорял разработку, мы в свое время написали продукт полностью на билдере с очень сильно настраиваемым интерфейсом пользователя. Без Билдера это было б сложно сделать и за это спасибо ему.

Но сейчас частично из-за Эмбаркадеро и его странной политики, частично из-за того что больше вариантов стало я думаю что он все таки потихоньку умирает.
Вообще, неофитов в Делфи хватает. Постоянно пачка вопросов от новичков в Телеграмм канале. Кому интересно: t.me/Delphi_Lazarus
Посмотрите форумы и сравните число тем и сообщений по Delphi и другим языкам (замечу, что это непрофильные делфи форумы):
www.programmersforum.ru/index.php
www.cyberforum.ru
forum.sources.ru/index.php
forum.vingrad.ru/forum/act-idx.html
www.sql.ru/forum
Число либо примерно одинаково, либо гораздо выше. Какая уж тут смерть :)
Мне часто кажется что в некоторых областях разработка реально деградирует и бессмысленно усложняется. И Delphi хороший тому пример.
На Delphi (сюда же C++ Builder, Visual Basic и т.п.) можно было очень быстро написать типичные корпоративные приложения, разработка которых всегда была очень востребована. В данном случае я имею ввиду приложения вида: база данных, таблички, формочки, отчеты… В Delphi такое приложение зачастую можно было на 80% сделать визуально (формошлепство), а потом быстро дописать недостающую логику.
Зачастую, приложение типа корпоративной базы данных или какую нибудь несложную CRM, на десяток таблиц, сотню полей и десяток красивых отчетов, писались студентами на 1-2 дня и за коробку Сникерсов. Приложения отлично работали и исправно служили лет по 10.
А как сейчас? Сейчас так не получится. Сейчас практически нет визуального программирования. Корпоративное приложение это сложный комплекс из специально настроенного под него сервера, база данных, сервер приложения, веб сервер, какой нибудь фреймворк типа Laravel или Symfony, на котором вручную программируется куча CRUD операций, вручную сверстанный фронтент, который тоже в свою очередь тянет целый стек. Над созданием приложения трудится куча народу и тратят на это человеко-месяцы! И все вручную!
А в чем плюс таких приложений по сравнению с древним приложением на Delphi? Часто лишь в модном красивом дизайне, как говориться «свистелки-#ерделки», плюс работа через браузер без установки софта. А по мне это может быть и минус, потому как каждый разработчик делает интерфейс в своем уникальном стиле, а несчастные пользователи вынуждены разбираться с каждым новым приложением.
Сам я последний раз писал на Delphi 20 лет назад. Сейчас разрабатываю фулстек веб-приложения в соответствии с современными традициями. И постоянно ловлю себя на мысли что сейчас все сложно, дорого и запутанно, а раньше было быстро и просто. Если бы разработка в стиле Delphi развивалась последние 20 лет, насколько бы прекрасной она могла стать? Но увы. Да и понятно почему так случилось, история развития отрасли прошла перед глазами.
Все что я говорю, я говорю о приложениях типа корпоративных баз данных, CRM-ERP средней сложности, других подобных приложениях, главная задача которых это CRUD и удобный вывод информации для пользователей. Но это я бы сказал 75% от всех софтверных работ.
CRUD, построение GUI, редактируемых таблиц, деревьев, формочек, графиков, отчетов, вывод информации — требуется повсеместно. Программировать это руками — крайне скучная и рутиная задача. Современные фрейворки лишь немного упрощают эти задачи. На мой взгляд такие вещи вообще должны быть максимально упрощены и быть преимещественно визуальными, чтобы позволить разработкам сосредоточится на действительно сложных задачах, не ручном программировании GUI и CRUD операций. Кажется за 20 лет это область не то что развилась, а просто ушла в историю. Сейчас конечно есть какие то инструменты, но они или мало распространены или бессистемны.
Все, я нанылся, теперь возвращаюсь к пилению своего текущего веб приложения на Laravel-Vue. Надо еще десяток CRUD операций написать ручками и десяток форм сверстать на HTML-CSS-JS, все ручками, никакого визуального программирования… Долго, скучно и печально
К слову — никто не мешает и сейчас взять Делфи и вот это вот все делать. И веб в том числе. Мы так и делаем (с помощью Унигуя).
Наверное… Но сейчас почему то так делать не принято, не востребовано, мало распространено и вообще, могут засмеять и закидать помидорами.
Как где. Где-то просто пишут хороший софт, не задумываясь о моде.
В таких случаях обычно думают не о моде, а о том, кто это дело потом поддерживать будет.
Ну мы вот проект на Delphi поддерживаем почти 20 лет, и как-то не страдаем от того )
Сейчас же в цене только хайп и мода. Посмотрите вокруг — ворох новых языков, еженедельные новые веб фрейворки. Есть какая-то гарантия что они проживут хоть какое-то заметное время? Или каждый год переписывать все занова?
А вот Делфи прожил, хотя его уже больше 20ти лет хоронят :) цитаты (2006-й год):
собственно, я в разной прессе наблюдаю сообщения типа «дельфи умер» примерно лет шесть-семь
Тема о смерти Делфи обладает невероятной жизненостью
www.sql.ru/forum/342656/umret-li-delfi
Я ничего не имею против вашего 20-летнего проекта на дельфи, если вы его можете поддерживать — прекрасно. Я говорил, скорее, о стартах новых проектов. Вокруг я вижу, что люди, которые приходят в профессию не учат Delphi (ну может только в универе). Люди учат JS, PHP, Python, C#, Java, но не Delphi.

И это не странно. На Udemy по запросу Delphi — 69 результатов поиска, а по PHP, который тоже принято хоронить, — 1000+. Там выше еще статистику по StackOverflow приводили и по вакансиям с hh.ru. Даже человек незнакомый с программированием понимает, что пожалуй лучше начать учить что-то более востребованное.

Разумеется хайповых технологий каждый год появляются десятки, и так же десятки исчезают за ненадобностью, но, возвращаясь к начальной теме моего комментария, я бы не рискнул сейчас начинать пилить новый проект, который дальше нужно будет поддерживать и развивать, на Delphi.
Я приводил статистику по форумам. Там просадки нет вообще. Даже скорее наоборот. Меньшее количество вакансий может показывать еще и меньшую текучку кадров и намного более долгоиграющие проекты. Что в общем плюс для бизнеса (я если что совладелец компании, мне именно это важно и первостепенно).
Это мое личное мнение, но меньшее количество вакансий для вас, как работодателя может это и показывает, но для меня, как для разработчика (если бы я писал на Delphi) это показывало бы, что мне с моей работы идти особо некуда и наверно стоит изучить параллельно другой более популярный язык в той же области. Потому что я, в случае чего, не хочу остаться на обочине, а может быть я и вовсе по своей инициативе захочу сменить работу и начать развиваться в новом более популярном и актуальном стеке.
Зато человек, знакомый с конкуренцией, понимает, что, пока другие люди осваивают что-то более востребованное, «невостребованным» работодателям сложнее закрывать свои вакансии, и можно договориться на более приличные условия, чем в массовых сегментах, как сейчас с COBOL у буржуев. А по мере работы расти вширь.
Это же вы о том, что новичку не вариант учить Delphi сейчас? Нутк а работодателю на поддержку проекта нужен джун без опыта или хотя бы мидл? Насколько я понимаю мотивацию человека, который только начинает свой путь программиста, ему бы опыта побыстрее набраться, да на работу устроиться, а потом еще и получше зп получить и по опыту вырасти, и соответственно язык, где и курс обучающий еле найти получится, и вакансий в разы меньше открыто (а на сочетание Delphi Junior/Junior Delphi и т.п. hh выдает всего 2 вакансии в МСК), будет вряд ли привлекательным для него.

Другое дело человек, который до сих пор пишет на Delphi и реально крутой профессионал — вот такому да, как вы и написали, такому можно диктовать свои условия, потому что конкуренция как раз-таки будет работать на него: он профессионал, он востребован. Хотя и тут есть нюансы. Стоит все же иметь какой-то запасной план, потому что и хорошему профессионалу, если он знает только Delphi при малом количестве вакансий на рынке, выбора остается не так много и в итоге можно остаться у разбитого корыта, если перегибать палку.
Опыт набирается не на курсах, а на реальных проектах. Если смолоду в том же институте выучил немного Delphi и отправился на этот проект работать, можно там набираться опыта, а заодно ходить на курсы и там осваивать уже другие языки и подходы; может быть, их даже получится применить в текущем проекте. А дальше уже определяться с выбором.
Все правильно говорите на счет изучения, вакансий, перспектив…
Но абстрагируясь от этого хочется сказать, человечество почти утратило умение быстро и просто создавать целый пласт ПО используя визуальные IDE. Раздувается сложность, производительность разработчиков падает.
На счет визуальных редакторов в IDE — это конечно да, но кстати визуальный редактор для интерфейсов под мобильные платформы вполне себе применяется. Не знаю уж насколько, скажем, в Android Studio его используют те, кто постоянно пишут под Андроид, но всё же. А вот в вебе — да, я даже и не знаю, есть ли что-то подобное, что при этом не генерировало бы кучу не читаемого и не поддерживаемого кода типа Adobe Dreamweaver
1. Не стоит сравнивать Кобол и Делфи. Кобол, к сожалению или счастью действительно почти мертв. Делфи же активно развивается до сих пор и в обозримое минимум десятилетие никуда не уйдет.
Уже и бесплатный 'форк' (FPC/Лазарус) стал хорош для реального продакшна, мы на нем пишем и продаем в том числе (под Линукс).
2. Как я уже писал. Благодаря простоте и надежности синтаксиса (ну не плюсы же :) ) и достаточно удобной для кода и отличной для визуальной части среде, люди уже работавшие, переучиваются в течение месяца-полтора. С тех же шарпов, очень близких, переучить запросто можно людей если нужно. По собственному опыту.
Тоже в продакшене пишем и юзаем проекты на нём. Особых проблем с ними нет ни в работе ни в сопровождении =)
кобол тоже не уйдет до тех пор, пока работает написанное на нем огромной количество кода в финансовой сфере.

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

https://habr.com/ru/company/ruvds/blog/467251/
https://habr.com/ru/company/ruvds/blog/467253/

В дельфе этого нет. Как нет и такого количества кода, который было бы так дорого заменить на что-то еще.
Все так насчет кода кобола. Его кода написано великое множество и поддерживаться код будет еще долго. Однако сам язык уже бесповоротно устарел и обновляться не будет. Делфи же обновляется постоянно. Выходят новые версии, новые фреймворки, обновляются библиотеки, как уже писал — бесплатный 'клон' (FPC/Лазарус) развился до возможности промышленного использования. Постепенно основные библиотеки дописывают для работы с фпц.
В этом и разница.
Использовать язык и вообще инфраструктуру удобно, в отличие от Кобола (сам, правда, не юзал, но хороших отзывов не видел).
Смотрю как раз вебинар по новому фреймворку (пока — только Андроид, в будущем — все мобильные) FGX:
www.youtube.com/watch?v=AzmYLjYvLgU
Своих плюшек у Делфи хватает. Начиная от молниеносной компиляции, нативности кода, работоспособности на всех основных платформах + уже и веб, единый код под все платформы.

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


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

Тем более, что инвестировать свое время в изучение делфи

Для опытного программиста — чего там учить-то?
Сложно учатся парадигмы, принципы, алгоритмы.
А язык — день-два. Если вы уже опытный разработчик, конечно.

Встроенные библиотеки заметно пересекаются с теми же шарпами. Нечего там как правило учить. Специфические вещи можно понять ну за месяц-два. Ну это же не 1С :)
Библиотеки, подходы, очевидно.

В пределах одного JS, к примеру, при переходе от Angular к React вас поджидает куда больше различий, в том числе принципиальных, чем между стандартными библиотеками C# и Delphi.
Лично мне иногда хочется рвать волосы не от языка, а от задач, для которых в конкретных условиях на заданном языке нельзя или крайне трудно сделать хорошо работающее решение. Также не могу считать обязательно необходимым проходить по решению весь путь заново, набив себе при этом по полной программе шишек: это может очень дорого обойтись не только разработчику. Поэтому изучение языков и хороших решений на них не могу считать закапыванием потенциала.
Лично мне иногда хочется рвать волосы не от языка, а от задач, для которых в конкретных условиях на заданном языке нельзя или крайне трудно сделать хорошо работающее решение.

Не вижу условий в котором решение на дельфи будет лучше какого-нибудь другого языка в 2020 году. Ну то есть это что-то из разряда "быстро и хорошо работать на винде, кушая 4 мегабайта памяти". Но можно ослабить это требование с 4 мегабайт до 40 и хоп, можно уже брать дотнет с винформами, и сделать всё то же самое быстрее, проще, да еще и человека который всё это поддерживать будет проще.


Поэтому изучение языков и хороших решений на них не могу считать закапыванием потенциала.

Хелсберг же не зря считается автором сишарпа. Язык просто доработанный делфи, со всем вытекающим. Учить его менее совершенного предка — зачем?

Делфи на месте тоже не стоял, пока сишарп дорабатывали. Сишарп, в целом, хороший язык, кроме обязательного наличия вирт машины и сборщика мусора. К слову — сишарпы от майкрософта на МакОС завезли? Или все еще нет?

Для меня это — плюсы, а не минусы.

Вопрос не в опыте, а в продуктивности.


По-вашему люди вроде Акиньшина неопытные? Сидят там, и в кишках дотнета-CLR копаются, SSE инструкции в джите патчат и вот это всё?


Да нет, просто так дешевле получается. Правило паретто в разработке более чем применимо. Собственно, фаулер про это давно написал.


Ну например, недавно человек на языке с ручным управлением написал в чат, что почему-то такое же решение в хаскелле с ГЦ быстрее чем в супер-быстром расте (и плюсах) с ручным управлением памяти. Дерево у него выглядело примерно так:


struct Tree<T> {
   data: T,
   left: Box<Tree<T>>,
   right: Box<Tree<T>>
}

и на профайлере было видно что 80% времени тратится на маллоки/деаллоки этих боксов. В то время как ГЦ в наивном виде всё прожевал.


Решение в языке без гц, чтобы было шустро, — арены, ручное пропихивание индексов на неё, и прочее развлечение. Просто чтобы получить то, что гц дает из коробки.


Мы же программисты, нужно понимать, что автоматизация это хорошо. Против гц есть определенные соображения (как правило — латентность), но в подавляющем числе случаев они нерелевантны. Софт на хаскелле с ГЦ скорее всего будет работать шустрее чем дельфи, и сожрет а пару раз больше памяти. При этом и написать на нем будет куда быстрее и приятнее.


К слову — сишарпы от майкрософта на МакОС завезли? Или все еще нет?

Уже 5 лет как. И не на макос, а вообще почти везде: https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1-supported-os.md

и на профайлере было видно что 80% времени тратится на маллоки/деаллоки этих боксов. В то время как ГЦ в наивном виде всё прожевал.

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

Ок, наконец :) То, что в том же Лазарусе было фактически с рождения. Насчет Распбери спрашивать не буду, ладно :) Лазарус умеет, прямо там работать ну и собирать, само собой.
Когда в одиночку напишете и будете сопровождать проект на десяток тысяч неайтишных (!) пользователей с зоопарком всевозможной техники, каналами связи разной стабильности и разными версиями/языками Windows и её компонентов, тогда разницу и поймёте — в основном в количестве вопросов и претензий «у меня не работает», с каждой из которых надо разбираться (если посылать лесом к своим айтишникам, на фиг такое приложение нужно вообще).
Да пожалуйста… У меня такой проект был. И пару лет, пока он был актуальным, я его развивал и поддерживал. Собственно, можно было сделать аналог с теми же свойствами и качеством на том же C++ Builder, но я воспользовался тем, на что у меня была лицензия. И с чем сравнить тоже было: аналогичные программы на Visual FoxPro и других средах распространения особого не получили. Видел ещё корпоративные проекты под .Net на тысячи пользователей, которые, хотя и поддерживались целыми командами и в целом работали сносно при соблюдении системных требований (был корпоративный стандарт по оборудованию), но при этом могли банально отвалиться после очередного обновления фреймворка или Windows. Так что для себя я выбор уже сделал. И выбираю средства разработки под поставленные задачи — в т. ч. с учётом предстоящей поддержки.
И с чем сравнить тоже было: аналогичные программы на Visual FoxPro и других средах распространения особого не получили


Безотносительно полезности для пользователя конечного продукта, видимо еще и потому что установка готового прикладного ПО, построенного на базе FoxPro, не столь удобна?
Разумеется; для VFP нужны ещё runtime-библиотеки, которые в какой-то степени могут конфликтовать с другим ПО, использующим их. Тем более пользователи в основном не айтишники и с самым разнообразным зоопарком техники: у кого Windows английский Server, у кого русская 2000, XP или Vista, один коллега вообще с минимумом изменений перекомпилил исходники на Delphi 7 для работы с Windows 98 (писал я исходно на 2009, сырцы были опубликованы для свободного использования) и подсказывал варианты по развитию. Борландовские среды (если не использовать устанавливающиеся в систему shared-компоненты вроде BDE) в этом отношении очень лояльны и к разработчику, и к потенциальным пользователям. Так что, когда количество пользователей во много раз увеличилось (исходно проект не рассчитывался на такое количество народу), количество обращений по запуску ПО так и осталось околонулевым.

Ладно внешний вид и память, но ведь ещё есть скорость… Через web некоторые вещи очень сложно обработать и нужно очень сильно задумываться с фильтрами когда в delphi эти десятки тысяч строк можно было просто крутить на клиенте и отображать хоть на одной форме с живой фильтрацией и поиском)…
А ещё в вэб версиях по хорошему нужно постоянно думать о том что клиентский код (в браузере) может отработать не так как вы думаете и результат нельзя считать достоверным...

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

А мне кажется, что просто некоторые люди не видят ценности для других людей в технологиях которые им лично не нравятся. Например


А в чем плюс таких приложений по сравнению с древним приложением на Delphi? Часто лишь в модном красивом дизайне, как говориться «свистелки-#ерделки», плюс работа через браузер без установки софта.

Пользователи хотят свистелки и перделки и им пофигу что приложение будет сжирать еще 100-200 мегабайт памяти для этого. Это очень показательно, что хардкорные приложения от программистов для программистов имеют вырвиглазный интерфейс и ими невозможно пользоваться (зато летает!). И с другой стороны поделие от дизайнеров, которые требуют анимаций, красивого цсс и прочего. Не так шустро, зато почему-то блин глупые пользователи голосуют рублем за такое.

Пользователи хотят свистелки и перделки и им пофигу что приложение будет сжирать еще 100-200 мегабайт памяти для этого. Это очень показательно, что хардкорные приложения от программистов для программистов имеют вырвиглазный интерфейс и ими невозможно пользоваться (зато летает!). И с другой стороны поделие от дизайнеров, которые требуют анимаций, красивого цсс и прочего. Не так шустро, зато почему-то блин глупые пользователи голосуют рублем за такое.

Пользователи (точнее, заказчики) бывают очень разные. В ширпотребе требования одни, в бизнесе — другие. Там, где мегабайты есть живые деньги, скорость и стабильность работы не пустой звук, на рюшечки смотреть будут тогда, когда это не мешает собственно работе приложения (а также другого ПО, чтобы не было конфликтов) на имеющемся оборудовании. И разработчиков, готовых делать рюшечки вместо разработки-сопровождения решений на «вырвиглазных» языках, они у себя не приветствуют.
В ширпотребе требования одни, в бизнесе — другие.

Да и в бизнесе те же самые. 100% компаний, например, пользуются джирой или схожим трекером. Тормозит, подтупливает, но с рюшечками.


И никто не сидит на самописном вики-движке, который шустрый, но у которого нет интеграций со слаками/гитлабами/...


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

Да прям… Лично я с Jira сталкивался только на одном месте работы (видимо, где были деньги, чтобы её купить вместе с Confluence); больше работал с Redmine. Slack удобен и кроссплатформенен, и его да, активно пользуют, но у нас ни разу не видел, чтобы пользовали с платными тарифными планами (иногда, честно, бесит недолгое хранение истории).
Конечно, Delphi старается соответсвовать современным трендам разработки. И современные версии позовляют решать большинство бизнес задач.
Это был один из первых языков программирования который я начал учить, но даже спустя 15 лет иногда пишу на нем некоторые программы «для себя».
Самое удобное в дельфи — практически мгновенная компиляция. Я могу сделать изменение в проекте на несколько сотен тысяч строк и сразу скомпилировать и проверить как это работает. Это многого стоит)
По большому счету дельфи не лучше и не хуже других сред разработки. Да, в свое время это было прорывом в плане «визуального программирования», хотя до нормального языка спецификации данных типа DDS (Data Description Specifications) в AS/400 где одним языком описываются экранные формы («дисплейный файл» — DSPF), формы вывода на печать («принтерный файл» — PRTF), таблицы (файлы данных, «физический файл» — PF), индексы, объединения, представления («логические файлы» — LF) у них дойти ума нехватило. К сожалению.

Но кода на дельфях написано много. И пока это код жив, дельфа будет жить. Как все еще жив COBOL (развивается слабо, но как-то еще дышит), RPG (этот вполне еще живет на айбиэмовских майнфреймах и потихоньку развивается в рамках концепции ILE — Integrated Language Environment где одна программа может быть собрана из модулей, написанных на разных языках — RPG, COBOL, CL, C/C++).
Жаль, что редко упоминается RAD Studio Community Edition, хотя аргументы против Delphi в этом плане часто проскальзывают. Но это действительно хорошая в многих планах среда разработки. Не уступает современным технологиям и обладает той же стабильностью и устойчивостью приложений написанных в этой среде.
Сейчас конкретно я говорю о Delphi в RAD Studio и не говорю о C++. Говорить о непопулярности судя по статистике из hh.ru сейчас не разумно, т.к. тот факт, что Delphi переживал не легкие дни ни кто не оспаривает. И весь этот застой само-собой повлиял на количество вакансий и запросов касательно Delphi. Он долгое время был на паузе и это не могло привлечь ни к чему хорошему.
Но сейчас мы говорим о прогрессе в этом языке и в основной среде RAD Studio. Те, кто остался, так скажем, верен этому языку знают и понимают, на что он способен. А те, кто когда-то на нём писал помнят, насколько он был удобен и быстр. И я должен сказать, что он остался настолько же быстрым, стал более удобным, удовлетворяющим требованиям современных технологий, но остался простым.
Говорить о неоспоримых преимуществах бессмысленно, о них уже сказано выше. А о «минусе» в операторных скобках вообще смешно. Delphi позволяет создавать не менее сложные конструкции чем C++ (напугали выше массивами с указателями на функции и т.д.). А редактор кода в RAD Studio, если говорить о среде, не хуже, если наоборот не мощнее чем, например в VS (я работал в обоих).

Ждите скачка на Git'e. Delphi поднимется с 12 места в Top 10 языков (TIOBE). Как минимум с прошлого года поднялись с 17 места.
UFO just landed and posted this here
Я не использовал такой механизм. Сейчас, для меня его значимость равна нулю. Т.к. даже в огромных проектах производительность не страдает. Другой вопрос, нужно ли подобное в Delphi и ещё вопрос, а что по-вашему может мешать использовать такой механизм в Delphi?
UFO just landed and posted this here
А почему нет? Это не костыль для языка, а именно эффективный способ решения существующей задачи.

В этом и вопрос. Какой задачи? Пример накиньте.
Например, отсутствие полноценных темплейтов (дженерики их заменой, увы, не являются, это совершенно разные вещи)

И чем же конструкция
template< typename T >
T min( T a, T b )
{
  return a < b ? a : b;
}

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

Мне очень интересны реальные примеры применения таких «преимуществ». И про constexpr не забудьте.
UFO just landed and posted this here
UFO just landed and posted this here
Не нужно писать писать ещё один метод? Он всё равно будет написан, только за вас.

Именно за вас. что означает меньше писать меньше править меньше шанса на ошибку.
Мне очень интересны реальные примеры применения таких «преимуществ»

Да очень просто. Например биндинги к скриптовым языкам, посмотрите boost python, DI, да и куча других.
UFO just landed and posted this here
Насчет дженериков — бесспорно, вещь важная и полезная и давно присутствующая и в Delphi и в Лазарусе. Но шаблоны — крайне спорная фича языка.
UFO just landed and posted this here
И чем здесь такой пример удобнее обычного абстрактного или просто наследуемого класса?
UFO just landed and posted this here
Девиртуализация с обычным наследованием работает куда менее надёжно.

Что значит надёжность? Со временем перестанет работать? Или как?
UFO just landed and posted this here
Неплохо, но на Delphi также можно сделать нечто подобное (если конечно я правильно понял задумку автора). Причём всё это в отличном бесплатном IDE (Delphi Community Edition) с подсветкой ошибок, со встроенным отладчиком, с мгновенной компиляцией, с радующим глаз синтаксисом, где декларации отделены от имплементаций.

program DerivedClasses;
{$APPTYPE CONSOLE}
type
  TDerived = class
    class function Method: Integer; inline;
  end;

  TDerived1 = class(TDerived)
    class function Method: Integer; overload; inline;
  end;

  TDerived2 = class(TDerived)
    class function Method: Integer; overload; inline;
  end;

  TDerived3 = class(TDerived);

class function TDerived.Method: Integer;
begin
  Result := 0
end;

class function TDerived1.Method: Integer;
begin
  Result := 1
end;

class function TDerived2.Method: Integer;
begin
  Result := 2
end;

begin
  Writeln(TDerived1.Method);
  Writeln(TDerived2.Method);
  Writeln(TDerived3.Method);
  Writeln(TDerived1.Method+TDerived2.Method+TDerived3.Method);
  Readln;
end.


И дизассемблер из внутреннего отладчика:
DerivedClasses.dpr.34: Writeln(TDerived1.Method);
mov eax,[$0040c830]
mov edx,$00000001
call @Write0Long
call @WriteLn
DerivedClasses.dpr.35: Writeln(TDerived2.Method);
mov eax,[$0040c830]
mov edx,$00000002
call @Write0Long
call @WriteLn
DerivedClasses.dpr.36: Writeln(TDerived3.Method);
mov eax,[$0040c830]
xor edx,edx
call @Write0Long
call @WriteLn
DerivedClasses.dpr.37: Writeln(TDerived1.Method+TDerived2.Method+TDerived3.Method);
mov eax,[$0040c830]
mov edx,$00000003
call @Write0Long
call @WriteLn

Заметьте как присвоение нуля заменено на команду xor edx,edx. Мелочь, а приятно.
UFO just landed and posted this here
Нет, это не виртуальные методы, а перегруженные. Для обычных виртуальных методов класса/объекта в Delphi всегда создается соотв. таблица, и инлайнить их невозможно. Думаю, в С++ также. Я выше только «смимикрировал» ваш С++ код имеющимися средствами. Понятно, что это базовый пример. В реальном приложении скорее всего было бы иное решение, чтобы сохранить понятность кода, при этом не перегрузив абстракциями.
UFO just landed and posted this here
OK, в Delphi нет шаблонов, и поэтому сделать 1-в-1 как у вас в примере нельзя. Я лишь показал, что при необходимости оптимизации определённого участка кода в Delphi невиртуальные методы классов/объектов могут инлайниться и сворачиваться вплоть до 1 ассемблерной команды. Так что биржевики должны быть довольны.
Вот есть у вас класс с 10 методами, умеющий обрабатывать Integer. Сколько движений нужно сделать, чтобы эту же логику расширить на Float? Наследование — нужно перегрузить все методы, фактически переписать имплементацию класса полностью. Шаблоны —
std::vector<int> a;
std::vector<float> b;

Иногда удобно.
В Delphi дженерики тоже есть, пусть не такие универсальные (и поэтому сложные) как шаблоны в С++. Дублировать придётся ту часть кода, которая специфична для типа параметра дженерик-класса. Вот очень простой дженерик-класс, с вектором значений типа T внутри. Я добавил метод установки размера вектора (он не зависит от типа параметра класса), и суммирование значений (а этот код зависит от типа параметра).

type
  TMyVector<T> = class
    Arr: array of T;
    procedure SetLength(Len: Integer); inline;
    function Sum: T; inline;
  end;

procedure TMyVector<T>.SetLength(Len: Integer);
begin
  System.SetLength(Arr, Len)
end;

function TMyVector<T>.Sum: T;
var
  i: Integer;
begin
  Result := Default(T);
  for i := 0 to Length(Arr)-1 do
    case GetTypeKind(T) of
      tkInteger: Inc(PInteger(@Result)^, PInteger(@Arr[i])^);
      tkFloat: PDouble(@Result)^ := PDouble(@Result)^ + PDouble(@Arr[i])^;
      tkUString: PString(@Result)^ := PString(@Result)^ + PString(@Arr[i])^;
    end;
end;

begin
  var IntVector := TMyVector<Integer>.Create;
  IntVector.SetLength(3);
  IntVector.Arr[0] := 100;
  IntVector.Arr[1] := 200;
  IntVector.Arr[2] := 300;
  Writeln(IntVector.Sum);

  var FloatVector := TMyVector<Real>.Create;
  FloatVector.SetLength(3);
  FloatVector.Arr[0] := 100.11;
  FloatVector.Arr[1] := 200.22;
  FloatVector.Arr[2] := 300.33;
  Writeln(FloatVector.Sum:6:2);

  var StringVector := TMyVector<string>.Create;
  StringVector.SetLength(3);
  StringVector.Arr[0] := 'ABC ';
  StringVector.Arr[1] := 'DEF ';
  StringVector.Arr[2] := 'GHI ';
  Writeln(StringVector.Sum);

  Readln;
end.


Как видно, мы всё ещё можем инлайнить невиртуальные методы дженерик-класса (я проверял — инлайнится). Также компилятор исключает блоки кода, не относящиеся к конкретному экземпляру класса. Например, для класса TMyVector (Integer) из кода будут удалены лишние ветки tkFloat и tkUString в операторе case GetTypeKind(T) of… Суммирование элементов для TMyVector (Integer) реализовано через команду Inc, а для действительных чисел и строк — через "+". Не знаю, можно ли в шаблонах С++ сделать так, чтобы часть кода метода шаблона исполнялась только для шаблона с параметрами определённого типа?
UFO just landed and posted this here
Ну, не весь пропал. Но полиморфизм — это понятие из ООП. А мы тут с шаблонами С++ сравниваем. Шаблоны С++ — это тоже не совсем ООП, а метапрограммирование, следующий уровень абстракции.
UFO just landed and posted this here
И чем же конструкция лучше обычной перегрузки методов?
Не нужно писать писать ещё один метод? Он всё равно будет написан, только за вас.
Тем, что внешний пользователь библиотеки может использовать этот метод для всех объектов, которые поддерживают сравнение. Дописать в библиотеку «ещё один метод» он не может.

Для этого можно легко использовать те же самые обычные дженерики, просто передавая анонимным методом нужное тебе сравнение хоть для чего. (Хоть сравниваемые, хоть не сравниваемые)
Запись будет по типу:
...<.integer>(A, B, function(Left, Right: integer): integer;
--------------------begin
----------------------любое сравнение на усмотрение
--------------------end);
Шаблоны, к слову, кроме плюсов вообще в каком-то распространенном языке используют?
UFO just landed and posted this here

А можно поподробнее что имеется в виду?

UFO just landed and posted this here
В Delphi на каждое использование дженерика с конкретными параметрами сразу во время компиляции создаётся отдельный класс. Это происходит прозрачно для программиста.

Мне кажется дженерики там работают так же как и везде — компилятор мономорфизирует под конкретные вызовы во время компиляции.


В делфи ведь нет никакого рантайма который бы позволил это делать во время выполнения.

UFO just landed and posted this here
Template metaprogramming is used by a number of languages, the best-known being C++, but also Curl, D, and XL.

Some other languages support similar, if not more powerful, compile-time facilities (such as Lisp macros), but those are outside the scope of this article.

en.wikipedia.org/wiki/Template_metaprogramming

Т.е. D. Похожие возможности есть в других языках. Макросы на ассемблере как предельный случай.
А редактор кода в RAD Studio, если говорить о среде, не хуже, если наоборот не мощнее чем, например в VS (я работал в обоих).

Непосредственно редактор — лишь малая часть современной IDE. Что там с фоновым анализом кода на ошибки, рефакторингом, быстрыми исправлениями в современной RAD Studio?
Сможет потягаться на равных с IntelliJ IDEA?

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

Рефакторинг позволяет переименовывать не только переменные, классы или методы, но и визуальные/невизуальные компоненты из редактора кода, меняя так же название на форме и в биндингах.
Я могу заменить один компонент другим, переняв у старого компонента все подходящие свойства (например, edit на combobox).
Я могу описать класс и использовать автозавершение (Ctrl+Shift+C), которое создаст все методы и методы свойств автоматически. Создав приватные переменные свойств и определив их получение через методы этих свойств (set/get).
Я могу начать писать в самом коде новый метод класса и использовать автозавершение, которое автоматически опишет этот метод в описательной части класса.
Параллельное редактирование — есть. Т.е. я могу выделить кусок кода и изменять все одинаковые слова одновременно.
И ещё десятки сочетаний клавиш, которые позволяют вставлять шаблоны или оборачивать код в шаблоны (например, try except). Ну и по классике, гибкая настройка автозавершения, шаблонная работа со стандартными конструкциями, например циклами, которая позволяет перемещаться табом по элементам описания цикла. Обрамление в скобки выделенной части и т.д. и т.п. Я устану описывать всё. И многое ещё наверное не знаю.
Плюс есть возможность дописать внешние эксперты и установить в IDE. Готовых уже написано немало (Касталию интегрировали в более свежие IDE, все эти эксперты бесплатные, половина оупенсорс):
www.gexperts.org
www.cnpack.org/index.php?lang=en
www.mmx-delphi.de
blog.marcocantu.com/blog/2014_september_free_castalia_xe7.html
Вот штук 20 статей по фичам:
www.tdelphiblog.com/search/label/%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82%D1%8B
www.tdelphiblog.com/2011/06/opisanie-modelmaker-code-explorer.html
Но если мало, можно и свой эксперт запилить :)
UFO just landed and posted this here
Смотрим на "Зарплаты в ИТ во втором полугодии 2019 года: по данным калькулятора Хабр Карьеры":

1. Зарплаты в Delphi снизились, и являются наименьшими среди других языков в изученном списке
2. Переход с Delphi на 1С даст в 18 раз (из hh.ru) больше вакансий на выбор и +75% медианного дохода. Язык 1С — это Паскаль почти.

Т.ч. в РФ «Delphi is dying».
Всё течет, всё меняется. Вот турки (ссылка выше) купили миллион обучающих лицензий Delphi, думаю что и в России ситуация со временем станет лучше.
«Я не согласен, ааммммммм эээээммммммммм, поставлю минус»…

Здесь что, минусят только потому что у кого-то другая точка зрения?

Если уж переходить, то на Java, C# или пусть даже на PHP.


Язык 1С — это Паскаль почти.

Строгой типизации нет, ООП нет, даже банального оператора case и того нет. Ну да, «почти».

Articles