Comments 377
Нативный компилятор Дельфи под Win32- самый быстрый из мною виденных.
Реально С++ после него кажется сошедшим с комикса xkcd. И ребилд всего проекта на нём- обычное дело, не проблема ваще. Правда компиляторы под другие платформы, как я слышал, построены на основе LLVM, что не лучшим образом сказалось на скорости. Но все равно с цпп- нёбо и земля.
Инлайнить можно глобальные процедуры и методы классов (см. примеры в коде по ссылке выше). С типобезопасностью у Pascal/Delphi проблем не было никогда. Поэтому не вижу проблем наваять быстрый и безопасный Delphi-код c цепочками обработчиков. Не знаю что там поменяли в шаблонах у С/С++, когда я последний раз пытался разбираться в нём, там можно было творить жуткие вещи. Может, сейчас слегка обрезали возможности этой «фичи» в языке…
Вы предлагаете поставить плюс к 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)
}
Вообщем пока дельфи не в состоянии сделать то что для меня необходимо. Ну точнее может, но без шаблонов код превращается в кошмар сродни проброски lua.
Кстати можно посмотреть как биндится луа и сравнить. В С++ будет примерно также как и с питоном. В дельфи я думаю мало что изменилось в этом плане со времён моего обучения в универе, там биндинги были только через работу с lua стеком интересно есть ли подвижки сейчас.
Просто в С++ в нативном виде луа также только через луа стэк работает. Но благодаря шаблонам это превращается в простой код.
Шаблоны я могу много ещё для каких целей предложить, которые уменьшают работу в несколько раз. Так что не надо говорить что
Вы предлагаете поставить плюс к C++ относительно Delphi, функционалом, нужным только C++.потому что это не так, у вас просто нет ни опыта ни знаний для того чтобы в принципе оценить ценность шаблонов С++. (что-то сродни эффекту Даннинга Крюгера)
Во-вторых, в 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 конечно это довольно полезные вещи, но они требуют довольно прилично кода для обвязки, и это даже не близко по удобству как экспорт С++ класса.
А это через RTTI:
github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Components/Sources/Core/WrapDelphi.pas
Причём, как я вижу по истории, они там с 2005го года ещё через старенький неудобный RTTI умели работать.
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;
};
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 библиотеки вместо нормального кода то ещё извращание + это к сожалению только для винды.
В 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, и вроде как натив стал не нужен, а когда поняли, что нет, нужен, про былые достижения натива забыли.
Коммерсам это вспомнить будет выгодно, если у раковины будет один слив. То есть, никогда или
только для винды
или если всё запечатать в проприетарный ЯП.
Подходящее место — это университеты, как бы только их отучить смотреть в рот коммерсам, а самим творить историю.
А сколько само Delphi из сорцов ребилдится?Так как сырцы Делфи (IDE) закрыты, то могу сказать сколько времени собирается Лазарусь. Секунд 10-15.
ребилдится при этом полностью всего за 8 часов, если полностью из сорцов собирать
А сколько само Delphi из сорцов ребилдится?
Вы напрасно пытаетесь тут что-то выкружить.
У Borland Pascal всегда была довольно шустрая компиляция, ибо одного прохода достаточно, Вирт продумал это при проектировании языка.
Можно предположить, минут 20-30.
30 минут vs 8 часов — это небо и земля.
И это полностью из исходников, чего никто не делает.
А из подготовленных предварительно (автоматически) бинарников библиотек/объектных файлов — считанные секунды (очень крупные программы — десятки секунд).
Вы Delphi тоже из сорцов собираете каждый раз?
Еще можно статически скомпилировать QT и будут у вас бинарники по паре мегабайтов.
Так же по моему опыту, я собирал программу на Qt4, при этом изначально тестировал ее в Qt5 на локальном компе, а потом удаленно компилил на машинке с астра-линуксом (на котором только 4 версия работает) и там все работало
На D7 — 400 кб.
У меня есть программа написанная больше 13 лет назад в D7, и она все еще отлично работает в современной винде. И это просто удивительно. Самое интересное что я теперь даже скомпилировать эту программу не смогу, поскольку использовались сторонние библиотеки, которые даже скачать теперь просто невозможно (да и не помню как это все настраивать).
Хотя редактор там, надо признать, интересный.
Я и не говорил что это идеальное решение. Но. Несколько тысяч, бесплатно, оффлайн, с поиском… Если хотите и вам не хватает того что там есть — сделайте экспорт из этого редактора и раскрасьте сами.
Generics, полноценная поддержка Unicode — уже пары этих пунктов достаточно, чтобы забыть D5 как страшный сон.
что касается остального — я хотел донести мысль, что и на 5-ке, которая 1999-го года, т.е. будет 21 год в этом году, что по меркам разработки уже какая-то древность, что-то типа Алгола в 90-х, так вот, на 5-ке вполне можно комфортно разрабатывать достаточно сложные standalone корпоративные системы, которые будут быстро работать и нетребовательны к ресурсам. Несомненно, для начинающих есть существенные выгоды в новых версиях, но когда на Delphi пишешь 25 лет уже давно есть набор практически всех необходимых для работы библиотек, значительная часть которых еще и самостоятельно написана.
А юникод… ну вот в 3-ке с ним были проблемы, помню, что и сподвигло с нее переехать, а вот в 5-ке как-то не вижу больших проблем.
В том числе благодаря чему он и держится до сих пор в топах языков (почти всегда в десятке +-, из, замечу, тысяч и тысяч) не смотря на постоянные и безуспешные попытки его похоронить :)
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 пеняют, смех), что пришлось Котлин переизобретать.
И что с того, что позже то? :)
Читаем изначальный тезис:
Delphi был изначально очень хорошо, можно сказать, идеально, спроектирован.
В том числе благодаря чему он и держится до сих пор в топах языков
То, к чему другие языки приходили годами и десятилетиями, было в Делфи изначально и давно, и это один из плюсов в общем-то. Кодовая база успела наработаться сразу с хорошим синтаксисом и кода и объектной модели. А что мы сейчас видим в JS? Ежегодные фреймворки. Которые один от другого отличаются, как здесь писали, сильнее, чем Сишарп от Делфи. Врятли это так уж хорошо и удобно для бизнеса — постоянно переписывать код занова.
Нам вот неудобно.
Мы среди прочего пишем часть проектов на JS. Всё до сих пор написано на jQuery, который уже, видимо, не торт. А переписать возможности (точнее времени) нет совсем.
С языком, конечно, не связано напрямую, но для Delphi GUI — это важная часть экосистемы
Нормальный редактор и нормальный конструктор — 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 точно этим страдает).
Ещё в D5 можно было кинуть пару компонент, а они сами свяжутся, потому что у компонент был интерфейс времени редактирования. Именно из этого подхода J2EE потом выросло и многое, многое другое — но так легко и красиво больше не встречал.
Для маленьких проектов это неважно. Для того, что работает на больших enterprise серверах, где одновременно крутится тысячи задач экономия пары мегабайт может быть весьма существенной.
Может.
Но там как раз реже заморачиваются, в связи с более сложной обозримостью кода.
Ну да… В бой мимо нагрузочного тестирования поставки не проходят.
Всё дело только в оценках — а стоит ли оптимизировать.
Если экономия ресурсов железа отложит вхождение на рынок на полгодика — ни один бизнес в здравом уме не пойдет на это. Запустят проект многожрущим, всё равно это выгодно бизнесу.
Последний случай — сбой в работе Альфа Банка 27-го декабря. Но там все реально сложно было предсказать. Хотя можно, конечно… Технические подробности рассказать не могу, да и слишком сложно это объяснить тем, кто не в курсе как оно все работает. Так что поверьте на слово — проблема была именно в недостаточной оптимизации (и работы в этом направлении будут выполнены и выводы на будущее будут сделаны). Хотя здесь к этому вопросу подход более чем серьезный. Но именно вот этого момента не учли.
github.com/Fr0sT-Brutal/awesome-pascal
Это все бесплатное, математические пакеты там тоже есть.
На Торри можно посмотреть еще:
torry.net/pages.php?s=100
Но математические пакеты на плюсах проработаны лучше, спорить не буду. Хидеры в помощь :) Подключаемо все.
А вы говорите про готовые библиотеки с функционалом. Но и на ваш вопрос есть ответ. Во первых в делфи есть автоматический импорт интерфейсов из библиотек. У вас будет сгенерен файл с заголовками функций которые библиотека реализует, подключаете его к проекту, в рантайме подтягиваете библиотеку, получаете адрес на нужную вам процедуру приводите к типу процедуры и вызываете. Если вам в нескольких программах нужен функционал можно его оформить ввиде компонента и добавлять поддержку либы одним кликом.
Во вторых, если автоимпорт не сработал, можно написать файл самому и подключить его как я выше написал.Причем описывать все не обязательно, можно описать только то что вы будете вызывать.
Да просто когда гуглишь, есть ли библиотека для решения той или иной задачи (работы с графами, хитрого матана, да мало ли), то в основном находишь плюсовые библиотеки.
Наверное просто потому, что Гугль уже подстроился под ваши требования.
Имхо, должно куча под Фортран такого гуглится.
Плюсовые тоже?У которых есть COM/OLE интерфейс — тоже.
А если нужны не компонентные обертки, а просто хидеры плюсовых библиотек — то большинство основных переведены и давно.
Странно, на на AS/400 (i5/OS, IBM i) C и C++ есть (компилятор встроен в операционку в составе ILE), а Дельфы нету…
Community edition же есть. Абсолютно полнофункциональный.
Он не полно функциональный, там много как технических, так и юридических ограничений касательно того, когда его можно использовать.
Старый вариант, который был просто «No.» только лаконично отвечал на поставленный вопрос.
Ещё можно было написать более явно:
const IsDelphiDying = false;
Delphi вполне себе живет, развивается и соответствует текущим трендам разработки ПО
Что ж вы свой сайт на PHP сделали, а не на Delphi
Ибо ни к чему это микроскопом забивать гвозди…
Лазарус умеет собирать в WebAssembly.
Не умеет в Linux, и неизвестно когда научитсяОбещают в этом квартале. Уже почти.
Забавно, но у них самих сайт работает на ASP.NET, судя по хедерам. С кросплатформенностью тоже непонятно.Не всё сразу.
Ценник в целом конский и у тех и у тех.Ценник в Унигуе предполагает годичный саппорт. Можно хорошо напрягать саппорт на форуме и мылом, дают готовые решения совершенно бесплатно. Чем все постоянно и пользуются (ссылку кидать не буду, есть с их главной страницы). Так что ценник более чем оправдан.
Автор хочет сказать, что пишет на Delphi? — каждый сам волен выбирать удобный ему ЯП
Автор хочет рассказать, что он купил освободившийся домен? — если про это каждый будет создавать статьи на хабре, то сайт будет забит подобными статьями без смысловой нагрузки.
Автор хочет сказать, что Delphi жив? — Пусть живет. Пока компаниям требуются другие языки жив он или мертв большинству людей безразлично.
SEO оптимизатор
был приобретен домен «isdelphidying.com»
теперь вот статья
но, боюсь, остановить смерть таким способом будет сложновато…
И думаю не я один такой, поэтому решил поделиться данной новостью со всеми причастными — все-таки язык был весьма популярен в свое время, и за одно это к нему нужно относиться с уважением.
Иногда тёмными ночами, пользуясь тёмной некромантией, поднимаю Delphi 7 на виртуалке и кодю на нём родимом, ибо адепт тьмы.
Есть возможность собирать консольные приложения под линукс «из коробки».
При покупке платных компонентов от третьей стороны можно уже собирать нормальное приложение с формочками и всем этим.
Работает на Убунте и на Астре, на остальных не проверяли.
docwiki.embarcadero.com/RADStudio/Rio/en/FireMonkey_for_Linux
В Дельфях теперь тёмная тема есть из коробки.
Поэтому, просто вносишь правки в систему под текущее законодательство. Переносить современные концепции в старый код та ещё некромантия.
Выше была шутка по веб-браузер на Delphi, так вот, в нашем проекте такое есть, большинство отчётов на html (правда без javascript). Зато всё летает на таком железе что устарело ещё в прошлом десятилетии.
Но это мелочи, у нас есть контрагент ИП, учётная система которого написана на турбопаскале, под dos, с матричной печатью, более 25 лет непрерывной работы.
Кое-где ещё ЕС-ЭВМ работают, правда в эмуляторах, понятное дело.Блин, я готов поспорить, что переписать его на каком-то современном стеке окупилось бы довольно быстро. Тогда и либы приходилось писать с нуля и код писался не так уж и быстро
Блин, я готов поспорить, что переписать его на каком-то современном стеке окупилось бы довольно быстро.
А вот и напрасно.
Поинтересуйтесь историей развития системы продажи авиабилетов «Сирена».
Она успешно стартовала еще на тех старых машинах, но потом их сняли с производства и оказалось гораздо выгоднее написать именно эмулятор.
На эмуляторе система продажи авиабилетов и работала пока не пришла пора создать новое поколение ПО.
Обратите внимание, переписать не потому, что нужно оказалось новое железо (это и эмулятор решал). А переписать потому, что понадобилось решать новые прикладные задачи, для которых старая система была не приспособлена.
Вот только тогда и стало выгодно всё переписать с нуля.
Хм… ладно, с опенсорсом все плохоЗамечу, что оупенсора под Делфи хватает. Не только количество реп стоит смотреть. Основной оупенсор существует для решения большинства проблем:
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 занимает намного большую нишу, тут спорить не буду. Пока что так.
Delphi позволяет писать драйвера, движки и нагруженные веб сервисы. По этому, ваша некомпетентность не позволяет вам спросить сейчас тут.
Более того, его популярность растёт. Не в ваших кругах, пока, но растёт. Ещё вернёмся к этому разговору, поверь.
Я говорю о росте популярности, т.к. его вижу напрямую. И это не касается студентиков и к слову, их запросы на популярности не особо сказывются, т.к. они в 100% случаев гуглят Паскаль.
Я говорю о вновь растущем комьюнити. Я общаюсь с теми, кто использует, я помогаю тем, кто спрашивает. Я вижу контент разработчиков и партнёров на канале в Ютуб. Ну и конечно, я вижу развитие.
За не большое время, в среде появилось масса всего. Достаточно зайти на канал и вы увидите. Rest, doker, веб-технологии, mvc, orm и прочее. Сильный скачек кроссплатформенного фреймворка FireMonkey, поддержка свежего оборудования и дак далее и тому подобное.
Или «Эммм эээээээээ мэээ ээээээ ммммээээээ, он за Delphi, мэээ эммм, моё мнение не совпадает с его, эЭэээЭэЭэЭ, поставлю минус»?
там что называется яблоку негде упасть :) разговоров не меньше чем на Питоне.
Была даже ситуация когда не могли зарелизится и ждали одного разраба из отпуска.
Так что увы… Разработчиков все меньше, технология умирает.
Вакансий по Kotlin на hh в 2 раза больше, высокооплачивемых (более ≈ 190-220 т.р.) в ≈ 14 раз.
-Как только нужно планировать обучение на следующий год .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-м билдере.
Но там была одна ситуация, здесь совсем другой масштаб и совсем другие подходы.
Как думаете, могу я тут сказать «а я выбираю дельфи»? Нет, не могу. Потому что ее тут нет.
Можете.
Третий раз повторяю:
На это я сразу ответил заранее.
Но повторю для невнимательных: вы вольны выбирать себе контору, что подходит вам, а не прогибаться под то, что вам не интересно.
Если вы действительно специалист, а не просто себя таковым мните.
У вас же там не пожизненное рабство? Не?
Новичку нужно будет осваивать это своё ПО. Или — искать человека со знанием редкой технологии. Что лучше — неизвестно.
Насколько крупна контора где вы работаете? И как часто вам приходитт на доработку сратый код, написанный кем-то другим?
Дело не где. Дело — и где и кем. После 30 лет опыта работаю тем, кто всё определяет.
В вашем понимании — я тот, кто выбрал для вас и ваших коллег платформу.
На самом деле, по достижении некоторого уровня и опыта перейти с одного языка на другой или с одной платформы на другую совсем не так сложно как кажется поначалу. Устрицы…
На рынке разработчиков днем с огнем не сыскать.По собственному опыту, разработчики переучиваются за месяц-полтора. Простой и надежный синтаксис и удобная среда сильно помогают.
Молодцы, но вы не оказываете существенного влияния на рынок. Соискателю придётся иметь дело с такой печальной статистикой:Посмотрите запросы так: программист Delphi и программист C++ (шотить не буду, можете проверить):
449 вакансий «программист с++»
316 вакансий «программист delphi»
То есть с ближайшим 'конкурентом', нативными плюсами — разница незначительная. Да, на управляемых языках вакансий больше. С C++ же Делфи идёт почти вровень.
При этом никто не орёт о том, что Плюсы умирают, а про Делфи я это слышу уже 20 лет :) Парадокс.
Посмотрите запросы так: программист Delphi и программист C++ (шотить не буду, можете проверить):
Почему так? если некоторые пишут Разработчик С++ или просто Senior C++.
если просто писать язык то получается дельфи — 500 С++ — 3000 разница уже существенная
Team Lead: разработка мобильного клиента для платформы CommuniGate
Программист iOS (Swift)
Программист JavaScript (WebGL)
Python разработчик / Python software developer
Зачем они это делают, ведь вакансий очень мало и средняя зарплата существенно ниже, чем для 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
Я вот как раз не знаю фронт (но, правда, отлично, побайтно и сильно многопоточно, знаю бэк), однако это не помешало создать три приложения с больше чем ста формами на унигуе. Саппорт слегка помогал, но 99% делал сам.
Не стоит писать свой парсер JSON.
Я бы не отказался от парсера, который задействует AVX и все ядра моего нового процессора.
В молодости стюардесса была хороша, но пора закопать. :D
Там, немного выше по треду, разработчик из 10 парсеров нашел 0. Можно, конечно, сказать, что плохо искал, и что поленился написать 11-й… Короче, очень мало предпосылок к использованию Дельфи в 21 веке. Угрюмое legacy с 1,5 Гб кода, да и всё пожалуй.Можно и не закапывать, просто есть стюардессы и посвежее.
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
uses
System.JSON;
Так вот, мое мнение, что Delphi с тех лет и начал умирать. Примерно после D7.
На работе есть два проекта — один на Borland Builder C++ 5.0, а второй на Embarcadero C++(не самый последний).
Программы в общем-то идентичны по функционалу и числу форм.
У первой ЕХЕ файл 4Мб, в памяти весит 5-6Мб с данными.
Второй EXE — 40Мб, в памяти весит 60Мб.
По внешнему виду одинаковые программы. Вот так вот разжирели VCL-библиотеки за 10-15 лет.
Отсюда считаю, что смотреть надо в сторону C#.
Но там тоже — WinForms тоже вроде как отмирает и мелкомягкие не рекомендуют его для новых проектов. WPF — модерново и xaml-ово, но не вызывает тяги.
Qt жиреет либами и пугает ценами.
Куда движется декстопное вындоуз программирование?
Умирает? :) Довольно большая часть решений уходит в облако
Потом изучил С++ и словно дополнительные руки выросли.Тут главная проблема — проконтролировать что эти дополнительные руки выросли из правильного места. :)
стухли на указателях и массивах с указателями на указатели функций.эм, а какая проблема в дельфи с массивами указателей на указатели или с указателями на функции?
type
pFunc = function:integer; //ну или какой там формат вызова функций нам нужен
ppFunc = ^pFunc;
var
fArr : array of ppFunc;
Если же в массиве должны быть разнородные по вызовам и возвратам функции — объявляем массив нетипизированных указателей, и приводим к типу нужной функции непосредственно перед вызовом нужной функции.
Но такая архитектура выглядит странно, во всех сценариях, требующих такого массива (которые я смог вообразить) логичнее было б использовать ООП и в массиве держать указатели на объекты.
А сейчас хакеры пишут кейгены, которые требуют .NET версии 3.5, а VS Code вообще на «электроне» делают.
Рядом в диспетчере задач висит Github Desktop (110 Мб) и смеётся.
А из трея выглядывает Java и просит её обновить. Хотя я вроде сегодня Java-программы не запускал…
# положенный в корень 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?) лет.
Куда как более многословную Яву её многословность не убивает.
Если посмотреть, допустим, на какие ЯП ГОСТы есть, там Си или чего-то с фигурными скобками в принципе нет, не смотря на одинаковый возраст Паскаля и Си. Нафиг не падали эти скобки никому, жили и жили без них.
Тем, не менее, у среды еще остаются пользователи. Знаю, поскольку, в том числе участвую в проекте по разработке компонент для этой среды, и их до сих пор, к моему удивлению, покупают.
Сам же, по основной сфере деятельности использовал Delphi в этом году единственный раз — когда потребовалось со считывателя smart-карт считать данные полиса ОМС. В браузерах это не завелось, а на Delphi с учетом примеров, которые были в сообществе, задача была решена в течение дня.
где Delphi не смог предложить чего-то быстрого и удобногоВсе течет, все меняется, смотрим Унигуй и другие паки:
unigui.com
www.youtube.com/watch?v=YlMG4VKItbo
Delphi стал популярен в РФ в начале 2000х, когда 1с еще не выпустила 8.0, и когда диски с Delphi пиратились безо всяких проблем с органами (т.е. для предприятий — бесплатно). 1с в большей части старалось повторить успех компонентной модели Delphi, и даже язык в 7 версии 1с стал похож на русифицированный паскаль (и даже номер версии стырили у Дельфи), и пиратские диски точно так же продавались везде, иначе бы никому эта 1с была бы не нужна.
Я думаю вопросы о популярности Delphi нужно ставить только среди Desktop разработчиков, создающий Enterprise приложения ну хотя бы на 100-200 форм со всякими таблицами, вкладками и т. п.. Потому что нормально и быстро делать это можно либо в Delphi, либо в C# на WinForms, а во всех остальных средах это сущее мучение. Попробуйте опровергнуть меня.
Рано или поздно наступит день П и придут ребята в дорогих костюмах и предложат полный пакет услуг автоматизации в облаке, за шестизначные числа, в долларах.
Если говорить про размер и что бы программа работала от одного нажатия без танцев с бубном. У нее были все возможные формы и элементы интерфеса. Вы не поверите, но я могу взять ИГРОВОЙ движок godot и сделать на нем утилиту. И эта утилита будет весить 10-30 м.б. Работать будет везде. Даже в html5. При этом даже школьник, который два раза в жизне питон видел, сможет что-то да сляпать там, посмотрев пару уроков на ютубе. А потребление оперативной памяти врятли превысит 100 мб.
Кстати GDScript, который юзает движок — включили в перчень языков на гитхабе
Ну, такого динозавра как Java же используют и ничего…
А десктоп на ней не пишут.
А в чем заключается "хорошая поддержка веба"? Не лучше чем в любом другом языке, да и кроссплатформенностью никого не удивить уже
А в чем заключается «хорошая поддержка веба»?
спринг, freemarker, cloud config — и это все из коробки на грэдле с минимальными телодвижениями. бойлерплейт и рантаймы все под капотом, но если нужно — переопределяются в пару пинков.
Не лучше чем в любом другом языке,
В той же гошечке поддержка веба выглядит несколько… гм… уродливо. в питоне — несколько более «ручная» в плане количества работы.
Это везде с минимальными телодвижениями. Тем более спринг не самый лучший инструмент, далеко(говорю как человек, который им постоянно пользуется).
Сервлеты устаревшие и кривые, мвц со старой поточной моделью, вебфлукс сырые и страшные(Java же). Спринг секьюрити тихий ужас. Сам di в спринге и тот кривой. Да и с кроссплатформенностью не все так однозначно. В основном она есть, но иногда разные jvm ведут себя по разному.
Так что думать что язык используют только потому что он хорош(или инструменты) — ошибка. Большую роль играет история, популярность языка. И я думаю что дельфи кровь подпортила именно политика компании, а никак не качество или "устарелость" языка.
спринг не самый лучший инструмент, далеко
Лучше нету. Есть другие. А лучше — нету.
Сервлеты устаревшие и кривые
Так на уровне сервлетов давно никто не работает.
Спринг секьюрити тихий ужас
В чем ужас? Все работает на аннотациях.
с кроссплатформенностью не все так однозначно
спринг чисто на джаве, какие там проблемы с кроссплатформенностью?
разные jvm ведут себя по разному.
сейчас большая часть JVM — это openjdk. Если кто-то ломает JVM и не трудится проходить Java Compatibility Tests — ну… ССЗБ.
- Лучше есть, и много.
- На уровне сервлетов работают, как минимум фильтры.
- Ужас в отсутствии типизации и единого подхода. Каждый лепит как вздумает, в итоге там полно говнокода(посмотрите на реализацию jwt).
- С рефлекшном были проблемы. Аоп не работало, конфигурация не переключалась, проперти не работали на опенждк. На оракл работало.
- Openjdk и Oracle jdk. Кто-то ломает — это, видимо, Oracle т.к. они и то и другое пишут.
2. Фильтры работают немножечко сбоку. А прикладной код на уровне сервлетов сейчас мало кто пишет именно благодаря Spring MVC.
3. Здрасте, приехали. Там есть инфраструктурные бины, которые можно конфигурировать и переопределять. Если у вас не работает — значи вы скорей всего не поняли методологию.
4. Года 3 назад — возможно. Сейчас OpenJDK и OracleJDK — идентичные вещи. У меня, кстати, с Spring Boot ни там, ни там не было проблем.
- Тот же ктор в котлине выглядит получше. А большой опыт на одном языке ничего о кругозоре сказать не может
- Фильтры это сервлет апи
- У меня как-раз работает. Т.к мне пришлось писать свою реализацию токенов, используя апи спринг security. Поэтому ответственно заявляю: апи плохое, сконструировано абы как, везде Object'ы, downcast'ы и просто плохой код. Такое ощущение что сами создатели пытаются действовать в обход апи, посмотрите как работает JwtTokenStorage.
- У меня тоже проблем не было. Удивился когда появились. И не три года назад, а пару месяцев.
2. А, вы про те фильтры. Да.
3. У меня с хранилищем креденшлов в базе нормально все работает из коробки. OpenId — тоже, хоть и чуть менее, чем из коробки. JWT сам по себе страшный сон, избегаю его где только возможно.
4. На свежих версиях типа 13й? Потому что 8-я — что Open (причем от разных мейнтейнеров), что Oracle — «идентична натуральному».
- Скорее не навязывает ООП там, где оно не нужно(а оно редко где нужно).
- Jwt тоже из коробки работает. Но вся работа по созданию токенов переехала в TokenEnhancer/TokenConverter(оба интерфейса реализует один класс + там есть downcast). А почему страшный сон, если не секрет?
- Речь о кровавом энтерпрайзе, и 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 требует контейнера
и что, внутри спринга 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).
AWT — обнять и плакать.
А, не. Из повседневочки — IntelliJ IDEA и Arduino IDE из того что на Java написано десктопного юзаю. Чуть-чуть пишут, да.
Ну так джава нынче действительно кроссплатформенна, и с хорошей поддержкой веба. А десктоп на ней не пишут.Вот как раз только что пробежало в телеграмме:
>>ещё не забудьте правильную версию явы установить, чтобы ваше приложение заработало…
>да, да. в инструкции как раз об этом жирно описано, нужна правильная версия Java.
За что среди прочего не люблю всевозможные вирт машины.
Раньше чтоб создавать нормальные UI под винду ничего толком не было и Delphi/Builder реально помогал и ускорял разработку, мы в свое время написали продукт полностью на билдере с очень сильно настраиваемым интерфейсом пользователя. Без Билдера это было б сложно сделать и за это спасибо ему.
Но сейчас частично из-за Эмбаркадеро и его странной политики, частично из-за того что больше вариантов стало я думаю что он все таки потихоньку умирает.
Посмотрите форумы и сравните число тем и сообщений по 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 (сюда же 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, все ручками, никакого визуального программирования… Долго, скучно и печально
Сейчас же в цене только хайп и мода. Посмотрите вокруг — ворох новых языков, еженедельные новые веб фрейворки. Есть какая-то гарантия что они проживут хоть какое-то заметное время? Или каждый год переписывать все занова?
А вот Делфи прожил, хотя его уже больше 20ти лет хоронят :) цитаты (2006-й год):
собственно, я в разной прессе наблюдаю сообщения типа «дельфи умер» примерно лет шесть-семь
Тема о смерти Делфи обладает невероятной жизненостьюwww.sql.ru/forum/342656/umret-li-delfi
И это не странно. На Udemy по запросу Delphi — 69 результатов поиска, а по PHP, который тоже принято хоронить, — 1000+. Там выше еще статистику по StackOverflow приводили и по вакансиям с hh.ru. Даже человек незнакомый с программированием понимает, что пожалуй лучше начать учить что-то более востребованное.
Разумеется хайповых технологий каждый год появляются десятки, и так же десятки исчезают за ненадобностью, но, возвращаясь к начальной теме моего комментария, я бы не рискнул сейчас начинать пилить новый проект, который дальше нужно будет поддерживать и развивать, на Delphi.
Другое дело человек, который до сих пор пишет на Delphi и реально крутой профессионал — вот такому да, как вы и написали, такому можно диктовать свои условия, потому что конкуренция как раз-таки будет работать на него: он профессионал, он востребован. Хотя и тут есть нюансы. Стоит все же иметь какой-то запасной план, потому что и хорошему профессионалу, если он знает только Delphi при малом количестве вакансий на рынке, выбора остается не так много и в итоге можно остаться у разбитого корыта, если перегибать палку.
Но абстрагируясь от этого хочется сказать, человечество почти утратило умение быстро и просто создавать целый пласт ПО используя визуальные IDE. Раздувается сложность, производительность разработчиков падает.
Уже и бесплатный 'форк' (FPC/Лазарус) стал хорош для реального продакшна, мы на нем пишем и продаем в том числе (под Линукс).
2. Как я уже писал. Благодаря простоте и надежности синтаксиса (ну не плюсы же :) ) и достаточно удобной для кода и отличной для визуальной части среде, люди уже работавшие, переучиваются в течение месяца-полтора. С тех же шарпов, очень близких, переучить запросто можно людей если нужно. По собственному опыту.
Но сравнивать его с дельфи некорректно поскольку кобол достаточно специализированный язык, заточенный на выполнение финансовых рассчетов. И тут он имеет свои преимущества, про что уже писалось
https://habr.com/ru/company/ruvds/blog/467251/
https://habr.com/ru/company/ruvds/blog/467253/
В дельфе этого нет. Как нет и такого количества кода, который было бы так дорого заменить на что-то еще.
В этом и разница.
Использовать язык и вообще инфраструктуру удобно, в отличие от Кобола (сам, правда, не юзал, но хороших отзывов не видел).
Смотрю как раз вебинар по новому фреймворку (пока — только Андроид, в будущем — все мобильные) FGX:
www.youtube.com/watch?v=AzmYLjYvLgU
Своих плюшек у Делфи хватает. Начиная от молниеносной компиляции, нативности кода, работоспособности на всех основных платформах + уже и веб, единый код под все платформы.
Оплата "коболов" это оплата за боль. Я предпочту получать чуть меньше, но писать на языке от которого не хочется вырывать волосы. Уверен, многие думают так же.
Тем более, что инвестировать свое время в изучение делфи — это закапывание своего потенциала ради сиюмитуной выгоды, а также потенциальное выгорание.
Тем более, что инвестировать свое время в изучение делфи
Для опытного программиста — чего там учить-то?
Сложно учатся парадигмы, принципы, алгоритмы.
А язык — день-два. Если вы уже опытный разработчик, конечно.
Библиотеки, подходы, очевидно.
Библиотеки, подходы, очевидно.
В пределах одного 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 лет как. И не на макос, а вообще почти везде:
Ок, наконец :) То, что в том же Лазарусе было фактически с рождения. Насчет Распбери спрашивать не буду, ладно :) Лазарус умеет, прямо там работать ну и собирать, само собой.
Спервадобейся
И с чем сравнить тоже было: аналогичные программы на Visual FoxPro и других средах распространения особого не получили
Безотносительно полезности для пользователя конечного продукта, видимо еще и потому что установка готового прикладного ПО, построенного на базе FoxPro, не столь удобна?
Ладно внешний вид и память, но ведь ещё есть скорость… Через web некоторые вещи очень сложно обработать и нужно очень сильно задумываться с фильтрами когда в delphi эти десятки тысяч строк можно было просто крутить на клиенте и отображать хоть на одной форме с живой фильтрацией и поиском)…
А ещё в вэб версиях по хорошему нужно постоянно думать о том что клиентский код (в браузере) может отработать не так как вы думаете и результат нельзя считать достоверным...
Мне часто кажется что в некоторых областях разработка реально деградирует и бессмысленно усложняется.
А мне кажется, что просто некоторые люди не видят ценности для других людей в технологиях которые им лично не нравятся. Например
А в чем плюс таких приложений по сравнению с древним приложением на Delphi? Часто лишь в модном красивом дизайне, как говориться «свистелки-#ерделки», плюс работа через браузер без установки софта.
Пользователи хотят свистелки и перделки и им пофигу что приложение будет сжирать еще 100-200 мегабайт памяти для этого. Это очень показательно, что хардкорные приложения от программистов для программистов имеют вырвиглазный интерфейс и ими невозможно пользоваться (зато летает!). И с другой стороны поделие от дизайнеров, которые требуют анимаций, красивого цсс и прочего. Не так шустро, зато почему-то блин глупые пользователи голосуют рублем за такое.
Пользователи хотят свистелки и перделки и им пофигу что приложение будет сжирать еще 100-200 мегабайт памяти для этого. Это очень показательно, что хардкорные приложения от программистов для программистов имеют вырвиглазный интерфейс и ими невозможно пользоваться (зато летает!). И с другой стороны поделие от дизайнеров, которые требуют анимаций, красивого цсс и прочего. Не так шустро, зато почему-то блин глупые пользователи голосуют рублем за такое.
Пользователи (точнее, заказчики) бывают очень разные. В ширпотребе требования одни, в бизнесе — другие. Там, где мегабайты есть живые деньги, скорость и стабильность работы не пустой звук, на рюшечки смотреть будут тогда, когда это не мешает собственно работе приложения (а также другого ПО, чтобы не было конфликтов) на имеющемся оборудовании. И разработчиков, готовых делать рюшечки вместо разработки-сопровождения решений на «вырвиглазных» языках, они у себя не приветствуют.
В ширпотребе требования одни, в бизнесе — другие.
Да и в бизнесе те же самые. 100% компаний, например, пользуются джирой или схожим трекером. Тормозит, подтупливает, но с рюшечками.
И никто не сидит на самописном вики-движке, который шустрый, но у которого нет интеграций со слаками/гитлабами/...
Да и сам слак — почти во всех компаниях используются, несмотря на то что это электроно поделие. Потому что удобно.
Это был один из первых языков программирования который я начал учить, но даже спустя 15 лет иногда пишу на нем некоторые программы «для себя».
Но кода на дельфях написано много. И пока это код жив, дельфа будет жить. Как все еще жив COBOL (развивается слабо, но как-то еще дышит), RPG (этот вполне еще живет на айбиэмовских майнфреймах и потихоньку развивается в рамках концепции ILE — Integrated Language Environment где одна программа может быть собрана из модулей, написанных на разных языках — RPG, COBOL, CL, C/C++).
какое нах dying
Сейчас конкретно я говорю о Delphi в RAD Studio и не говорю о C++. Говорить о непопулярности судя по статистике из hh.ru сейчас не разумно, т.к. тот факт, что Delphi переживал не легкие дни ни кто не оспаривает. И весь этот застой само-собой повлиял на количество вакансий и запросов касательно Delphi. Он долгое время был на паузе и это не могло привлечь ни к чему хорошему.
Но сейчас мы говорим о прогрессе в этом языке и в основной среде RAD Studio. Те, кто остался, так скажем, верен этому языку знают и понимают, на что он способен. А те, кто когда-то на нём писал помнят, насколько он был удобен и быстр. И я должен сказать, что он остался настолько же быстрым, стал более удобным, удовлетворяющим требованиям современных технологий, но остался простым.
Говорить о неоспоримых преимуществах бессмысленно, о них уже сказано выше. А о «минусе» в операторных скобках вообще смешно. Delphi позволяет создавать не менее сложные конструкции чем C++ (напугали выше массивами с указателями на функции и т.д.). А редактор кода в RAD Studio, если говорить о среде, не хуже, если наоборот не мощнее чем, например в VS (я работал в обоих).
Ждите скачка на Git'e. Delphi поднимется с 12 места в Top 10 языков (TIOBE). Как минимум с прошлого года поднялись с 17 места.
А почему нет? Это не костыль для языка, а именно эффективный способ решения существующей задачи.
В этом и вопрос. Какой задачи? Пример накиньте.
Например, отсутствие полноценных темплейтов (дженерики их заменой, увы, не являются, это совершенно разные вещи)
И чем же конструкция
template< typename T >
T min( T a, T b )
{
return a < b ? a : b;
}
лучше обычной перегрузки методов?
Не нужно писать писать ещё один метод? Он всё равно будет написан, только за вас.
Мне очень интересны реальные примеры применения таких «преимуществ». И про constexpr не забудьте.
Не нужно писать писать ещё один метод? Он всё равно будет написан, только за вас.
Именно за вас. что означает меньше писать меньше править меньше шанса на ошибку.
Мне очень интересны реальные примеры применения таких «преимуществ»
Да очень просто. Например биндинги к скриптовым языкам, посмотрите boost python, DI, да и куча других.
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. Мелочь, а приятно.
std::vector<int> a;
std::vector<float> b;
Иногда удобно.
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, а для действительных чисел и строк — через "+". Не знаю, можно ли в шаблонах С++ сделать так, чтобы часть кода метода шаблона исполнялась только для шаблона с параметрами определённого типа?
И чем же конструкция лучше обычной перегрузки методов?Тем, что внешний пользователь библиотеки может использовать этот метод для всех объектов, которые поддерживают сравнение. Дописать в библиотеку «ещё один метод» он не может.
Не нужно писать писать ещё один метод? Он всё равно будет написан, только за вас.
Запись будет по типу:
...<.integer>(A, B, function(Left, Right: integer): integer;
--------------------begin
----------------------любое сравнение на усмотрение
--------------------end);
А можно поподробнее что имеется в виду?
Мне кажется дженерики там работают так же как и везде — компилятор мономорфизирует под конкретные вызовы во время компиляции.
В делфи ведь нет никакого рантайма который бы позволил это делать во время выполнения.
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?
Рефакторинг позволяет переименовывать не только переменные, классы или методы, но и визуальные/невизуальные компоненты из редактора кода, меняя так же название на форме и в биндингах.
Я могу заменить один компонент другим, переняв у старого компонента все подходящие свойства (например, edit на combobox).
Я могу описать класс и использовать автозавершение (Ctrl+Shift+C), которое создаст все методы и методы свойств автоматически. Создав приватные переменные свойств и определив их получение через методы этих свойств (set/get).
Я могу начать писать в самом коде новый метод класса и использовать автозавершение, которое автоматически опишет этот метод в описательной части класса.
Параллельное редактирование — есть. Т.е. я могу выделить кусок кода и изменять все одинаковые слова одновременно.
И ещё десятки сочетаний клавиш, которые позволяют вставлять шаблоны или оборачивать код в шаблоны (например, try except). Ну и по классике, гибкая настройка автозавершения, шаблонная работа со стандартными конструкциями, например циклами, которая позволяет перемещаться табом по элементам описания цикла. Обрамление в скобки выделенной части и т.д. и т.п. Я устану описывать всё. И многое ещё наверное не знаю.
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
Но если мало, можно и свой эксперт запилить :)
Turkish Ministry of National Education (MEB) will give Embarcadero #Delphi free of charge to 1 million students in more than 1600 vocational & technical schools. Teachers will get an education about Delphi too!
Embarcadero Launches LearnDelphi.org, a Delphi-Centric Learning Ecosystem, to Promote Delphi Education
1. Зарплаты в Delphi снизились, и являются наименьшими среди других языков в изученном списке
2. Переход с Delphi на 1С даст в 18 раз (из hh.ru) больше вакансий на выбор и +75% медианного дохода. Язык 1С — это Паскаль почти.
Т.ч. в РФ «Delphi is dying».
Если уж переходить, то на Java, C# или пусть даже на PHP.
Язык 1С — это Паскаль почти.
Строгой типизации нет, ООП нет, даже банального оператора case
и того нет. Ну да, «почти».
www.businessinsider.com/the-top-coding-languages-with-the-highest-salary-2020-4#pascal-is-associated-with-an-average-global-salary-of-6277390-9
Is Delphi Dying — False