The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск Lazarus 3.0, среды разработки для FreePascal "
Отправлено Lenny, 06-Мрт-24 14:42 
Вы как раз и говорите как нахватавшийся якобы "крутизны" по верхам в универе студент и теперь пускающий "пустые пузыри" и растопыривающий пальцы перед толпой.

Зачем "move semantics" таким языкам как ObjectPascal?!
В С++11 этот семантический Ад был введён лишь потому, что ранее традиционно любое присвоение объекта (кроме ссылки на него) влекло за собой копирование содержания. Например, очень сильно от этого страдала обработка строк и возврат значений из функций.
В ObjectPascal обработка строк и интерфейсов изначально построена на подсчёте ссылок. А все классы (кроме сохранившихся в Лазарусе TObject) лежат в куче и все переменные на них ссылочного типа.
Так на кой хрен в ObjectPascal вообще эта ж. с "move semantics"?

Интерфейсы в Лазарусе в отличии от Delphi как раз и могут быть абстрактными "CORBA-like" без счетчика ссылок, что делает их похожими на интерфейсы C#.

Множественное наследие в C++ - это скорее беда с кучей выкрутасов, а вовсе не благо. Появляются такие ошибки на пустом месте как "срезка" или частая необходимость в виртуальных базовых классах и т.п.
Недаром во всех современных ООП языках стараются обойти множественное наследование через наследование интерфейсов.

По качеству генерируемого кода Лазарус и Дельфи действительно отстают от современных Си/С++ компиляторов.
Но точно не отстают от всяких там C#. Например, код skimark2 на FPC 3.2.2 работает быстрее чем на .NET Core.
И уж точно эти решения работают в десятки сотни раз быстрее, чем новомодные убожества на скриптовых языках для домохозяек типа Питона.
Зато по скорости компиляции это изначально в разы быстрее чем C++ из-за модульности, что для работы над прикладным (а не академическим или чисто вычислительным) решением порой гораздо важнее.
И не нужно трахаться с предкомпилированными хеадерами или ждать пока полноценную модульность добавят в следующей редакции С++.

НО теперь переходим к главному. ГДЕ нужен Си/C++, и где Лазарус?

Писать на чистом C++ кроссплатформенный GUI, микросервисы, или даже хотя бы "back end" - это надо быть скорее на голову отмороженным Си-шником.
А использовать ту же библиотеку Qt не всегда получится по многим соображениям:
- прежде всего серьезные проблемы с лицензией (особенно сейчас);
- есть проблемы с обратной совместимостью с Win 7 (как минимум придется лет ~10 еще держать версию для Qt5)
- есть проблемы с многими серверными частями (например, родной Qt HTTP сервер только для интеравеба - они сами об этом говорят и пишут), а сторонние решения часто либо не лучше чем на Лазаре, либо дорогие.
- как ни странно гораздо меньшее количество сторонних БЕСПЛАТНЫХ компонент. Есть хорошие платные, НО ДОРОГО и теперь не купишь.
- хороших спецов меньше даже чем на Паскали, при том что возможность "выстрелить себе в ногу" на пустом месте даже у опытных программистов существенно больше, чем на Паскалях (проверено годами)
- при статической линковке встречали проблемки в работе некоторых Qt библиотек.
и множество других вопросиков...

В то же время Лазарус уже "из коробки" имеет кросcплатформенный GUI и сотни бесплатных компонентов и библиотек, некоторые из которых вполне сравнимы по качеству с коммерческими решениями.
Есть там  например, и многим известная библиотека mORMot (ORM, REST, SOA, MVC и еще куча всего в одном флаконе), которая по скорости уделывает ASP.NET Core, при том, что выполняемые и полностью самодостаточные файлы могут весить всего пару-тройку мегабайт и жрать куда меньше памяти, чем решения на том же .NET
и БОЛЕЕ ТОГО этот функционал можно как бы сбоку прикрутить к любому приложению, а не создавать для этого отдельный вид ASP.NET приложения.
Лазарус можно использовать и для встроенных решений, где .NET Core уже и не пашет, а писать на чистом Си там застрелишься.
Ещё для Лазарус есть серьезная бесплатная библиотека для создания SCADA систем. И я знаю, что на ней сейчас как раз пишут решения для нашей промышленности.

Так что у FPC и Лазаря всё далеко не плохо.
Да язык и среда уступает в разнообразном сахаре тому же C#.NET.
Но если объективно сравнивать со всякими именно НАЙТИВНЫМИ С++, Go, Rust и тем более Си, то выходит, что для своих прикладных целей, и учитывая имеющуюся из коробки не хилую библиотеку (включая кроссплатформенный GUI), то и вообще всё очень даже хорошо.
Лично мне в FPC по большому счёту не хватает т.н. инлаин переменных с автовыводом типа (аналог auto в C++) (в Дельфи уже давно завезли), и анонимных методов (лямбда функций) - эти уже частично есть в FPC 3.3.1, но Лазарь и многие библиотеки с FPC 3.3.1 пока не дружат.

НУ а надо вам какой-то именно вычислительный кусок сделать очень производительным - вот тут как раз Си/С++ компиляторы и в помощь. По опыту разработки систем промышленной автоматизации таких мест бывает не более 5% от общего объёма кода. Но именно здесь-то Cи/С++ (либо сам пишешь, либо готовые библиотеки есть) прекрасно справляется со своим основным назначением.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру