реклама на сайте
подробности

 
 
> Уход от Delfi, на конторе
SasaVitebsk
сообщение Jun 8 2011, 07:29
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Занимаемся различной электроникой. Сопутствующие програмки для PC до этого писали под Delfi. Понятно, что тема себя изжила.
Подыскиваем новый пакет для дальнейшей деятельности.
RAD студия выглядит как-то оторвано от общего потока.
VS кажется слишком монстрообразной. Текучка программистов значительная и боимся сложностей с поддержкой написанных пакетов.
Скачал и установил QT (QT Creator). Вроде выглядит привлекательно. Поддерживается, развивается. Локализация русская. Много примеров. Форумы. Бесплатная.

Кто поделится своими наблюдениями. Посоветует. Замечания.
Заранее благодарю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Jun 8 2011, 13:33
Сообщение #2


Adept
******

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



Цитата(SasaVitebsk @ Jun 8 2011, 14:29) *
Скачал и установил QT (QT Creator). Вроде выглядит привлекательно. Поддерживается, развивается. Локализация русская. Много примеров. Форумы. Бесплатная.

Кто поделится своими наблюдениями. Посоветует. Замечания.
Заранее благодарю.

Когда-то для разработки софта для РС (для внутренних нужд) пользовался Borland C++Builder. Потом, освоивши Python, многие вещи делал на нём. Но иногда встаёт необходимость именно в полноценном экзешнике с нативно исполняемым кодом. Развитие билдера не понравилось - в отличие от пятёрки, которая была проста, быстра и достаточно стабильна, последние версии выглядят монстроидально, громоздко и мутно.

Подыскивал замену, остановился на Qt. Сейчас лабаю небольшую программку для внутренних нужд. Навскидку могу сказать следующее:

  1. Qt - это не RAD система. То, что там есть Designer, не делает его таковой. В отличии от дельфей и билдера, где можно было накидать на форму компонентов (в том числе и неграфических) и быстренько в полувизуальной манере запрограммировать поведение - евенты повесить, задать значение всех свойств по умолчанию и т.п., тут такие номера не проходят. На форму можно положить некоторые виджеты, но по большому счёту этим всё и ограничивается. Т.е. от дизайнера эффективно можно получить только геометрическое размещение виджетов и всё. Остальное - назначение событий, их обработка, инициализация и настройка - всё это делается руками в коде. Это не так удобно как борландовских продуктах, но склонен считать, что это более правильный подход, хотя он и требует глубже вникать в систему и разбираться с её потрохами. Поэтому Appication Development получается не такой уж и Rapid
  2. Среда разработки Qt Creator (как и почти все среды) весьма отстойна. Да, там многие вещи делаются неплохо, но есть и масса неприятных мелочей, начиная от того, что курсор в редакторе прыгает по тексту при вертикальном перемещении в зависимости от конца строк и заканчивая тем, что нет удобного расположения редактируемых окошек в виде привычных по многим программам табов. Собираюсь со временем перелезть на свой любимый слик. Самое сложное тут - это переделать среду сборки под сконс, избавившись от make и, как следствие, их инструмента организации проекта qmake. Основное тут - это разобраться с moc (meta-object compiler).
  3. Качество самого фреймворка в целом на высоте. Но отдельные программные его модули оставляют желать лучшего. Например, QtSQL не приходится рассматривать как полноценную библиотеку, целиком пригодную для написания сложных программ. Её слой драйверов и низкоровневого БД API вполне вменяемые, но вот про третий слой - прикладные модули (QSqlTableModel и подобные) этого сказать нельзя. В общем, нужно в каждом случае внимательно смотреть, на каком уровне выполнен прикладной модуль. Мнение обычно можно составить, читая посты на форумах - информации предостаточно. Правда, я сперва набил немного шишек на этом модуле, а потом уже накопал на форумах, что проблема не нова.
  4. При организации всех классов Qt используется идеология на основе паттерна PImpl (Pointer to Private Implementation). Она имеет свои плюсы и минусы. Главное, для чего они её заюзали - поддержание бинарной совместимости (по крайней мере, в пределах мажорных номеров версий). Правда, мой опыт показал, что это в реале не работает, во всяком случае, не всегда - при переходе с версии 4.6.3 (а под неё мной руками были собраны драйвера для сервера MySQL) на крайнюю версию 4.7.3 программа отказалась вязаться с сервером. Пересборка драйверов порулила проблему.
    Ещё одно преимущество такого подхода - более быстрая загрузка программы. Программа действительно грузится и работает быстро. Но при отладке этот подход доставляет проблемы: несмотря на open source реализация потрохов видна не на всю глубину. И постоянно сталкиваться с кодом Q_D(class_name); и далее d->... - не добавляет комфорта. Разбираться с этим кодом сложнее, чем с написанным явно, т.к. приходится искать определения этой приватной имплементации.
  5. Бесплатная лицензия имеет некоторые ограничения. В частности, в ней не предусмотрена сборка статической версии программы, чтобы получить самодостаточный экзешник. Поэтому придётся тащить как миниум один или два рантаймных модулей библиотек - QtCore, QtGui. Цена вопроса - 12 мегов.


В целом, фреймворк достойный. Реальной альтернативы я ему не вижу. Конечно, для эффективной работы с ним придётся изрядно погнуть моск под его подходы: например, повсеместно используется new для создания объектов и очень редко можно увидеть delete - там широко применяется подход через удаление объектов в деструкторе предка, поэтому в каждом объекте виджета в конструкторе есть аргументом указатель на предка QObject *parent; или, скажем, строго заданная схема создания объектов-виджетов, при которой все объекты-виджеты создаются не в конструкторах, а уже во время запуска самой программы, т.е. после старта main().

Пристальное внимание надо уделить таким аспектам, как передача сообщений по схеме signal/slot, event'ам и event filter'ам. Это базовые вещи, без хорошего понимания которых, более-менее серьёзную программу не создать.

В общем, не всё там так просто и безпроблемно, но если готовы потратить силы и время на освоение, то дело это считаю достойным. Сам в процессе. sm.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016