Lazarus и CRUD - приложения

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Lazarus и CRUD - приложения

Сообщение Sergej_S » 16.10.2019 22:45:27

Сорян за философский и холиварный вопрос. Стоит ли в 2019 рассматривать Lazarus как приемлимый инструмент для написания всякого учетного софта (склад, биллинг и т.п.) для психа-одиночки с мотором? Или не мучиться и сразу засесть за новый MS Net Core 3.0 с его WPF?


Вводные такие:
- я из программирования ушел 10 лет назад, но поддерживаю старый проект (склад, MSSQL, интерфейс на Visual Foxpro). Вроде пора на что-то переползать, но все не соберусь.

- FPC не знаю, просто почитываю ваш сайт.

- мне актуальна только OS Windows.

- Firebird уважаю, особенно за наличие Embedded версии, в MSSQL мне ее не хватает, даже решился попробовать перейти на него, т.к. MSSQL Express ставится по полчаса, а мне обычно работа в сети не нужна, только 1 юзер. Но бывает и 2-3.

- пугает в Лазарусе и FPC отсутствие сборщика мусора. Это сильный гемор для CRUD приложения ?

- в Net (я его тоже суко не знаю, но слышал:) есть LINQ - аналог фоксовского способа херачить SQL- обработку таблиц прямо в коде. С датасетами поработал в VBA (из Access)- бледное подобие правой руки (Фокса). Боюсь, в FPC тоже самое.

- Приложения WPF не зависят от разрешения экрана, это очень круто. Я так прнимаю, ответа на этот вопрос у сообщества FPC пока нет? Есть у меня пару проектов 20-летней давности под разрешение 800х600, а у юзеров уже мониторы Full HD. Жуткое зрелище.

- Безусловный бонус FPC+Lazarus - реальная и понятная бесплатность. У MS все мутно, но вроде Community edition бесплатна для мелких разрабов.

- Строки вроде в VFP геморойные. Когда считаешь деньги и килограмы, отвлекаться на осталное как бы и не хочется.

В общем, простите за сумбур, прошу высказываться.
Аватара пользователя
Sergej_S
новенький
 
Сообщения: 35
Зарегистрирован: 21.03.2012 15:08:39
Откуда: Latvia

Re: Lazarus и CRUD - приложения

Сообщение alexs » 17.10.2019 09:36:43

Как раз его и стоит использовать для нормальной разработчки систем учёта с применением СУБД. Для рисования всяких морд к СУБД подходит лучше всего.
1. MS SQL поддерживается. Клиентские приложения могут быть как виндовые так и линуховые. Хотя я сам с этой СУБД связываться больше не хочу.
2. Паскаль в FPC хорош. Причём проблем с обратной совместимостью нет. Ну и изучить его не сложно.
3. Клиенты под винду не чем не отличаются от клиентов под другие платформы (ну если только не задаваться целью специально)
4. Для работы с FireBird куча способов (библиотек).
5. А в чём проблема со сборщиком? Для многих случаев в лазаре даже код писать не надо. Главное запросы к СУБД построить верно. Ну и главное правило не стоит забывать - если ты породил объект - то ты его должен и убить:
Код: Выделить всё
aaa:=TAaa.create;
try
твои обработки
finally
  FreeAndNil(aaa);
end

6. Тут вообще идеалогия другая - твои запросы - это компонненты. Не надо их размазывать в код. Сопровождение гораздо легче.
Т.е. на форму/дата модуле лежит запрос - а в коде только
Код: Выделить всё
Query.Execute;

И запросы отделены от визуального представления данных из них.
7. Автомасштабирование интерфейса уже года 2 как есть. Главное - на забудь нарисовать изображения кнопок для масштабов 150% и 200%.
8. А ещё - можешь сам присоединиться к разработке ...
9. Ну в паскале строгая типизиация типов - просто так строку не сложишь с килограммом. Или ты не про это?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3869
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Lazarus и CRUD - приложения

Сообщение Alex2013 » 18.10.2019 22:34:06

alexs писал(а): Ну в паскале строгая типизиация типов - просто так строку не сложишь с килограммом.

Ну это "просто так" не сложишь, а вообще есть всевозможные "варианты", есть переменные без типа, есть приколы вроде Т1(@T2^), которые полностью развязывают руки даже для "глубоко несовместимых" типов, да много чего есть например сравнительно недавно, открыл для себя ключ {$POINTERMATH ON} ( арифметика указателей) и.т.д. Но факт в том, что в отличии от Си++ паскаль подобные фокусы НЕ ПООЩРЯЕТ "по умолчанию" .... а так в FPC есть даже любимые "насильниками" операторы "++" и "--" и еще много чего из "мира Си"...

Но главный ПЛЮС паскаля в почти полной однозначности всех конструкций языка ... а то в том же Си++ символ "*"(звездочка) это и умножить и признак указателя и еще "черт знает что и сбоку бантик" в зависимости от контекста ...
Последний раз редактировалось Alex2013 19.10.2019 17:49:11, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 1560
Зарегистрирован: 03.04.2013 11:59:44

Re: Lazarus и CRUD - приложения

Сообщение Снег Север » 19.10.2019 07:22:36

Alex2013, вообще-то есть куда более удобная вещь - variant переменные. :D И именно они широко используются в недрах всяких датасетов.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2232
Зарегистрирован: 27.11.2007 16:14:47

Re: Lazarus и CRUD - приложения

Сообщение Alex2013 » 19.10.2019 17:42:02

Снег Север писал(а):Alex2013, вообще-то есть куда более удобная вещь - variant переменные. :D И именно они широко используются в недрах всяких датасетов.

Я про variant написал в первую очередь (просто это настолько очевидно, что разжевывать до "состояния манной каши" было бы уже чезчур неуважительно по отношению к ТС ) :idea:
Зы
Извиняюсь за опечатки! Видимо вчера меня уже "два известных японских супергероя по-имени ЗеВота и ДреМота" одолевали... :mrgreen:
Alex2013
долгожитель
 
Сообщения: 1560
Зарегистрирован: 03.04.2013 11:59:44

Re: Lazarus и CRUD - приложения

Сообщение olegy123 » 20.10.2019 05:19:19

Lazarus мне ценен тем что он действительно полостью бесплатный из всех существующих быстрых систем разработок (Delphi/Visual Studio/Qt - все они хотят денег и стоят как авто, разве что Eclipse IDE полностью свободный). С богатыми контролами, особенно в сфере баз данных.
Когда работаешь в одиночку и взрослые дяди требуют выполнения копирайта - это очень важно.

Если нужно делать большое - Big проджект с концами Web - то Lazarus тут очень слабый. C Java/C# легче будет.

Добавлено спустя 11 минут 52 секунды:
Sergej_S писал(а):пугает в Лазарусе и FPC отсутствие сборщика мусора. Это сильный гемор для CRUD приложения ?

"Сборщик мусора" актуальный в виртуальных машинах, где твой код работает не напрямую с операционной системой. Какой-нибудь простое предложение легко может скушать гигабайты памяти. Пример Android Studio (Java) - только при 8гб можно продолжительно работать.

FreePascal работает напрямую с системой.

Добавлено спустя 7 минут 37 секунд:
Sergej_S писал(а): есть LINQ - аналог фоксовского способа херачить SQL- обработку таблиц прямо в коде. С датасетами поработал в VBA (из Access)- бледное подобие правой руки (Фокса). Боюсь, в FPC тоже самое.
LINQ это не с нуля придуманный механизм работы с базой данных. и от DataSet никуда не ушли.
Он базируется на на DataSet, только синтаксис внедрен в компилятор. И компилятор сам расписывает работу с Dataset

Добавлено спустя 10 минут 26 секунд:
Sergej_S писал(а):Безусловный бонус FPC+Lazarus - реальная и понятная бесплатность. У MS все мутно, но вроде Community edition бесплатна для мелких разрабов.

Сейчас политика MS - вскормить толпу программистов на своих продуктов. В свое время они проспали Java, которая плотно засела в корпоративном сегменте, и эру мобилок Google/Apple.
Но сейчас у них есть сильные решения, даже в сфере без операционных систем(Arduino/STM). Идет захват сфер связанных с Linux.
Им не хватает программистов.

Добавлено спустя 7 минут 3 секунды:
Alex2013 писал(а):Но главный ПЛЮС паскаля в почти полной однозначности всех конструкций языка ... а то в том же Си++ символ "*"(звездочка) это и умножить и признак указателя и еще "черт знает что и сбоку бантик" в зависимости от контекста ...
сейчас в gcc компилятор сильно будет возмущается что нет явного приведения типов. метит места как ошибки.
olegy123
энтузиаст
 
Сообщения: 1496
Зарегистрирован: 25.02.2016 12:10:20

Re: Lazarus и CRUD - приложения

Сообщение Снег Север » 20.10.2019 08:07:48

У Delphi сейчас тоже есть Community edition.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2232
Зарегистрирован: 27.11.2007 16:14:47

Re: Lazarus и CRUD - приложения

Сообщение Vadim » 20.10.2019 08:12:18

olegy123 писал(а):сейчас в gcc компилятор сильно будет возмущается что нет явного приведения типов. метит места как ошибки.

Кстати, gcc, в отличие от прошлых времён, сейчас даёт довольно внятное описание ошибки. И поскольку описание сильно совпадает с clang'овским, я думаю, что они его оттуда и позаимствовали... :D
Vadim
долгожитель
 
Сообщения: 3800
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Lazarus и CRUD - приложения

Сообщение Sergej_S » 21.10.2019 15:28:39

olegy123 и всем спасибо за полезные замечания.

Снег Север писал(а):У Delphi сейчас тоже есть Community edition.

5000$ лимит по прибыли. ИМХО, NET Core Community заманчивее для новых разработчиков (тут лимит 5 программеров).

alexs писал(а):9. Ну в паскале строгая типизиация типов - просто так строку не сложишь с килограммом. Или ты не про это?

Строгая типизиация меня не пугает, м.б. это даже лучше. Я про utf-8 с ее полтора байтами на символ, я только с ASCII работал.

alexs писал(а):6. Тут вообще идеология другая - твои запросы - это компонненты. Не надо их размазывать в код. Сопровождение гораздо легче. Т.е. на форму/дата модуле лежит запрос - а в коде только Query.Execute

Для гридов и отчетов - не спорю, это может и удобно. А для больших расчетов? Делал как-то давно начисление жителям по теплосчетчикам - там было тыщи на 2 строк хитровыделанных расчетов. Писать эти начисления TSQL я не отважился по ряду причин, в основном из-за невозможности пошагово дебажить и менее удобной работы с курсорами SQLa по сравнению с их аналогами в фоксе. Знаю, считать на клинте считается некошерно. Что скажите? Или все-таки такие расчеты надо писать на SQLe?


P.S. Я пока планирую базу перевести с MSSQL Express на Firebird, интерфейс временно фоксовский оставлю, т.к. изучение Лазаря в свободное от работы время затянется надолго. Расскажите плиз про ключевые поля. В mssql все они у меня GUID типа, в FB тоже есть его аналог - UUID. Но, насколько я понял, родной механизм FB - автоинкриментные числовые поля. Будут ли у меня проблемы с UUID, когда я клиента перепишу на Лазаре? Например, компоненты RxLib и другие работают с ними? Кто-то из вас использует UUID?
Аватара пользователя
Sergej_S
новенький
 
Сообщения: 35
Зарегистрирован: 21.03.2012 15:08:39
Откуда: Latvia

Re: Lazarus и CRUD - приложения

Сообщение Снег Север » 21.10.2019 15:43:47

Sergej_S, с ключевыми полями работают датасеты, а не средства отображения данных. А датасеты используют драйверы и штатные средства сервера баз данных. Правильно организовали таблицы в базе, правильно составили SQL запросы, вам правильно результат и отобразится.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2232
Зарегистрирован: 27.11.2007 16:14:47

Re: Lazarus и CRUD - приложения

Сообщение zoltanleo » 21.10.2019 20:09:21

Sergej_S писал(а):Расскажите плиз про ключевые поля. В mssql все они у меня GUID типа, в FB тоже есть его аналог - UUID. Но, насколько я понял, родной механизм FB - автоинкриментные числовые поля. Будут ли у меня проблемы с UUID, когда я клиента перепишу на Лазаре? Например, компоненты RxLib и другие работают с ними? Кто-то из вас использует UUID?

Разницы особой нет. UUID также генерируются в триггерах, как и smallint/integer/bigint. Но ... поскольку автоинкрементные поля используются в качестве суррогатных ключей (первичных и вторичных/ссылочных), то они должны быть уникальными. В случае smallint/integer/bigint это гарантируется в пределах диапазона типа, а UUID-тип теоретически имеет возможность повториться, тогда получишь коллизию.

Я UUID использую в качестве доп.поля записи в основном для репликации, когда надо отличить одну запись от другой, у которых значения неск. полей совпадают.
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 332
Зарегистрирован: 17.10.2013 10:55:01

Re: Lazarus и CRUD - приложения

Сообщение alexs » 22.10.2019 09:22:22

Sergej_S писал(а):Я про utf-8 с ее полтора байтами на символ, я только с ASCII работал.

Вообще не проблема. Одычные операции со строками без тизменения. Для посимвольной - UTF8Pos, UTF8Copy, UTF8Delete.
Sergej_S писал(а):Делал как-то давно начисление жителям по теплосчетчикам - там было тыщи на 2 строк хитровыделанных расчетов

Я в таком же проекте эту логику вообще вынес на сервер - делал расчёты по начислению на хранимых процедурах. Наиболее оптимальное быстродействие было.
Но и если на клиента тянуть данные - то тоже проблем нет. Только трафик бешеный получается. Поэтому в итоге я переписал.
Sergej_S писал(а):Будут ли у меня проблемы с UUID, когда я клиента перепишу на Лазаре? Например, компоненты RxLib и другие работают с ними? Кто-то из вас использует UUID?

GUID/UUID не несёт смысловой нагрузки для пользователя - поэтому его не надо отображать. А так - по факту это обычная строка в большинстве наборов данных. Какая может быть проблема с ней?
Но вообще - для PK надо использовать автоинкременты. Они гарантируются сервером уникальными в отличии от GUID.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3869
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru