|
Уход от Delfi, на конторе |
|
|
|
 |
Ответов
|
Jun 8 2011, 13:33
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(SasaVitebsk @ Jun 8 2011, 14:29)  Скачал и установил QT (QT Creator). Вроде выглядит привлекательно. Поддерживается, развивается. Локализация русская. Много примеров. Форумы. Бесплатная.
Кто поделится своими наблюдениями. Посоветует. Замечания. Заранее благодарю. Когда-то для разработки софта для РС (для внутренних нужд) пользовался Borland C++Builder. Потом, освоивши Python, многие вещи делал на нём. Но иногда встаёт необходимость именно в полноценном экзешнике с нативно исполняемым кодом. Развитие билдера не понравилось - в отличие от пятёрки, которая была проста, быстра и достаточно стабильна, последние версии выглядят монстроидально, громоздко и мутно. Подыскивал замену, остановился на Qt. Сейчас лабаю небольшую программку для внутренних нужд. Навскидку могу сказать следующее: - Qt - это не RAD система. То, что там есть Designer, не делает его таковой. В отличии от дельфей и билдера, где можно было накидать на форму компонентов (в том числе и неграфических) и быстренько в полувизуальной манере запрограммировать поведение - евенты повесить, задать значение всех свойств по умолчанию и т.п., тут такие номера не проходят. На форму можно положить некоторые виджеты, но по большому счёту этим всё и ограничивается. Т.е. от дизайнера эффективно можно получить только геометрическое размещение виджетов и всё. Остальное - назначение событий, их обработка, инициализация и настройка - всё это делается руками в коде. Это не так удобно как борландовских продуктах, но склонен считать, что это более правильный подход, хотя он и требует глубже вникать в систему и разбираться с её потрохами. Поэтому Appication Development получается не такой уж и Rapid
- Среда разработки Qt Creator (как и почти все среды) весьма отстойна. Да, там многие вещи делаются неплохо, но есть и масса неприятных мелочей, начиная от того, что курсор в редакторе прыгает по тексту при вертикальном перемещении в зависимости от конца строк и заканчивая тем, что нет удобного расположения редактируемых окошек в виде привычных по многим программам табов. Собираюсь со временем перелезть на свой любимый слик. Самое сложное тут - это переделать среду сборки под сконс, избавившись от make и, как следствие, их инструмента организации проекта qmake. Основное тут - это разобраться с moc (meta-object compiler).
- Качество самого фреймворка в целом на высоте. Но отдельные программные его модули оставляют желать лучшего. Например, QtSQL не приходится рассматривать как полноценную библиотеку, целиком пригодную для написания сложных программ. Её слой драйверов и низкоровневого БД API вполне вменяемые, но вот про третий слой - прикладные модули (QSqlTableModel и подобные) этого сказать нельзя. В общем, нужно в каждом случае внимательно смотреть, на каком уровне выполнен прикладной модуль. Мнение обычно можно составить, читая посты на форумах - информации предостаточно. Правда, я сперва набил немного шишек на этом модуле, а потом уже накопал на форумах, что проблема не нова.
- При организации всех классов Qt используется идеология на основе паттерна PImpl (Pointer to Private Implementation). Она имеет свои плюсы и минусы. Главное, для чего они её заюзали - поддержание бинарной совместимости (по крайней мере, в пределах мажорных номеров версий). Правда, мой опыт показал, что это в реале не работает, во всяком случае, не всегда - при переходе с версии 4.6.3 (а под неё мной руками были собраны драйвера для сервера MySQL) на крайнюю версию 4.7.3 программа отказалась вязаться с сервером. Пересборка драйверов порулила проблему.
Ещё одно преимущество такого подхода - более быстрая загрузка программы. Программа действительно грузится и работает быстро. Но при отладке этот подход доставляет проблемы: несмотря на open source реализация потрохов видна не на всю глубину. И постоянно сталкиваться с кодом Q_D(class_name); и далее d->... - не добавляет комфорта. Разбираться с этим кодом сложнее, чем с написанным явно, т.к. приходится искать определения этой приватной имплементации.
- Бесплатная лицензия имеет некоторые ограничения. В частности, в ней не предусмотрена сборка статической версии программы, чтобы получить самодостаточный экзешник. Поэтому придётся тащить как миниум один или два рантаймных модулей библиотек - QtCore, QtGui. Цена вопроса - 12 мегов.
В целом, фреймворк достойный. Реальной альтернативы я ему не вижу. Конечно, для эффективной работы с ним придётся изрядно погнуть моск под его подходы: например, повсеместно используется new для создания объектов и очень редко можно увидеть delete - там широко применяется подход через удаление объектов в деструкторе предка, поэтому в каждом объекте виджета в конструкторе есть аргументом указатель на предка QObject *parent; или, скажем, строго заданная схема создания объектов-виджетов, при которой все объекты-виджеты создаются не в конструкторах, а уже во время запуска самой программы, т.е. после старта main(). Пристальное внимание надо уделить таким аспектам, как передача сообщений по схеме signal/slot, event'ам и event filter'ам. Это базовые вещи, без хорошего понимания которых, более-менее серьёзную программу не создать. В общем, не всё там так просто и безпроблемно, но если готовы потратить силы и время на освоение, то дело это считаю достойным. Сам в процессе.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
SasaVitebsk Уход от Delfi Jun 8 2011, 07:29 goodwin Все "cопутствующие програмки для PC " на... Jun 8 2011, 08:13 DSIoffe Присоединяюсь.
Для "сопутствующих программок... Jun 8 2011, 08:49 smalcom Есть два направления для RAD. Если нравятся плюсы,... Jun 8 2011, 09:00 MrYuran Цитата(smalcom @ Jun 8 2011, 13:00) делфи... Jun 8 2011, 09:23  vvs157 Цитата(MrYuran @ Jun 8 2011, 13:23) Пока ... Jun 8 2011, 10:02 DSIoffe Цитатаделфи давно подох и разложился
Запахло свяще... Jun 8 2011, 09:21 Буратино Какие именно сопутствующие программы обсуждаются? ... Jun 8 2011, 09:36 ukpyr если нужно все-в-одном, беспроблемная кроссплатфор... Jun 8 2011, 10:21 PhX Цитата(ukpyr @ Jun 8 2011, 14:21) если ну... Jun 8 2011, 11:02 SasaVitebsk Программисты (за исключением одного) работают и с ... Jun 8 2011, 10:36 MrYuran Цитата(SasaVitebsk @ Jun 8 2011, 14:36) П... Jun 8 2011, 10:45 HARMHARM Сам раньше писал всё на дельфи. Потом начало раздр... Jun 8 2011, 11:00 halfdoom Цитата(SasaVitebsk @ Jun 8 2011, 13:36) Н... Jun 8 2011, 11:30  Konst_777 Цитата(halfdoom @ Jun 8 2011, 14:30) ...И... Jun 9 2011, 14:59   halfdoom Цитата(Konst_777 @ Jun 9 2011, 18:59) Спа... Jun 10 2011, 04:18 DSIoffe ЦитатаСам D7 сейчас уже не поддерживается и не отв... Jun 8 2011, 11:21 SasaVitebsk Цитата(DSIoffe @ Jun 8 2011, 14:21) Не в ... Jun 9 2011, 06:16  dxp Цитата(SasaVitebsk @ Jun 9 2011, 13:16) 1... Jun 9 2011, 07:26   AHTOXA Да уж. Отличный способ побороть текучку программис... Jun 9 2011, 08:01    andrew_b Цитата(AHTOXA @ Jun 9 2011, 12:01) перейт... Jun 9 2011, 08:40    zltigo QUOTE (AHTOXA @ Jun 9 2011, 11:01) перейт... Jun 9 2011, 08:52     AHTOXA Цитата(zltigo @ Jun 9 2011, 14:52) Им каж... Jun 9 2011, 09:34    AlexandrY Цитата(AHTOXA @ Jun 9 2011, 11:01) Да уж.... Jun 9 2011, 08:58     dxp Цитата(AlexandrY @ Jun 9 2011, 15:58) Хот... Jun 9 2011, 09:14 AlexandrY Разных готовых компонентов для Delphi по прежнему ... Jun 8 2011, 11:25 smalcom ЦитатаДумаете, среди QT-программистов процент грам... Jun 9 2011, 10:37 AHTOXA Цитата(smalcom @ Jun 9 2011, 16:37) Да. C... Jun 9 2011, 10:46 SasaVitebsk Я извиняюсь, просто загромождать не хотел.
Не надо... Jun 9 2011, 13:57 AlexandrY Цитата(SasaVitebsk @ Jun 9 2011, 16:57) =... Jun 9 2011, 15:57  SasaVitebsk Цитата(AlexandrY @ Jun 9 2011, 18:57) Уже... Jun 10 2011, 05:58   AlexandrY Цитата(SasaVitebsk @ Jun 10 2011, 08:58) ... Jun 10 2011, 07:11    sasamy Цитата(AlexandrY @ Jun 10 2011, 11:11) А ... Jun 10 2011, 08:36  vvs157 Цитата(AlexandrY @ Jun 9 2011, 19:57) Это... Jun 10 2011, 10:39 ukpyr ЦитатаТеперь где-то утечка памяти - найти программ... Jun 9 2011, 14:26 SasaVitebsk К сказанному sasamy, добавлю следующее. Наличие и ... Jun 10 2011, 09:21 Виктория Поднимаю тему, если не наскучило...
Мне немножко ... Dec 6 2011, 13:54 Виктория А кто-нибудь из присутствующих использует в качес... Dec 19 2011, 08:14 sigmaN Согласен, что будущее за облаками. Dec 6 2011, 20:13 _Pasha Цитата(Виктория @ Dec 6 2011, 16:54) Laza... Dec 20 2011, 06:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|