Что сейчас актуально для создания GUI?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Осваиваю Visual C++ и, собственно, задался этим вопросом с целью найти оптимальное решение с прицелом на межплатформенность. Начал довольно странно, а именно с Qt :) . Потом вспомнил о «чуде» под названием MFC, немножко поковырявшись в нем сложилось впечатление, что MFC это творчество душевнобольного человека. Возможно я неправ и меня испортил Qt ...

К чему я это все? Просто хочу узнать ваше мнение. Что сейчас актуально для создания GUI ? Можно ли предположить, что Win32 API + MFC это отмирающие (знать конечно нужно для общего развития, но не более), а Qt и wxWidgets это актуальное настоящее и за подобными межплатформенными разработками будущее ? Так как, разработчик должен тратить львиную часть своего времени на написание логики, а не на создание визуальных эффектов. Также не стоит ограничивать себя одной платформой, но это опять таки мое скромное мнение.

PS: Есть еще парочка вопросов:
1. Как обстоят дела с СОМ технологиями ?
2. Посоветуйте учебники по написанию сетевых приложений в С++ и C# .

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Маленький офтоп. Для тех, кто мучится с установкой Qt для Visual Studio 2005-2010 на Windows 7:

1. Требования Qt для Windows:doc.qt.nokia.com/...ements-win.html или doc.crossplatform.ru/...ements-win.html . В итоге у вас должно быть: Microsoft’s DirectX Software Development Kit, Microsoft’s Windows Server 2003 R2 Platform SDK, Microsoft Windows SDK for Windows 7, ActivePerl и все обновления для Windows 7 (и в частности для Visual Studio). Также не забываем о Qt Visual Studio Add-in.

2. Установка Qt для Windows: для Visual Studio 2005-2008 doc.qt.nokia.com/...nstall-win.html (русский аналог doc.crossplatform.ru/...nstall-win.html ). Для Visual Studio 2010 www.cyberforum.ru/...read340639.html (использование jom спорно, вполне можно обойтись nmake)

3. Если у вас при посещении Visual Studio Command Prompt есть ошибка «ERROR: Cannot determine the location of the VS Common Tools folder.» Лечится так: в установках переменных окружения в переменную среды PATH добавляем С:\windows\system32

Насчет параметров ввода configure. Если у вас все запросы пункта 1 удовлетворены, то выполняем команду: configure -debug-and-release -opensource -platform win32-msvc2010 (вместо 2010 ваша версия Visual Studio) и не паримся.

Еще раз повторюсь, что очень важно удовлетворить требования Qt для Windows (1 пункт) иначе рискуете получить ошибки на этапе компиляции Qt, а затем долго и нудно искать на форумах решение этих проблем (которое приведет вас в итоге к 1 пункту :-D ).

PS: Надеюсь, что мой «мануал» кому то сэкономит время и нервы : ) .

найти оптимальное решение с прицелом на межплатформенность.

хєх. 15 лет назад я задавался этим вопросом и так ничего не решилось , была надежда на mono и порт Forms но они решили двигаться через gtk, хотя это не с++
с си — wxWidgets внутри очень похож на MFC — дефайны и все такое, хотя некоторые проги выглядят очень даже, таже audacity
qt — ну вы сами знаете,
есть еще xul (недавно выпиляный из файрфокса) — например в VirtualBox пользуется и движек OpenOffice
но вообще выбор зависит от задач — если нужен гуй гармонично вписанный в систему, то тут на родном будет легче, вплоть до написания под каждую ось своей морды (как тот же файрфокс)

если просто более менее — то qt и wx — вполне

Ответы —

1. Как обстоят дела с СОМ технологиями ?

COM технологию уже лет 5-7 как убил и закопал NET, если вы не собираетесь поддерживать старый код, то забудте про нее.

2. Посоветуйте учебники по написанию сетевых приложений в С++ и C# .

Тут больше зависит от системы , где ты буш писать эти приложения. Если под виндой на том же C#, то это набор NET классов и к укровню сокетов тебя фиг кто допустит (при желании конечно можно поковыряться, но это если есть необходимость).
Под тем же линухом, у тебя выбор поболее, ты можешь работать с сетью чрез сетевой интерфейс той же Qt например или мудохаться с уровнем сокетов (сетевой уровень TCP/IP) напрямую, можешь заюзать какуе то модную либу — курл, например, васе зависит от целей и задач.
На счет ГУИ под виндой тут счас ситуация довольно таки запутанная, основной выбор прогерров — C#/NET. Есть люди, которые юзают С++/Qt. Такой свзяки как C++/NET не существуюет...
По последнему пункту — мелкософт, по каким то причинам, поступило довольно по скотски.
а) — Есть висул студия «с поддержкой языка С++»

б) — Есть , довольно мощная, платформа NET

Так вот, в висуале, ты можешь писать на С++, но при этом нельзяю юзать NET либы (тот же гуи)

Или ты можешь писать с использованием NET, но при этом мелкософт тебе подсовывает язык программирования — «C++/CLI» — эт такая хренька, которая, при ближайшем рассмотрении, ничего обзщего (или очень мало общего) имеет с языком программирования С++.

Вот, вобщем таки вот пироги...

COM технологию уже лет 5-7 как убил и закопал NET, если вы не собираетесь поддерживать старый код, то забудте про нее.

Частично не соглашусь, если нужно делать специфические вещи, связаные с виндой, часто без COM не обойтись.

Согласен, но с оговоркой, если уже говорить о специфических вещах, то не обойтись и без WinAPI, все эти — NET, Qt да и то же MFC — это очень модно(это не про МФЦ), красиво и быстро в плане разработки, но когда речь заходит о (очень специфические вещи) то без WiaAPI, в некоторых случаях того же СОМ — не обойтись.

COM технологию уже лет 5-7 как убил и закопал NET, если вы не собираетесь поддерживать старый код, то забудте про нее.

не убил и не закопал. Как ты напишеш например тулбар к IE? .net тут помощет, но без понимания комовских интерфейсов все равно не обойдешся

Спс за информацию, пока буду учить Qt, C#.NET. Потом займусь как нибудь API и COM.

Повеселила фраза про

MFC это творчество душевнобольного человека

.

У меня в универе было точно такое же впечатления после того как посмотрел на него после джавовского свинга. Хотя свинг тоже не особо любят, но по сравнению с MFC это конфетка :)

Когда он только появился — то впечатление было у масс другое :)

Ибо тогда не было Qt (родился на три года позже), не было .Net, не было даже wtl %), а был WinAPI — по сравнению с ним MFC оказался более чем крут.

Ну а сейчас писать на MFC — однозначно изврат. Это то же самое, что пытаться запрячь лошадь в автомобиль. Конечно можно, если постараться....

Ну и микрософт специально и придумала C++/CLI для тех, кто хочет писать на С++, но не хочет учить С# (.Net правда учить все равно придется — но ничего не бывает просто так). Ну или там, где технически С# не подходит для каких либо задач. А вообще С+±нику начать писать на C#/.Net — это достаточно просто. У нас ни у кого из ребят проблем при переходе не было.

Когда он только появился — то впечатление было у масс другое :)
Ибо тогда не было Qt (родился на три года позже), не было .Net, не было даже wtl %), а был WinAPI — по сравнению с ним MFC оказался более чем крут.

Ну а сейчас писать на MFC — однозначно изврат. Это то же самое, что пытаться запрячь лошадь в автомобиль. Конечно можно, если постараться....

Ну и микрософт специально и придумала C++/CLI для тех, кто хочет писать на С++ (все же что-то общее у них есть %), но не хочет учить С# (.Net правда учить все равно придется — но ничего не бывает просто так). Ну или там, где технически С# не подходит для каких либо задач. А вообще С+±нику начать писать на C#/.Net — это достаточно просто. У нас ни у кого из ребят проблем при переходе не было. Да и в принципе можно микшировать языки в проекте — но только если это оправдано.

Я это знаю и радует что прогресс не стоит на месте :)

C++/CLI скорее служит как bridge между native и managed code, потому что от C++ он отличается довольно таки сильно.

Для шаблонного и простого ГПИ подойдет Qt. Но если вам нужен особенный и индивидуальный ГПИ, то однозначно нужно использовать средства платформы: WPF, Cocoa, GTK. WinAPI используется там где есть время на нем писать, в старых проектах и в таких проектах как Evernote. На Qt так же можно писать красивые интерфейсы используя QSS.
В целом вам нужно ориентироваться на рынок на котором вы планируете продавать свои услуги. Если это Украина, то вакансий по Qt вы найдете не много. Насколько я знаю, Qt сейчас используется в Materialize в разработке мед. программ, в GlobalLogic в разработке муз. программы от Avid и все. C# используется практически везде, в том смысле, что вакансий очень много. Так же не мало вакансий требующих знаний Cocoa под Макинтош.

Если вы прицелены на заграницу, то нужно изучать спрос на зарубежных сайтах по работе. Так, Autodesk Maya 2011 портирована на Qt.

GTK+ это в основном ведь Linux ? Для С++ это gtkmm, а С#.NET это Gtk# . В Cocoa на С#.NET это NObjective и Cocoa Sharp. Как тут с ними?

Да, GTK это для Линукса, в основном под оболочку Gnome. В KDE используется Qt.
Я не слышал, что бы кто то использовал NObjective и Cocoa Sharp в серьёзных проектах. Для Мака используется язык Objective C и Сосоа АПИ. C# это только для Виндоуз.

Коментар порушує правила спільноти і видалений модераторами.

C# это только для Виндоуз.

А ещё для Linux и Mac OS...

Давайте будем реалистами: Ц№ не для винды — это извращение. Речь не о языке, а о платформе.

А какая среда разработки под win для qt сейчас популярна ? Кроме Microsoft Visual Studio, целый день убил на установку Qt libraries под vs2005-2010.Так нечего и не вышло ... Как с Qt Creator ?

Вам сложно, потому что вы начинающий. Когда разберетесь, то сможете за 10 минут настроить Visual Studio для работы с библиотеками Qt. Не забывайте про Qt Visual Studio Add-in. Читайте, разбирайтесь, в интернете много информации. Правда в основном на английском.
Qt Creator, по-моему, еще редко где используется. В основном в небольших открытых проектах.

У меня траблы на этапе компиляции библиотеки, в основном трабла с qmake. Я все форумы обегал в писке решения, буду изучать qt в Qt Creator.

а зачем ее компилировать? там есть готовые бинарники.

скомпилить новичку ее <b>полностью</b> будет очень тяжело. Например понадобится скачать и поставить либы/хиадере к mysql чтобы соответсвующий коннектор скомпилить, еще понадобится DirectX. Вообщем нужно ставить сдк и не парится.

Ну я качаю Qt libraries 4.7.4 for Windows, далее все как в инструкции doc.qt.nokia.com/...nstall-win.html . Все форумы уже обходил и разные комбинации попробовал. Итог один — Building qmake failed, return code 2 . В конечном счете скачал их Qt SDK и учу Qt Creator.

Изначально ругается на Microsoft’s DirectX Software Development Kit, хотя он у меня стоит. Как и MW SDK 7.1 и все возможные обновления, даже ActiveState Perl поставил ...

почитай доку, как это билдать под видной. Думаю тебе достаточно будет запускать configure не с параметрами по-умолчанию, а отключить phonon. Хотя сакральный смысл "побилдать"в ситуации когда доступны все нужные библиотеки до меня не доходит.

Насколько я знаю, Qt сейчас используется в Materialize в разработке мед. программ

Вы правы:) Год назад наша команда внедрила Qt в проект(www.materialise.com/mimics) над которым я сейчас работаю. На данный момент мы единственная команада в Materialise, котрая использует Qt и уже сейчас к нам подходят люди с других команд и интересуются Qt, так как эта технология полностью себя оправдала:
1) хорошо продуманный дизайн и архитектура
2) по сравнению с MFC экономит много времени при создании GUI
3) можно без проблем миксить Qt и MFC, сажать Qt контролы на MFC и наоборот. Для нас это был очень важный критерий так как приложение реализовано на MFC и его расширениях, переписать все на Qt сразу просто нереально.
4) Qt это не только GUI билиотека — есть функционал по работе с базамы данных, сетями, мультимедиа и т.д. Вообщем еще много очень вкусного.
5) Отличная документация
6) Можно бесплатно использовать в комерческих целях с одним ограничением: можно использовать только динамические библиотеки Qt(я так понимаю своего рода реклама) и нельзя изменять исходники. Нашему продукту эти ограничения абсолютно не мешают. Вероятность того, что нужно что-то менять или фиксить в Qt очень маленькая.

7) Без проблем интегрируется в MS Visual Studio 2005 — 2010

Вообще мы рассматривали много технологий для ускорения разработки GUI и Qt оказался лучшим выбором.

Дать простой ответ на ваш вопрос необычайно сложно. Тут дело не в выборе конкретного средства разработки UI, а скорее, это выбор вашего будущего пути, как программиста.

C++ до сих пор используется для разработки кроссплатформенных приложений и приложений, которым нужен полный контроль над памятью и другими ресурсами системы. Скорость работы приложения — вот главный критерий выбора С++ как основного языка разработки. Кроме того, существует множество успешных проектов, которые создавались заокеанскими разработчиками около 8 — 10 лет назад. Тогда альтернативы С++ не было, но многие из этих проектов сейчас передаются в Украину на аутсорс, так что С++ разработчики будут ценится еще долго.
Если вы сконцентрируетесь на изучении С++, и конкретно под Windows, то вам будет необходимо хорошо владеть WinAPI и COM. Скорее всего это понадобится и для кроссплатформенной разработки, только вам еще будет необходимо знать и устройство Linux\Mac.
Про MFC и WTL может пока забыть, если понадобится — то это дело учится довольно легко.

Чуть не забыл, на С++, вам придется писать сравнительно много кода, чтобы добиться конкретного результата.

.NET (C#) и Java — эти языки созданы для упрощения программирования бизнес задач. Позволяют добиваться необходимых задач меньшим количеством строк кода и без изобретения велосипедов. GUI приложения на Java выглядят довольно плачевно. На C# вы можете использовать технологии WinForms или WPF, которые позволят быстро создавать десктопные приложения. При помощи WPF вы можете очень просто делать чудеса. Но, гарантированно работать это будет только под Windows.
.NET (ASP.NET) и Java одинаково хороши на серверной стороне. Например, серьезные банковские приложения, использующие несколько серверов, предпочитают работать больше с Java, но и .NET тут не уступает, и все больше и больше серьезных корпоративных приложений пишутся на .NET.

Но, «порог входа» в эти технологии довольно высок. Именно поэтому очень много вакантных мест и специалисты по этим технологиям получают в среднем высокие зарплаты.

Ну, и если мы говорим о серверных приложениях, то тут необходимо упомянуть такие языки, как Perl, PHP, Python, Ruby. В основном они используются для разработки веб приложений и делают веб разработку простой. Тут то и используется HTML+Javscript+CSS для UI.

Я бы посоветовал вам попробовать все по чуть-чуть и понять что вам больше по вкусу.

Все верно, только вы забыли про Silverlight. В принципе, это тот же WPF, только для выполнения в браузере. И в отличие от WPF, поддерживается, хотя и полуофициально, на других системах тоже (по крайней мере, полная поддержка SL приложений на Linux это их декларируемая цель). Также есть возможность делать Out-of-browser приложения (не требуют браузера).

Ну, тогда еще стоит упомянуть про Adobe Flex и Adobe Air. Хорошо работает на всех платформах, кроме iPhone ;).
Есть рынок разработки. Только вот, Adobe Flex и Adobe Air обычно идет с серверной Java (J2EE). Но, можно и приложения для вконтактов и фейсбуков писать, что успешно люди и делают.

для создания GUI на данный момент актуальны HTML+CSS+JavaScript

Серьезно, посмотри в сторону HTMLayout, если десктопные приложения интересуют

Хехе, тоже самое хотел написать ;-)

С Win32 API обязательно столкнешься, если будешь делать что-то нестандартное под винду. Правда, я не знаю, как у Qt с интероперабельностью с платформами

Підписатись на коментарі