уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

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

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

Голосование было открыто 15 декабря 2011, и продолжалось 10 месяцев и 4 дня.

Вопрос голосования: Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?

Первоначально ответов было меньше, но по просьбе читателей были добавлены ответы типа «Да, но только в рамках конкурса на DelphiFeeds.ru» и «Да, планирую разрабатывать приложения FMX но только для Win»

Первый итог голосования был подведен 28 января 2012 и результат был следующим (все ответы были собраны в две группы «Да»/»Нет»):

Второй итог был подведен 15.07.2012, когда в голосовании отметилось 365 человек (ну или меньше — кто-то да проголосовал несколько раз, несмотря на то, что стояла фильтрация по IP). Результат был таким:

И сегодня подводим третий — заключительный итог голосования:

Как видите, каких-либо значительных изменений нет — 1% это скорее погрешность, чем закономерность, тем более, учитывая, что голосование началось задолго ДО выхода XE3 c FireMonkey 2.0. Ниже представлен скрин с распределением голосов по каждому ответу в отдельности:

 

Как обычно — победила дружба лень. У 28% нет желания/стимула/цели (нужное подчеркнуть) занять изучением принципиально новой платформы. Что тут сказать — это их право и решение и упрекать за это, думаю, не стоит. Сейчас, по прошествии уже, считайте более года с момента моего первого знакомства с FireMonkey я могу поделиться и своими впечатлениями по поводу FireMonkey. Если выразить мое отношение к FMX в различные периоды времени максимально лаконично, уместив их в несколько предложений, то это будет выглядеть примерно так:

  • Только-только вышла XE2: «Уау! Круто, Новая платформа FireMonkey!  Нифига себе тут эффекты, 3D-графика, можно разрабатывать программы под Mac OS и iOS! Надо срочно попробовать!«
  • Спустя месяц-полтора ковыряния во внутренностях: «Кхм…нет, оно конечно как-то работает, но где документация? Как сделать хххххх? Почему нельзя сделать yyyyyy? Надо что-то делать…«.
  • Первый конкурс на DelphiFeeds: «Мдяяяя…времени совершенно нету на FireMonkey, да и VCL роднее….И с этим не разобрался и то у меня в программе глючит. Документации вроде больше, но….Нет, скорее всего этот конкурс я пропускаю«
  • Второй конкурс на DelphiFeeds: «Стоит поучаствовать однозначно. В 3D как не соображал, так и не соображаю, но в 2D кое с чем подразобрался. Да и FMX уже не так «закрыта» по части документации«

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

Сейчас у меня появилась возможность поработать с FireMonkey 2.0. Что можно сказать по части обновлений? Не соврали — FMX достаточно сильно изменилась. Пока писал клиент для DelphiFeeds, то пришлось кое-какие моменты по работе с платформой полностью пересматривать и переучивать. Но может оно и к лучшему? Я не могу себя назвать знатоком FireMonkey, но тем не менее работа над клиентом DelphiFeeds шла более гладко и менее «глючно», чем над конкурсной работой «Я математик». Да и новый иитерфйсный подход к некоторым моментам при работе с FireMonkey как-то подталкивают к изучению FMX снова и снова…как наркотик, блин =)

Не скрою, есть и еще остаются недостатки в работе FireMonkey и они, я уверен, исправляются командой разработчиков, а сама FireMonkey расширяется и дополняется. И вот, что я подумал.  Практически каждый, кто столкнулся с FireMonkey впервые и получил отрицательный опыт работы, упрекает платформу в «глючности», отсутствии чего-либо, слабой документации и т.д. и т.п. Причем, подозреваю, что упреки идут буквально сразу же, практически без попыток вникнуть в суть и разобраться — создал проект, открыл палитру компонентов «А-а-а-а!!  Нету моего любимого компонента для проигрывания видео! FireMonkey туфта! Надо рассказать об этом всем!! » Друзья, давайте попробуем вместе собраться с мыслями, сесть, немного подумать над тремя простыми вопросами:

  1. Что нравится в FireMonkey? Не всё ведь плохо в Датском Королевстве? :) Мне например, нравится идея работы со стилями. Сложно, конечно, проникнуться идеей после VCL, но идея-то классная.
  2. Что не нравится и как это можно было бы исправить? Здесь очень желательно постараться не быть голословным и обосновать свое «Фу!»
  3. Чего не хватает в FireMonkey для того, чтобы начать разрабатывать полноценный проект? 
Если не торопиться и хорошо подумать над этими тремя простыми вопросами, ответить на них, то, думаю, что появится неплохая такая база «хотелок» по FireMonkey. Не просто «А дайте мне вот это вот и БЫСТРО, а то не буду использовать вашу фаерманки!», нормальные обоснованные претензии/пожелания, идеи, наконец, как то, что вам не нравится можно исправить. Я например, до сих пор использую вот такой вот нехороший костыль для позиционирования дочерних форм:
type
  TFormHelper = class helper for TForm
    procedure UpdateFormPosition;
  end;
 
procedure TFormHelper.UpdateFormPosition;
var
  RefForm: TCommonCustomForm;
begin
  RefForm := nil;
  case Position of
    TFormPosition.poOwnerFormCenter:
      if Assigned(Owner) and (Owner is TCommonCustomForm) then
        RefForm := Owner as TCommonCustomForm;
    TFormPosition.poMainFormCenter:
      RefForm := Application.MainForm;
  end;
  if Assigned(RefForm) then
  begin
    SetBounds(System.Round((RefForm.Width - Width) / 2) + RefForm.Left,
      System.Round((RefForm.Height - Height) / 2) + RefForm.Top, Width, Height);
  end;
end;

Ну не работает у формы poMainFormCenter и т.д. — форма появляется где угодно, но только не там где надо. Нашел решение, не изящное, но решение и оно меня пока вполне устраивает.

Может и у Вас такие мелкие, но полезные решения «завалялись»? Давайте поделимся ими друг с другом. Если тема будет интересна, то можно маленький конкурс пожеланий FireMonkey устроить.   Нас просили разработать приложения, а мы в ответ — пачку «хотелок» :) Я, конечно, не располагаю бюджетами Embarcadero, но как бы там ни было на более-менее ценных 1-2 приза наскребсти денюжек с блога смогу. Работы можно будет публиковать прямо со страницы блога. Если понравилась идея, то отписывайте в комментариях — подумаем над сроками.

Ну и в заключение, простой вопросик для голосовалки сайдбара: Ваше впечатление от FireMonkey 2.0.?

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
54 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Kazantsev Alexey
20/10/2012 00:07

Этот код:

if Assigned(Owner) and (Owner is TCommonCustomForm) then
RefForm := Owner as TCommonCustomForm;

Должен выглядеть вот так:

if Owner is TCommonCustomForm then
RefForm := TCommonCustomForm(Owner);

IL
IL
20/10/2012 01:30

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

FMX_???
FMX_???
20/10/2012 01:36

FMX must die. Без вариантов. Для Win она уже не нужна, ибо ориентация на метросексуальность, куда Delphi не пускают и, скорее всего, не пустят. А для Mac она слишком не нативно выглядит, чтобы потенциальные пользователи захотели использовать софт, разработанный на FMX.

Argb32
Argb32
20/10/2012 21:45

> Чего не хватает в FireMonkey для того, чтобы начать разрабатывать полноценный проект?
TVirtualTreeView в первую очередь.
TRichedit тоже не помешал бы.
Причем ввиду отсутствия информации о планах самой EMB (все секретно, ничё со времен борланда не поменялось), вкладываться в создание оных вряд ли кто будет.

Алексей
Алексей
20/10/2012 23:03

Я проникся философией wxWidgets во взглядах на кроссплатформенность: всё, что можно сделать нативным — должно быть нативным.
А FMX с его собственной прорисовкой, и даже, ИМХО, тормознутостью, мне не нравится

Андрей
Андрей
22/10/2012 18:55

> Чего не хватает в FireMonkey для того, чтобы начать разрабатывать полноценный проект? — Хорошей документации и примеров: складывается впечатление, что кто-то придумывает технологии, разработчики должны угадать, как они работают. Например, на прошедшей конференции «Кроссплатформа» показывался пример (мат. функции в 3D), который был разработан месяца за 4 до самой конференции, и, если я не ошибаюсь, не сотрудником Embarcadero. У меня сложилось впечатление, что EMB было просто нечего демонстрировать, и это навевает грусть… — Повысить качество тестирования выпускаемых IDE. — Развивать имеющиеся компоненты (например, DBGrid), вернуть QuickReport (не помню как точно назывался), чтобы «из коробки» можно было делать нормальные приложения для… Подробнее »

alexey38
alexey38
22/10/2012 23:08

Беда всего софта за последние лет 10 в том, что корпорации для сохранения объемов продаж вынуждены непрерывно все менять и менять. Пользователь вначале клюет на изменения внешнего вида и фишек, но затем негатив накапливается. Например, 5 лет назад МС ввел ленту в офис, многие клюнули, но до сих пор не встречал ни одного человека, кто бы на ленте находил все функции качественного форматирования текста, итог — например, народ просто разучился править стили. К чему это я? Да к тому, что мегабренды типа МС Офиса проталкивают свои решения. А наш мелкий софт, которые мы пишем, не имеет авторитета МС, Эпла или… Подробнее »

IL
IL
23/10/2012 00:54

Мне кажется, когда будут готовые и интересные приложения на FMX, тогда и платформа станет популярной среди разработчиков, как это стало с WPF. Приложение для построения 3D-графиков MathViz для iOS разработал Anders Ahlsson http://blogs.embarcadero.com/ao/2012/05/01/39255 — сотрудник Embarcadero, который вместе с Кристин Эллис помогает Дэвиду Интерсимону проводить вебинары и, по-моему, очень увлечен FMX. Наверное, увидим и его собственные доклады на Coderage, где он тоже отвечает за техническую часть трансляций.

IL
IL
23/10/2012 00:58
Kazantsev Alexey
23/10/2012 01:40

>очень надеюсь, что Mobile Studio получится если не идеальной IDE, то по крайней мере, оптимальной в плане цена/качество/возможности

А меня новость о студии наводит на печальные мысли. Недоделали десктопный вариант (а он не то чтобы не доделан, он просто не пригоден к использованию) и берутся за мобильный. Выходит, десктопный побоку и айда осёдлывать тренды? Cколько еще раз будет продан выкидышь обезьяны?

Андрей
Андрей
23/10/2012 17:59

2 Алексей:
>>Я проникся философией wxWidgets во взглядах на кроссплатформенность
Я тоже хочу проникнуться, есть ли опыт использование на паскале(Delphi, Lazarus)? Что можете посоветовать для быстрого старта?

На sourceforge есть wxPascal, но там с 2007 года ни одного скачивания…

Kazantsev Alexey
23/10/2012 21:28

Ох, ну а что, дифирамбы им петь что-ли при таком-то отношением к разработчикам. Мало того, что релизнули откровенно сырой продукт и пиарили его, как нечто готовое к употреблению, так еще и второе поколение умудрились выпустить не менее сырым и с кучей регрессий (желающие идут на qc и ищут XE3 Regression). Так что если кто-то и копает свеженькую могилу дельфям, то поверь, не люди выражающие свое мнение в неполиткорректной форме.

Всеволод Леонов

@Андрей >>- Хорошей документации и примеров: складывается впечатление, что кто-то придумывает технологии, разработчики должны угадать, как они работают. Embarcadero даёт инструмент разработки. Применение инструмента — задача прикладных программистов. Как работают компоненты? Следите за семинарами/вебинарами/блогами. http://blogs.embarcadero.com — появились русскоязычные R&D блоги — задавайте вопросы, не стесняйтесь! >>Например, на прошедшей конференции «Кроссплатформа» показывался пример (мат. >>функции в 3D), который был разработан месяца за 4 до самой конференции, и, >>если я не ошибаюсь, не сотрудником Embarcadero. Ошибаетесь. Помимо сотрудников Embarcadero — проводили мы конкурсы среди энтузиастов. Люди пробовали, создавали пилотные проекты, делились опытом и впечатлениями. Не оставайтесь в стороне! >>У меня сложилось впечатление,… Подробнее »

Андрей
Андрей
24/10/2012 13:52

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

Андрей
Андрей
24/10/2012 14:32

Про «гражданин Соврамши»: как обстоят дела с «бонусным пакетом», который экономит 250$? В сентябре по интернету прошла новость, что акция действует до 28 сентября (http://delphi2010.ru/?p=1152, в кеше гугла можно еще найти), сейчас на сайтах, (например, http://www.interface.ru/home.asp?artId=30310) имеется надпись «Бонусный пакет RAD XE3 — срок действия продлён!», на официальном ресурсе http://www.embarcadero.com/ru/radoffer вообще не указан срок окончания акции (я писал о «практически бессрочных» акциях, а пока она получается «совершенно бессрочная»)… Когда обновлялся со скидкой с D7 до XE, акция продлевалась разов так 4-5, сейчас вроде (нет времени проверять) есть скидки при переходе с D2009 до XE3… Ну и кто из нас «гражданин… Подробнее »

Георгий
Георгий
24/10/2012 22:05

Интересно, Андрей.

А какие альтернативные технологии FM Вы можете назвать ?
(таково же класса)

Андрей
Андрей
24/10/2012 23:11

2 Георгий:
Если речь идет о кроссплатформенной разработке, то подобных платформ немало(например, QT или указанный выше vxWidget). И я не против FM, а наборот, но я считаю, что коммерческое средство разработки должно обладать лучшими характеристиками, о чем и написал выше. Если бы это был open source проект, то никаких вопросов…

Kazantsev Alexey
24/10/2012 23:19

2Георгий:
Их тех что на слуху: WPF, JavaFX, AIR, Qt.

Всеволод Леонов

@Георгий Андрей и г-н Казанцев — типичные тролли. Они на всех форумах говорят одно и то же — «дельфимастдай». Насколько в плане развития личности полезны аффирмации подобного рода — не знаю, но по динамики их комментов вижу — надежды нет. Например, Алексей Казанцев только что ляпнул про WPF. К какому уровню перспективности данную технологию можно отнести? В каком месте она является альтернативой FireMonkey? Зачем «паскалисту» с десятками тысяч строчек кода пересаживаться на Qt? С г-ном Казанцевым всё ясно, он лепит любую глупость, лишь бы против Delphi. Ну, видимо, других способов подписать ЧСВ нет. А вот некто «Андрей» демонстрирует осведомлённость об… Подробнее »

Андрей
Андрей
25/10/2012 19:21

2Всеволод Леонов: Как я понимаю, диалог невозможен в принципе, т.к. все «нерукопожатные» высказывания списываются на троллинг. Очень жаль.. 2Vlad: Пожалуй, поддержу идею Леонова продолжить инициативу с опросами, если конечно есть желание. Опросы можно сделать по самым «проблемным» вопросам, связанным с Delphi. Для чего это нужно? Ну, чтобы иметь представление о реальной ситуации… Конечно, если мнение общественности Emb не интересно, то ни на что повлиять не получится, но зато сама общественность будет знать друг о друге немного больше, чем сейчас. Можно организовать опрос на тему, кто какие приложения разрабатывает. Это даст представление о целевом применении Delphi, еще можно спросить какие из… Подробнее »

Kazantsev Alexey
25/10/2012 23:23

Евангелист-Сева, в очередной раз, умудрился на всех ярлычки навесить. Там маргиналы, тут тролли, а новым сообществом, стало быть, являются пять человек с дельфифидс поучаствовавшие в конкурсе [facepalm.jpg]. Грустно. Остается лишь надеяться, что это не официальная политика Embarcadero в деле консолидации сообщества, а заскоки конкретного персонажа.

з.ы. Мой т.н. «троллинг» и «дельфимаздаизм» легко находится в моем блоге, а также поиском по QC.

Георгий
Георгий
26/10/2012 16:42

Одни эмоции, как будто любимых женщин делят.
Мне кажется с технологиями всё должно быть без эмоций:
По одной оси: WPF, JavaFX, AIR, Qt,
По другой: Производительность, Скорость разработки(RAD), Удобство разработки, Кросплатф., Нативность, Удобство распостранения/внедрения, Цена, Использ.Граф.Сопроцесора, Кол.Компонент, Кол.Сторонних Компонент, Испольльзвование всяких штучек типа Повороты кнопок и др, 3D моделей, 2D на 3D, 3D на 2D, Биндинг, Стили, Поддержка виз. наследования, Документация и др. …

Андрей
Андрей
26/10/2012 17:31

2Vlad: Сделать голосовалки без времени окончания мысль хорошая, если у пользователей будет возможность со временем изменять данные. Потенциально это даст возможность увидеть актуальные данные. Если народу будет много и будет возможность отслеживать историю выбора значений, то потом можно будет строить графики тенденций, что само по себе интересно… Предлагаю пока запустить опрос на тему, кто какую версию Delphi использует в рабочих проектах. Варианты ответа от Delphi 1 до Delphi XE3(можно отдельно Turbo выделить). Ответы вибирать при помощи чекбоксов. Анализ можно сделать в нескольких разрезах: % по каждой версии, % всех версий младше D7(включительно D7), % версий от D7 до XE включительно… Подробнее »

Всеволод Леонов

Влад, сделай, плиз опрос. Зачем я пишу комментарии? 1. Не могу не писать, обосновать не могу 2. Думаю, что таким образом я повлияю на Embarcadero 3. Embarcadero — идиоты, их нужно учить уму-разуму 4. Без моего мнения мир будет беднее в плане глобального знания 5. У меня слишком много свободного времени на работе, я хочу его чем-то заполнить @Kazantsev Alexey Прикольный блог. Никогда не знал о его существовании. Эх, Вас бы в тестеры… цены нет. Ну в смысле мышление — баги искать. Ни одной креативной темы — весь контент — вторая производная от ошибок создателей. Санитар леса. :) Разбор продуктов… Подробнее »

Андрей
Андрей
31/10/2012 12:02

2Всеволод:
Если не секрет, расскажите как становятся евангелистами.

Андрей
Андрей
31/10/2012 13:39

Собственно почему спросил: вот ссылка http://blogs.msdn.com/b/allo/archive/2009/03/26/9510664.aspx, цитата:
«Что делают евангелисты и зачем?
Когда меня спрашивают, что является целью моей работы, то краткий ответ звучит так: моя цель – чтобы каждый разработчик ПО и каждый ИТ-профессионал в России был счастлив. А для достижения этой цели нужно изучать нашу аудиторию, понимать ее проблемы и нужды, нужно придумывать решения проблем и рассказывать о них широким аудиториям…»

Kazantsev Alexey
31/10/2012 20:55

2Всеволод Леонов: Да уж какой есть. Кому-то нравится растекаться мыслью по древу и утопать в словестных оборотах, кайфуя, видимо, от ощущения своего глубокого внетреннего мира, а по так чем проще тем лучше. К слову сказать, я бы и рад написать что-нибудь хорошее, но повода, увы, нет. Embarcadero выпускает настолько сырой продукт, что нет ни какой необходимости копаться в нем для поиска багов — достаточно просто попытаться использовать. Я ни за что не поверю, что о багах лежащих на поверхности разработчики не были осведомлены (видишь, как хорошо я о них думаю). Думаю были, но, видимо, политика такова, что баги фиксить некогда,… Подробнее »

Всеволод Леонов

@Андрей У каждого свой путь в «евангелизм». Если бы в России можно было работать преподавателем, то я бы и остался преподавателем. Занимался бы наукой. Сейчас практически профессия «евангелиста» совмещает и то, и то. Только вместо законов бытия изучаю Delphi. Объект исследования — Delphi, предмет исследования — возможности по созданию приложений. Чтобы стать «евангелистом», нужно иметь внутреннее желания быть полезным. Сейчас у Delphi — тяжелые времена. Плюнуть в FireMonkey — ума большого не надо. Другое дело, найдя баг, «объехать его», дать возможность другим, кто идёт за тобой, все-таки решить задачу. Здесь как раз могу назвать истинных евангелистов Delphi, которые не работают… Подробнее »

Всеволод Леонов

…эмоций сейчас нет. Мне просто интересно посмотреть, как будет у людей с осознанностью. Смогут ли они проснуться? Или будут продолжать с различной степенью интенсивности ненавидеть Delphi? Ну пересели бы на другие продукты, в конечном итоге — таких ярых бойцов — человек 10, дай бог, если 5 из них — легальные пользователи. Урон компании невеликий. А вот другие не будут демотивированы.

Кстати, Влад слегка погорячился, насчёт «уронить продажи в России». Но за него я спокоен — он действительно уникальный человек, чем нам и ценен безмерно :)

Kazantsev Alexey
01/11/2012 23:34

2Всеволод Леонов Человеку, занимающемуся не своим делом («Если бы в России можно было работать преподавателем, то я бы и остался преподавателем»), стоило бы приберечь жалость для себя любимого. Пригодится еще. А хочу я простого — чтоб мой рабочий инструмент был качественным. И у блога моего нет цели опорочить Delphi. Это, пожалуй, только в глазах евангелистов аргументированные претензии считаются «троллингом» и «дельфимаздайством» (может вам и доступ к QC закрыть, там столько гадостей написано…). А по мне так читающие люди должны знать, какой уровень качества предлагает нынче Embarcadero. А уж на фоне циничных лозунгов («Многие пришли первый раз на FireMonkey, поэтому были… Подробнее »

Наиль
Наиль
02/11/2012 20:01

Я системный администратор. Пишу программы для себя. Для моих задач вполне подходит версия Turbo, на которую у меня есть хоть и бесплатная, но лицензия. Инструмент выбираю исходя из его возможностей. Поэтому Delphi используется тогда, когда нет возможности решить задачу батниками, php- или JavaScript’ами. Читая этот блог, решил попробовать XE2. Установил (ещё в январе) и забыл, т.е. ни разу не запускал. Вчера мне понадобилось написать программу, которая просто выводит на экран всё, что приходит по сети на определённый порт. За тот час пока я писал такую простую программу в XE2, Delphi трижды(!) успела «вылететь» (закрыться, исчезнуть). Всеволод, что-то с моей сознательностью… Подробнее »

Slava
Slava
03/11/2012 18:58

Спешу оставить комент пока ещё пост свеж… хотелось бы что б его почитал Всеволод Леонов, и если можно подтолкнёт к очередному витку (микровитку :)) спецов EMB в развитии Делфи. В основном хочу выразить свои впечатления от использования FM2, а так же пару пожеланий. На Делфи пишу уже около 10 лет. Был всем известный период разочарования в истории развития данного средства, поэтому и были попытки работы в MC VC++, С# т.к. не хотелось остаться за бортом при худшем сценарии. Последние пару лет опять плотно пересел на Делфи, и пока ни сколько не жалею об этом. При первом выходе FM меня очень… Подробнее »

Slava
Slava
04/11/2012 07:40

Почитал блог Kazantsev Alexey и решил поэксперементировать с TTreeView из палитры компонентов FM2 дабы самому убедится в качестве его реализации. Блин, очередной раз был разочарован. Добовлял по 1000 итемов по нажатию кнопки. При их кол-во менее 5000 ЦП (AMD Phenom 2 X4) находится в состоянии покоя, если не тревожить приложение. При последующем добавлении в среднем на каждые 5 тыс. итемов нагрузка на ЦП в среднем увеличивается на 1 %. Более того, на каждую 1000 итемов выделялось по 4 МБ ОП. Это получается по 1 КБ на итем — не многовато !!!??? На данный момент в своём новом проекте 2D я… Подробнее »

Kazantsev Alexey
04/11/2012 15:41

2Slava Вызовы Length() для динамических массивов не инлайнятся, в отличии от тех же вызовов для строк. Правда, на общем фоне, это не должно драматически сказываться на производительности. У меня в чувствительных к производительности местах вместо вызова Length() делалось прямое чтение длины из заголовка дин.массива, но после серии тестов выяснилось, что ощутимой выгоды от этого нет. Правда, все может от алгоритма зависеть. TDictionary является неплохим компромиссом между скоростью и потреблением памяти. У AVL дерева, при сравнительной скорости, потребление памяти должно быть больше. Для экспериментов с TreeView можно было просто скачать приложенный проект из QC. Там в дереве всего 1000 элементов (но… Подробнее »

Slava
Slava
05/11/2012 05:27

2Kazantsev Alexey Незнаю как сейчас обстоят дела с методом Length, но когда-то мы столкнулись в одном из проектов что именно вызов сего метода является узким местом в скорости выполнения — судорожно пришлось его вырезать где это было возможно. Поэтому и по сей день стараюсь его избегать где это оправданно. >> TDictionary является неплохим компромиссом между скоростью и потреблением памяти. 24 МБ на милион записей (в 32-разрядном приложении) исходя из того что размер одного узла 24 байта: [code] pBinNode = ^TBinNode; TBinNode = record private bal: int32; left, right: pBinNode; key: pByte; LenKey: int32; public data: Pointer; end; [/code] Ну конечно… Подробнее »

Slava
Slava
05/11/2012 07:19

>> 24 МБ на милион записей …
Имеется ввиду AVL-дерево.

Кстати (извиняюсь за отклонение от темы), в Lazarus есть реализация AVL-дерева (юнит AVL_Tree), но опять же, непомню уже почему, его реализация меня не устроила. Вобще в Lazarus много что интересного, чего не хватает в Delphi, например классы-обёртки: для работы с процессам (TProcess, убогий по сравнению с C#, но есть), пипами, и прочее… По крайней мере есть задел. И редактор поудобнее будет. В Delphi например всегда бесит автоматическое разворачивание нижеследуемых процедур и функций как только напишешь например begin. В настройках среды ничего похожего для устранения этого поведения не нашёл.

Slava
Slava
05/11/2012 08:44

Только что скачал и опробовал Cnpack IDE Wizards — супервещь для работы в IDE! Жалею что раньше не обращал на неё внимание. В нашей конторе из около 5 кодеров я один паскалист — некому было подсказать… Похоже я уже общаюсь сам с собой :)

Андрей
Андрей
05/11/2012 13:24

2Vlad:
Предлагаю добавить еще два опроса:
1) Оцените по пятибалльной шкале качество справочной системы текущей версии Delphi
2) Оцените по пятибалльной шкале качество демонстрационных примеров текущей версии Delphi

варианты ответа: 1,2,3,4,5 (radiobuttons)

Андрей
Андрей
05/11/2012 13:36

2Всеволод Леонов:
>»Я не прячусь ни от кого… Мне лишь хочется, чтобы не было спекуляций,
> недомолвок, чёрного пиара — чтобы были простые и ясные правила игры…».
У меня вопрос про «простые и ясные правила игры»: почему некоторые могут критиковать Delphi(http://delphi2010.ru/?p=1096&cpage=1#comment-17977), и их за это анафеме не предают, а некоторые не могут?

Kazantsev Alexey
05/11/2012 15:30

2Slava >24 МБ на милион записей (в 32-разрядном приложении) исходя из того что размер одного узла 24 байта Будет выделено 28МБ (и это только служебные данные + еще 8MB на сами данные при условии ) т.к. менеджер памяти имеет гранулярность. На затребованные 24 байта он выделит 28. TDictionary будет требовать лишь 12MB (вместе с ключами и данными). Но, вообще, говорить о потреблении нужно с учетом производительности. Насколько AVL будет опережать TDictionary? Я тестировал реализацию AVL из SuperObject, скорость сравнимая (правда было это около года назад). Есть результаты замеров? Претензии к редактору поддерживаю. В моем коде (много вложенных типов, много $REGION… Подробнее »

Kazantsev Alexey
05/11/2012 15:34

вордпресс скушал угловые скобки :(

(и это только служебные данные + еще 8MB на сами данные при условии [Pointer, Pointer])

TDictionary[Pointer, Pointer] будет требовать лишь 12MB

Konstantin
Konstantin
07/11/2012 14:28

Всех приветствую. Почитал статью, посмотрел статистику голосования по FM и решил все же оставить комментарий :) Сразу хотелось бы уточнить, что не новичок в Delphi — занимаюсь разработкой проектов различной сложности начиная с Delphi 1 с давних «бородатых» годов и 28% «.. лень разбираться…» явно ко мне не относится. В 2009 даже пытался использовать в своих проектах прародителя пакета FireMonkey с http://www.ksdev.com т.е. платформа показалась уже тогда очень перспективной, но не получилось из-за «сырости» технологии, хотя тот же ThemeEngine (прародитель поддержки theme в XE2 и XE3) использоваль очень продуктивно. И тем не менее, вот уже около года я не могу… Подробнее »

IL
IL
09/11/2012 14:43

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

Konstantin
Konstantin
09/11/2012 19:15

Нет, с видеозахватом пока не работаю, но возможно в дальнейшем прийдется. Идет сбор данных с большого количества различных датчиков (сейчас порядка 6000 тыс.), эти данные размещаются в базе MS SQL в real-time отдельными программными модулями. Программа мониторинга состояния обрабатывает изменения в БД и анализирует данные, строит тренды изменений, в случае обнаружения критических значений или трендов, которые могут привести к критическим параметрам оборудования — акцентирует внимание оператора на проблемном оборудовании/датчике. Техпроцессы отображаются в виде интерактивных схем, карт цехов. Схемы достаточно сложные, есть варианты до 20-30 тыс. векторных объектов. Причем все постоянно меняется. Пока используется VCL, сейчас пытаюсь задействовать FM т.к. 3D… Подробнее »

Slava
Slava
15/11/2012 15:26

2Kazantsev Alexey >> Есть результаты замеров … Сегодня провёл сравнительный тест на скорость AVL vs TDictionary. Результат приятно удивил — оказалось что TDictionary даже опережает в раза 1.5-1.7 по скорости. Пробовал создание словаря на 1 милион, и на 10 милионов записей, и затем полный проход по тому же кол-ву. AVL классический, идеально сбалансированный, но тем не менее. В дереве конечно можно ещё немного оптимизировать — метод сравнения узлов нужно пересмотреть — у меня выполняется побайтно, т.к. в качестве ключа — буфер — сделать сравнение NativeInt-ом, а остаток по-байтно. Но не думаю что это кардинально изменит что-либо. Вобщем возьму на заметку… Подробнее »

trackback
Итоги 2012 года на WebDelphi.ru | Delphi в Internet
28/12/2012 19:07

[…] 500 голосов за FireMonkey и новые вопросы к читателям. — резонансный пост о прошедшем голосовании. Именно после публикации этого поста в блоге появилась страница с опросами. Кстати, результаты некоторых опросов, прямо скажу, удивляют. […]