Главная > Программирование, Цiкавi дослiди > На чем писать GUI для C++ приложений

На чем писать GUI для C++ приложений


Представьте ситуацию: вы пишете-пишете проект, и вдруг этому проекту требуется GUI. И тут вас спрашивают “на чем будем писать?”. Хочу поделиться своими мыслями на тему того, о чем стоит задумываться, перед тем как отвечать на такой вопрос.

Я вам конечно “не скажу за всю Одессу”, но думаю что могу сказать про GUI всяких системных утилит и security-related софта.

На самом деле все фреймворки для написания GUI – проблемные. Я полностью согласен с фразами о том, что какой фреймворк не выбери, написание кода GUI будет не добавлением, а сращиванием. Обязательно придется переделывать код так, чтобы он вписывался в GUI, а не делать GUI на основе существующего кода. Поэтому надеяться на то, что какой-то фреймворк будет лучше для моего проекта – бесполезно. И заявления о том, что какой-то фреймворк лучше подходит для каких-то задач, скорее миф чем правда.

Для подтверждения своих слов вот результат исследования фреймворков используемых в современных приложениях:

Приложение Фреймворк
acronis true image QT
skype QT
araxis merge свой на основе ATL
teamviewer WTL
EaseUS Partition Master Home Edition GTK
Folder Lock HTMLLayout
agnitum outpost HTMLLayout
hex workshop MFC
vmware свой на основе ATL
trillian свой на основе GDI+
drweb MFC + WTL
symantec SymHTML
kaspersky QT
NOD MFC

Я выбирал приложения где GUI – это не просто форма, две кнопки, один прогресс и список, и нужно лишь напрячь дизайнера, чтобы он это красиво оформил. Я выбирал приложения, где нужно отображать достаточно много данных, где действительно требовалась большая работа по юзабилити, где есть сложные взаимодействия элементов. Ну и где проект уже существует много лет.

Как вы видите, на любом фреймворке можно написать сложный GUI, и на любом фреймворке можно продолжать его расширять. И как видите, некоторые компании не пугает факт того, что свой делать фреймворк – это долго и сложно. Пишут.

На что же влияет выбор фреймворка?
1) Конечно же фреймворк влияет на внешний вид.

MFC, ATL, WTL и их потомки

Комментировать особо нечего. Если сильно постараться, то можно получить конфету похожую на интерфейс windows 7 (Nod), но в целом получается “классика”.

QT

Белое, но не пушистое, модное направление.

HtmlLayout и производные

Совсем новое направление, но люди используют. И получается, имхо очень даже прилично.

Экзотика

А GTK-то может быть вполне приятным глазу.


Астру cerulean studios “пилили”, насколько я помню, почти 3 года. Все это время они, похоже, изобретали свой кросплатформенный фреймворк с панелями и виджетами на основе GDI+. Поражаюсь как они смогли так долго не выпускать новых версий и не помереть…

2) Фреймворк влияет на сложность поиска людей
Вот вбили вы себе в голову к примеру, что надо писать GUI только на WxWidgets. Даете объяление, находите какого человека, который думает что знает как писать на wxWidgets. Он начинает делать GUI. GUI растет, кода все больше, а потом этот человек берет и уходит. А за то время, пока вы писали GUI, ситуация изменилась, и желающих писать на wxWidgets больше не осталось. Все ушли на WPF, к примеру. Или еще есть любители wxWidgets, но неспособные разгрестись в сложном GUI, который был создан первым человеком, а профессионалов нет. И что дальше? Переписывать заново?

Поэтому стоит сделать запрос вида “резюме с++ ИМЯ_ФРЕЙМВОРКА” в гугл чтобы оценить сложность поиска человека. На момент написания статьи гугл выдавал вот такое:
MFC – 120000 результатов
WTL – 17600
ATL – 46700
QT – 112000
Htmlayout – 113 (sic!)
GTK – 7600
wxWidgets – 17500
У вас все еще есть вопросы?
Конечно же, эта статистика гугла не говорит о том, что ATL-программиста ровно в 3 раза легче найти, чем WTL-программиста. Но какая-то корреляция здесь есть: ATL-программистов все же проще будет найти, чем человека для GTK или WTL.

Для полноты картины:
C# WPF – 1280000 результатов! Мухи не ошибаются :)

3) Фреймворк влияет на разработку
И вот только в-третьих стоит начинать думать, о том грабли какого фреймворка, вас ударят менее сильно. Фреймворки навязывают размер приложения, одинаковый/изменчивый внешний вид под разными ОС и темами рабочего стола, сложность создания кастомных контролов, способ создания MUI и хранения ресурсов, степень корявости UI-дизайнера, шаблоны проектирования, но это уже холиварная тема…

  1. Ноябрь 1, 2011 в 11:45 | #1

    WTL – 17600
    ATL – 46700

    Хотел сказать, что не стоит это разделять – т.к. обычно люди которые знают WTL автоматически знают ATL, а если знают только ATL – то перейти на WTL не больше недели.

    • Hex
      Ноябрь 1, 2011 в 18:51 | #2

      я разделил потому, что обратное заявление к сожалению не верно :)

  1. Нет обратных ссылок.

Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.