Недостатки и недоработки Lazarus

Вопросы программирования и использования среды Lazarus.

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

Сообщение debi12345 » 24.04.2007 18:34:22

haword писал(а):приемлимый вид интерфейса а от MSEIDE нативные виджеты под платформы.

Так виджеты низшего уровня и определяют внешний вид.
Кстати, до сих пор не пойму - чем Вам вид MSEgui не угодил. На мой ИМХО - все строго, аскетично и функционально. Но с возможностью ТАКОЙ раскраски, что и графические редакторы позавидуют.

haword писал(а):Сначало людям надо чтобы просто работало, потом чтобы хорошо работало, а затем уже чтобы и прилично выглядело, а вот с этим то и проблемы у MSEIDE!

Это уж становится интересно. Опишите ваших уникумов-заказчиков :
- страна, город
- пол
- возраст
- национальность
- род занятий
- круг интересов
- социальное положение

В Узбекистане все наоборот происходит. Заказчик привыкает к программе до автоматизма - а затем в штыки встречает любое изменение внешнего вида, положения кнопок и поведения - всего того, что этому автоматизму мешает.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Павел Ишенин » 25.04.2007 06:58:30

а от MSEIDE нативные виджеты под платформы


Объясните что вы имеете в виду? Lazarus не использует само-рисованные контролы, там где есть возможность использовать родные для платформы (ну может за исключением ToolBar). Или что-то другое имеется в виду?
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Сообщение haword » 25.04.2007 09:04:17

Павел Ишенин писал(а):
а от MSEIDE нативные виджеты под платформы


Объясните что вы имеете в виду? Lazarus не использует само-рисованные контролы, там где есть возможность использовать родные для платформы (ну может за исключением ToolBar). Или что-то другое имеется в виду?

Вот об этом то и идет речь! Под Вынь все хорошо, используются родные контролы, и это замечательно! Думаю под MacOS Carbon тоже таким же является, но под Linux имееются несколько контролов и НЕ ОДИН НЕ ЯВЛЯЕТСЯ РОДНЫМ так как под линуксом НЕТУ РАДНОГО ГУИ, и поэтому используются стороние библиотеки, из за которых могут быть трудности в последствии! Нарпимер, собрал программу с поддержкой виджетов от GTK1 а его не будет в системе и программа не запуститься, будет требовать эти либы, а если бы были НАТИВНЫЕ виджеты, тоесть программа напрямую обращалась бы к XWindow и создавала бы формы и контролы, то такой бы проблемы не было, вот о чем я! Так делает MSEGUI и fpGUI, второй автор начал пытаться встроить в Lazarus, надеюсь у него хватит терпения и он закончит это дело!

debi12345 писал(а): Так виджеты низшего уровня и определяют внешний вид.
Кстати, до сих пор не пойму - чем Вам вид MSEgui не угодил. На мой ИМХО - все строго, аскетично и функционально. Но с возможностью ТАКОЙ раскраски, что и графические редакторы позавидуют.

Извини конечно, НО расскраска это не ГЛАВНОЕ! Практически любой контрол в Delphi имеет Canvas и разукрашивай как хошь что хошь, не в этом дело, дело в том КАК ВЫГЛЯДЯТ контролы, СТИЛЬ! Это все равно что поездил на мерседесе а потом пересел в запорожец и возмущаешся, а тот человек кто всегда ездил на запорожце сидит и не понимает что не нравиться ему в запорожце :)

Это уж становится интересно. Опишите ваших уникумов-заказчиков :
- страна, город
- пол
- возраст
- национальность
- род занятий
- круг интересов
- социальное положение

Конечно, не в обиду будет сказанно, но прожив Чимкенте больше 20 лет :) я знаю немного минталитет местного населения, обычно - "Да нам казахам (узбекам) пойдет" когда все упирается в деньги, то все сойдет лижбы было бы подешевле, любой вид. И девушки операторши не сильно привыкли из за минталитета и воспитания возмущаться :) Что сказали то и делают. Но в других странах немного по другому. Конечно, если сказать делай так и не вы...ся то будет работать но при каждом удобном моменте говорить что где то было по другому и там было красивее и удобнее. И не знаю, меня по крайней мере прям таки передергивает от вида виджетов под виндой, под линуксом бы может еще и привык, там неразбириха с этим, но под виндой вид контролов должен соответсвовать системным! О если бы один чел послушал мое высказывание на его новостном сервере :) насчет метода OnPaint а не предлагал бы создавать свои компоненты на основе его компонентов :) то проблемы бы небыло так как в большинстве случаев с помощью этого метода можно было бы исправить вид не опасаясь что автор внесет какие ни будь изменения в свои компоненты и в последствии все у тебя перестанет работать!
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Сообщение Сергей Смирнов » 25.04.2007 10:19:36

haword писал(а):..."Да нам казахам (узбекам) пойдет" когда все упирается в деньги, то все сойдет лижбы было бы подешевле...
Дык нам, программистам, не надо подешевле :)

Вообще, тему Lazarus vs MSE можно обсуждать долго, но есть один нюанс: если нужно делать что-то вот прямо сейчас, а не ждать до морковкиного заговения, то выбора, в общем-то, и нету.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение debi12345 » 25.04.2007 10:22:05

программа напрямую обращалась бы к XWindow и создавала бы формы и контролы,

Это называется "статическая линковка". Как правило, приводит к раздуванию экзэшек. Поэтому средняя MSEgui-программа ( без БД, после смартлинковки ) имеет размер порядка 500К.

Кстати, чем лично меня удивляет Лазарус - так это тем, что он линкуется с GUI-библиотеками ДИНАМИЧЕСКИ, но все равно создает громадные экзэшки. То есть код адаптации этих библиотек занимает больше, чем самостоятельная отрисовка виджетов ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение haword » 25.04.2007 11:17:22

debi12345 писал(а):
программа напрямую обращалась бы к XWindow и создавала бы формы и контролы,

Это называется "статическая линковка". Как правило, приводит к раздуванию экзэшек. Поэтому средняя MSEgui-программа ( без БД, после смартлинковки ) имеет размер порядка 500К.

Кстати, чем лично меня удивляет Лазарус - так это тем, что он линкуется с GUI-библиотеками ДИНАМИЧЕСКИ, но все равно создает громадные экзэшки. То есть код адаптации этих библиотек занимает больше, чем самостоятельная отрисовка виджетов ?

Нет, это не называется статическая линковка, это называется использование напрямую API XWindow для прорисовки виджетов :) ну я бы не сказал что громадные, если отключить дебагинг то примерно одинаково с делфей ну на 100-200 кб может больше если программа около 2 мбайт
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Сообщение debi12345 » 25.04.2007 12:33:50

Нет, это не называется статическая линковка,
===========
Она самая - статическая. Просто автор, пока в FPC не реализован механизм нативных GUI-библиотек ( аналог BPL от Delphi) - не стал выносить GUI-код в динамические библиотеки, которые сейчас пришлось бы адаптировать, тем самым раздувая и резко замедляя код.


если отключить дебагинг то примерно одинаково с делфей ну на 100-200 кб может больше если программа около 2 мбайт
===========
После включения в экзешку самого GUI-кода размер файла растет очень медленно - за счет полезного кода. А вот почему сам GUI-код Лазаруса так велик - это вопрос, ведь отрисовкой виджетов занимаются внешние библиотеки.


ПС:

Часто вызываемый код типа OnPaint нежелательно выносить во внешние обработчики - ведь тогда придется постоянно ( на каждой перерисовке) проверять (в основном - вхолостую ) наличие юзерского кода, что повлияет на производительность.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение haword » 25.04.2007 13:51:36

debi12345 писал(а):Нет, это не называется статическая линковка,
===========
Она самая - статическая. Просто автор, пока в FPC не реализован механизм нативных GUI-библиотек ( аналог BPL от Delphi) - не стал выносить GUI-код в динамические библиотеки, которые сейчас пришлось бы адаптировать, тем самым раздувая и резко замедляя код.

Или я не понял или ты не то говоришь! Зачем использовать СТАТИЧЕСКУЮ линковку дополнительных библиотек когда этиже функции прорисовки елементов может выполнять сама программа? Чтобы если случайно не оказалось этих библиотек на компьютере то программа не запустилась? И насчет быстродействия, вызов процедуры из библиотеки я думаю поболее времени займет чем из основной программы.

debi12345 писал(а):если отключить дебагинг то примерно одинаково с делфей ну на 100-200 кб может больше если программа около 2 мбайт
===========
После включения в экзешку самого GUI-кода размер файла растет очень медленно - за счет полезного кода. А вот почему сам GUI-код Лазаруса так велик - это вопрос, ведь отрисовкой виджетов занимаются внешние библиотеки.

Вот одалел уже :) Код скомпиляной программы на Лазаре с отключенной информацией об отладке около 2 мегабайт, и превышает откомпилированный тот же проект в 7 делфи на 100-200 кбайт, это все под Windows :)

debi12345 писал(а):ПС:
Часто вызываемый код типа OnPaint нежелательно выносить во внешние обработчики - ведь тогда придется постоянно ( на каждой перерисовке) проверять (в основном - вхолостую ) наличие юзерского кода, что повлияет на производительность.

Потерю пару тройку микросекунд ИМЕННО во время прорисовки основной формы на которой лежит этот компонент? Это так кретично? Прорисовка не всегда же идет!
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Сообщение Павел Ишенин » 25.04.2007 17:10:18

Кстати, чем лично меня удивляет Лазарус - так это тем, что он линкуется с GUI-библиотеками ДИНАМИЧЕСКИ...


В каком месте вы это видели? с gtk free pascal и lazarus (в его дополнениях) линкуется статически.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Сообщение debi12345 » 25.04.2007 17:51:31

В каком месте вы это видели? с gtk free pascal и lazarus (в его дополнениях) линкуется статически.

Может я не так понял - но у него целые модули посвящены импорту из этих SO, и на базе него - созданию аналогов вызовов Win32-API. То есть налицо приведение базы к единому знаменателю - Вынь32, а по нему - рисование виджетов.
Что меня и удивило - нет, чтобы как основную GUI-библиотеку выбрать WINE ( не сам "эмулятор", а DLL, переписанные в SO ).

Зачем использовать СТАТИЧЕСКУЮ линковку дополнительных библиотек когда эти же функции прорисовки елементов может выполнять сама программа?

Программа состоит из линкованных модулей. Если модуль реализует некий код, а не просто описывает импорт из DLL - это есть статическая линковка.

Потерю пару тройку микросекунд ИМЕННО во время прорисовки основной формы на которой лежит этот компонент? Это так кретично? Прорисовка не всегда же идет!

Так Вы же для "twidget" ( предка всех GUI-компонентов ) просили :) Сколько на каждой форме этих виджетов, и для каждого проверять ? Накладно выходит, причем без смысла. Именно это "без смысла" Мартин и отверг.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Sergei I. Gorelkin » 25.04.2007 20:11:20

debi12345 писал(а):Может я не так понял - но у него целые модули посвящены импорту из этих SO, и на базе него - созданию аналогов вызовов Win32-API. То есть налицо приведение базы к единому знаменателю - Вынь32, а по нему - рисование виджетов.
Что меня и удивило - нет, чтобы как основную GUI-библиотеку выбрать WINE ( не сам "эмулятор", а DLL, переписанные в SO ).


Разработка LCL начиналась давно, в те времена Wine был слишком сырым для серьезного использования. Сейчас - надо отдать должное его разработчикам - это очень достойный продукт. Но уже поздно...

Архитектура LCL - это, конечно, нечто. Когда поверх GTK эмулируется часть WinAPI, потом поверх - механизм раскладки контролов, похожий на GTK (это я про всякие TControl.ChildSpacing), остается удивляться, как там вообще хоть что-то работает.

debi12345 писал(а):Так Вы же для "twidget" ( предка всех GUI-компонентов ) просили Сколько на каждой форме этих виджетов, и для каждого проверять ? Накладно выходит, причем без смысла. Именно это "без смысла" Мартин и отверг.


Проверить наличие обработчиков даже для сотни виджетов будет все равно на пару порядков быстрее, чем нарисовать единственную точку. Тем не менее, Мартин прав. Контрол должен рисоваться целиком либо системой, либо пользователем. Попытка найти компромисс приведет к бесконечным воплям на тему "а вот тут мне лениво было часть рисовать, почему он сам не дорисовывает", "а здесь он мое рисование затер", "а там вышло за границы" и т.д. и т.п., причем все это для каждого типа виджетов в отдельности. В качестве примера можно привести Custom Draw у виндовых Common Controls - совсем не тривиальная штука, можно сказать, двенадцать различных обработчиков.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1397
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение debi12345 » 25.04.2007 21:56:44

Архитектура LCL - это, конечно, нечто. Когда поверх GTK эмулируется часть WinAPI, потом поверх - механизм раскладки контролов, похожий на GTK (это я про всякие TControl.ChildSpacing),

Ну, логика здесь есть (чтобы можно было в коде Дельфей подсмотреть, если что - ведь нужна VCL-совместимость), но механизм подмены адресов для переключения тулкитов практически выключает смарт-линковку. Вот и одна из причин размера.

Разработка LCL начиналась давно, в те времена Wine был слишком сырым для серьезного использования. Сейчас - надо отдать должное его разработчикам - это очень достойный продукт. Но уже поздно...

Поздно для какой из сторон ? Которая уже "достойный продукт", или которая "хоть что-то работает" ?

ПС:
Кстати, размер файлов становится очень важным фактором из-за мобильного бума ( смартфоны ), куда активно внедряется Линукс. Мартин (автор MSE*) под это дело планирует нечто типа виртуальной машины - загружающей и выполняющей описания форм (очень компактные по сравнению с бинарниками ).
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Alexander » 25.04.2007 23:02:07

Павел Ишенин писал(а):Lazarus не использует само-рисованные контролы, там где есть возможность использовать родные для платформы


Хреновая возможность ! Ещё раз повторюсь. Виджет сегодня это не
только некий абстрактный вид кнопки, флажка итд. Это ещё и то как он
работает - функциональность. Завязавшись на таком виджете мы
потеряем свободу действий (изготовления полностью произвольных
компонентов). А при многоплатформенности ещё и придётся пользоваться
пересечением этих возможностей. К тому же настройки пользователя
могут исказить дизайн и функционирование программы. Ужас. Позор.

ev писал(а):команда лучше, чем одиночка


Практика показывает обратное. Но никто не мешает нам стать этой
командой.

Сергей Смирнов писал(а):Огромные ресурсы были израсходованы на дизайн и юзабилити оконных менеджеров, причём не только в винде, но и в линуксе. И, честно говоря, мне нравится результат. А вот то, что нарисовал Мартин - нет. И среднестатистический заказчик увидев интерфейс из-под MSE тоже покривится скорей всего. Встречают-то по одёжке, как известно.


haword писал(а):Конечно, пока народ не знает что бывает красивее и приятнее на вид при таком же удобстве работы, они работают, но когда настанет момент, и они увидят что где то есть красивее да еще и удобства на том же уровне то начнут тебе парить мозги по полной! Особенно если тебе за эту работу платят СВОИ ДЕНЬГИ а не зарплату и хотят видеть соответствующий по качеству продукт! Это всегда так Сначало людям надо чтобы просто работало, потом чтобы хорошо работало, а затем уже чтобы и прилично выглядело, а вот с этим то и проблемы у MSEIDE!


Дак ты сам рисуй, дизайнер форм в руки ! МСЕ это СВОБОДНЫЙ проект,
он не обязан дышать в попу M$ и принимать каждое вышедшее оттуда
дуновение как вершину дизайна и "юзабилити". То что некоторый
заказчик, увидив непохожий на Вин компонент фыркнет или скажет "надо
как у всех" проблема заказчика, его умственных и социальных
способностей. Такой заказчик может потребовать и чтобы ты писал
не на Паскале, а на Си (а то и Бейсике), может потребовать чтобы и ты
сам был свеловолосый, голубоглазый, рост, вес, возраст итд.
"Быть и соответствовать" Но такой пусть от сосёт. Не только заказчики
вибирают нас, но и мы их. Или 300 лет крепостного права и Гитлер ничему
не научили ?

Дизайн МСЕ самодостаточен. Достаточно гибок и красив, чтобы не
испытывать в этом недостатка. То что не реализовано можно
реализовать самим - проект открытый. А вот похожим на чьи то
тваренья он не обязан быть.

haword писал(а):Сначало людям надо чтобы просто работало, потом чтобы хорошо работало, а затем уже чтобы и прилично выглядело


А опосля он может от сосать. Помнишь сказку про Золотую Рыбку ?
Не суетись под клиентом. Сделай удобный для СЕБЯ инструмент.

haword писал(а):ну до кучи выскажу и мое ИМХО! Будет всем хорошо когда объеденятся Lazarus и MSEGUI в один проект, куда от лазаря достанется совместимость с делфями и приемлимый вид интерфейса а от MSEIDE нативные виджеты под платформы.


Ничего не выйдет. Это разные направления. Лазарус заточен под Делфи,
а MSE самодостаточен. И многими местами по этому сильно удобнее.

haword писал(а): Это все равно что поездил на мерседесе а потом пересел в запорожец и возмущаешся, а тот человек кто всегда ездил на запорожце сидит и не понимает что не нравиться ему в запорожце


Смотря что считать Запорожцем. Лазарус сейчас и на Запорожца не
тянет. На Запорожце вообще то ездить можно.

Путь Лазаруса тупиковый и чем быстрее мы это поймём тем лучше
для нас же. Он будет увеличиваться, тормозить и глючить всё сильнее.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 703
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение debi12345 » 26.04.2007 00:53:16

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

Ну почему же тупиковый ? Народ вон DoubleCommander делает - давно ждем нечто подобное под Линукс. Попробуй-ка строить деревья иерархии файловой системы на MSEgui - компонентов в избытке, а разобраться в них без доки - не у каждого хватка есть.

Вот мэйнстрим Лазарус вряд ли уже догонит. Смартфоны эти... Поддержка WinCE при размере файлов в мегабайты - несерьезно. И WINE - под которым основной выневый софт УЖЕ работает. Стоит сделать Windows (какую-то особую версию, в пику Линуксу ) бесплатными - и WINE сразу свою нишу оттяпает. И какую ! Только если к этому моменту не появится качественный линуксовый софт и конкуренто-способные RAD под него.

В Лазарусе бы выделить группу народа, отвечающую строго за функционал. И вылизывать этот функционал на серьезных проектах, на одной выбраной платформе - в идеале на Gnome.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение ev » 26.04.2007 01:02:42

Практика показывает обратное. Но никто не мешает нам стать этой командой.

практика показывает, что кроме кодинга необходим менеджмент
и кто этого не понимает - обречен
а когда вместо команды один человек, то менеджмент гораздо проще

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

ага, давайте еще заказчику скажем что он умолишенный и надо работать только в досе и с командной строкой ;)

Такой заказчик может потребовать и чтобы ты писал
не на Паскале, а на Си (а то и Бейсике), может потребовать чтобы и ты
сам был свеловолосый, голубоглазый, рост, вес, возраст итд.

да может - клиент всегда прав :wink:

Не суетись под клиентом. Сделай удобный для СЕБЯ инструмент.

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

предлагаю не утрировать, а смотреть реально на вещи :roll:


я не против мсе и не против лазаря - у каждого есть свои плюсы и минусы
но в текущий момент лидера нет :(
ev
долгожитель
 
Сообщения: 1764
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Пред.След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru