Программирование GUI С++ или С#
Я беру занятия по программированию в университете. Я просто взял структуры данных, и я почти готов к разработке шаблонов. С классом шаблонов проектирования инструктор позволяет нам выбрать, какой язык использовать, и какую IDE использовать в наших лабораториях. Поскольку я знаю С++, я использовал это. Большинство классов использовали С#, а некоторые использовали java..
Ну, я только что подписался на графический интерфейс spring и его один и тот же учитель, и он сказал, что мы можем использовать все, что захотим. Поскольку, я никогда не использовал С#, возможно, лучше использовать С++? Я изучил использование QT4, но я не знаю, как это тяжело, и насколько это действительно помогает? Поскольку, там не будет много лекций.
Я рассматриваю использование С#, поскольку я взял классы в VB.NET и использовал winforms совсем немного. Однако, я бы хотел использовать С++, что вы думаете? Является ли С++ gui тем, что я могу использовать в будущем в реальном мире? или мне лучше попробовать учиться С#
Я хотел бы придерживаться С++ в моей карьере, хотя...
Я не хочу задерживаться в обучении С# и графическом интерфейсе одновременно.
Является ли QT4 хорошим способом?
Ответы
Ответ 1
qt не так сложно работать. Я пробовал некоторые комплекты инструментов gui для С++, и это мой опыт в плане С++
Qt
Для разработки С++ и gui я бы в подавляющем большинстве одобрил Qt вместо альтернативных библиотек, таких как win32 api, классы фундамента Microsoft и т.д.
Преимущества
- qt является кросс-платформой и может использоваться для окон, linux, symbian, windows ce, mac osx
- qt не так сложно учиться. Если вы понимаете основы классов С++ и некоторые шаблоны программирования
- qt используется для профессионального создания guis. Я точно не помню, но я думаю, что autodesk maya и adobe photoshop могут использовать qt для своего gui's
- qt4 имеет больше, чем просто GUI-программирование, то есть он имеет библиотеки для сетей, интернационализации, фононов для видео и аудио, анимации и т.д. и т.д.
Недостатки
- это не родная библиотека, поэтому ваше приложение будет больше, чем если бы вы использовали win32 api, но даже тогда я все еще думаю, что это меньше, чем время выполнения .net
Чтобы начать обучение qt сейчас
- найти книгу программирования С++ gui с использованием qt4 второго издания. или другой хороший ресурс
- скачать qt sdk для визуальной студии 2008
- загрузите добавление visual studio qt для визуальной студии 2008
- создайте новый проект qt4 и скомпилируйте и запустите свой первый проект
С#
Я должен с самого начала заявить, что я не разработчик С#, но я знаю, что у него есть хорошие вещи.
Известные преимущества
- позволяет использовать формы Windows, wpf, linq (языковой интегрированный запрос) и т.д.
- wpf - это то, что вас больше всего интересует как разработчик С#
Недостатки
- как и все языки .net, он все еще медленнее, чем собственные приложения, сделанные в С++
- не переносится в разные операционные системы, такие как mac osx, linux (но помните, что САМЫЕ ПОЛЬЗОВАТЕЛИ (90%) ОСНОВАНЫ ОКНАМИ)
- Если вы нацеливаете пользователей на windows xp, вам придется неудобно их загружать .net, чтобы ваше приложение работало. Для меня это самый большой недостаток языков .net, поскольку большинство пользователей, которых я знаю, имеют медленные интернет-соединения.
Чтобы начать изучение разработки gui с помощью С#
- найдите открытую презентационную базу окон книги или любую хорошую книгу С#/wpf.
Предупреждение
- Я не эксперт в С++ или С#, и просто даю свое мнение или опыт.
- У меня ограниченный опыт работы в С#
Ответ 2
Я рассматриваю использование С#, поскольку я взял классы в VB.NET и использовал winforms совсем немного. Тем не менее, я бы хотел использовать С++, каковы ваши мысли?
Если вы хотите использовать Windows Forms и С++, тогда вы можете использовать С++/CLI (ранее известный как Managed С++). Это использует расширения для С++ для поддержки .NET и является единственным языком .NET, который позволяет использовать смешанный CLI и собственный код, поэтому, как только вы приклеиваете код интерфейса к вашему коду приложения, вы можете использовать только ISO С++.
Тем не менее, за исключением тех случаев, когда я реализую интерфейс для существующего кода на С++, мне было проще просто изучить С#, который разработан с нуля, чтобы быть языком .NET, поэтому он, как правило, гораздо удобнее.
В арене ISO С++ варианты включают Qt и WxWidgets, оба из которых являются кросс-платформенными и хорошо поддерживаются книгами и онлайновой информацией и сообществами.
Ответ 3
Я использовал WxWidgets до (С++). Это легко и весело. Afaik, значительная часть дизайна пользовательского интерфейса выполняется с помощью редакторов дизайна или различных импортеров XML/LUA, поэтому набор инструментов, который вы используете, по сути, не имеет особого значения, потому что код, управляемый событиями, будет очень похож на почти все.
Учебники WxWidgets великолепны, и форумы полезны. Если вам интересно, как WxWidgets сравнивается с другими инструментами, у них есть отличная страница wiki, посвященная этому
Ответ 4
Другой вопрос, ответы которого могут обсуждаться на вечность. По моему опыту, я бы сказал, что оба языка имеют одинаково зрелые инструментальные средства для создания пользовательских интерфейсов.
Следовательно, для любого проекта это зависит только от ваших предпочтений. Как правило, разработка пользовательского интерфейса с использованием .NET проще из-за фантастической поддержки RAD, предоставляемой Visual Studio, которая, к сожалению, не обеспечивает такого уровня сложности для проектов на С++.
Сказав, что имейте в виду, что пользовательские интерфейсы существуют во всех операционных системах; а не только Windows. Следовательно, вы должны сосредоточиться на основных принципах программирования GUI и относиться к языку только как к способу исполнения своих мыслей.
Следовательно, если вы действительно хотите программировать пользовательский интерфейс на всех платформах; то С++ - лучший выбор (конечно, в эти дни у вас есть Mono, но не уверен, есть ли у них инструментарий на основе QT, на который вы смотрите).
Довольно глоток - но сделать это коротко:
Это все о вашем выборе и обучении. Если вы хотите изучить С# и использовать его, продолжайте. Но если вам нравится С++, вы все равно можете использовать его, и в С# ничего не может быть сделано, но не может быть выполнено с помощью С++.
Ответ 5
Ну, я не мог бы дать лучший ответ, чем Dr.Deo, но я могу поделиться своим домом. Раньше я делал много графического программирования (более 5 лет назад, с Borland VCL в Delphi или С++). Недавно мне пришлось создать графический интерфейс для небольшого проекта, поэтому я пошел на Qt4. Я смог почти полностью завершить графический интерфейс за один день без предварительного знания Qt4 (конечно, это был простой графический интерфейс с одним окном). Я нашел его очень простым в использовании и быстрому обучению. Если у вас есть какой-либо GUI-опыт, он будет очень интуитивным. Что касается знания С++, то оно минимальное. Вы должны быть довольны справедливой дозой наследования и полиморфизма, но это очень характерно для инструментов GUI, и это действительно просто базовое знание ООП на С++.
Я думаю, что некоторые люди уже говорили о том, чтобы быть кросс-платформенными. Это будет все более и более важным в будущем, поскольку альтернативы Windows становятся основными (в основном, все люди, с которыми я работаю, либо имеют Mac, либо используют дистрибутив Linux), и поскольку появляется больше продуктов между телефоном и планшетным ПК.
И, в любом случае, язык, который вы используете для программирования графического интерфейса, на самом деле не так важен, это набор инструментов. Я думаю, Qt4 очень полна. Это также избавит вас от необходимости взаимодействовать с вашим существующим кодом (не говоря уже о обучении С#). Наконец, Qt4 очень удобно использовать с любой системой IDE или сборки (если вы не хотите переключать свой код на qmake и/или Qt-Creator).
Ответ 6
Это зависит от того, что вы пытаетесь изучить.
Если вы хотите узнать, как работают библиотеки GUI, а не как их использовать, вы хотите посмотреть на простой Win32.
Если вы хотите узнать, как их использовать, вы обнаружите, что С# или VB с WinForms легче всего подбирать. И, конечно же, они позволяют использовать великолепного дизайнера.
Не беспокойтесь о проблемах, таких как кросс-платформа, пока вы изучаете основы! Вы должны сосредоточиться на принципах обучения, а не на конкретных особенностях.
Ответ 7
Как сказал @David Heffernan, не беспокойтесь о кросс-платформе, если вы не должны ее иметь (преждевременная оптимизация). Существует плата за такую гибкость, которую предлагают большинство наборов кроссплатформенных платформ. Кроме того, благодаря моему многолетнему опыту как разработчика, так и пользователя, инструментальные средства для собственных плат обычно предлагают лучший опыт работы с конечным пользователем (часто меньше сюрпризов о том, что и как пользователю разрешено и не разрешено делать с каждым элементом управления или поверхностью).
В учебной среде вы хотите рассмотреть, что вы надеетесь выполнить в семестре. Типичный трехмесячный график семестра с последующими вехами предполагает, что вам понадобятся низкие трения. Изучение библиотеки gui может стать отличным достижением, но вы, вероятно, захотите познакомиться с по крайней мере средой или контекстом, прежде чем приступить к работе, чтобы своевременно завершить промежуточные задания: предположительно взаимодействия и вообще общий пользовательский интерфейс лежат в основе фокуса класса.
По этим причинам я бы подумал о том, чтобы придерживаться С++, поскольку у вас есть смысл для парадигмы и основ языка и инструментов. Но, поскольку это учебная среда, я бы сильно подумал о чем-то менее распространенном, но созрел с потенциалом в библиотеке. Я мог бы посмотреть на аппаратные ускоренные библиотеки окон, либо на основе xgl, либо на OpenGl, если они нацелены на unix/linux или Windows Presentation Foundation, если они предназначены для Windows.
Ответ 8
Для программирования графического интерфейса вы можете использовать Visual С++.
Трудно закодировать все в VС++, чтобы люди шли на MFC.
MFC обеспечивает 100 классов, которые значительно облегчают жизнь. Итак, все, что вам нужно сделать, это изучить основы VС++ и изучить MFC.