Что лучше для студенческого программирования на С++ учиться для написания графического интерфейса: С# vs QT?
Я преподаватель (преподаватель) CS в университете. Курс основан на алгоритмах программирования Cormen и Knuth и студентов в С++. Но иногда хорошо показать, как работает алгоритм или просто результат задачи через графический интерфейс. Также, на мой взгляд, очень важно иметь возможность писать полные программы. У них будут курсы по графическому интерфейсу, но через три года, а затем, по сути, до окончания обучения. Я думаю, что они должны иметь возможность писать простые графические приложения раньше. Поэтому я хочу научить их этому.
Как вы думаете, что более полезно для них учиться: программирование GUI с QT или запись GUI на С# и вызов неуправляемой библиотеки С++?
Обновить.
Для разработки приложений на С++ студенты используют MS Visual studio, поэтому С# уже установлен. Но QT AFAIK также может быть интегрирован в VS.
У меня есть следующие плюсы для С# (некоторые из них были предложены там в ответах):
- Необходимость создания дополнительного слоя.
Это больше работает, но это заставляет вас
четко указать контракт между
GUI и обработки данных. Граница между GUI и алгоритмами становится очень понятной.
- Он более популярен среди работодателей. По крайней мере, в России, где мы живем. Это довольно типично для написания критически важных для производительности алгоритмов на С++ и PInvoke из хорошо выглядящего веб-сайта С#/ASP.Net. Возможно, это не так широко распространено в остальном мире, но в России Windows очень популярна, особенно в компаниях и корпорациях по некоторым причинам, поэтому большинство приложений b2b являются приложениями Windows.
- Быстрое развитие. Это намного быстрее
для кода в .Net, затем в С++ из-за
много причин.
И все дело в том, что это новый язык со спецификой для студентов. И беспорядок с вызовами вызовов в библиотеку.
Ответы
Ответ 1
Лучше ознакомиться с учениками с Qt, так как Qt на самом деле С++. С# - совершенно другой зверь, и если вы используете С#, вы, скорее всего, сбиваете с толку своих учеников о том, что такое Microsoft или С# -специфичный против того, что на самом деле определено в стандарте ISO С++, тогда как это будет более очевидным с просто С++. Кроме того, Qt и С++ переносимы, поэтому ваши ученики, которые используют Mac OS X или Linux, будут благодарны вам за выбор кросс-платформенной платформы (Qt также работает в Windows); тогда как если вы используете С#, вы заставите своих учеников использовать Windows (да, есть Mono, но он не работает почти так же, как Qt делает на разных платформах).
Вы также можете быть заинтересованы в использовании С++ Project Template, который обеспечивает достаточную инфраструктуру для devleoping приложения Qt GUI на С++ с использованием CMake и имеет был протестирован и проверен для работы в Mac OS X и Ubuntu Linux (и, если я получу обратную связь в Windows, я гарантирую, что он там тоже работает). Шаблон включает в себя код, который вызывает графический интерфейс "Hello World" в Qt при запуске с параметром командной строки "--gui".
Ответ 2
Я бы порекомендовал Qt просто потому, что это С++, а не С#.
Взаимодействие между С++ и С# может быть беспорядочным и, на мой взгляд, отвлекает студентов от объекта упражнения (алгоритмы, как вы сказали).
Ответ 3
Qt-P/Invoke для использования С++-библиотеки из С# добавляет целый "новый уровень глупостей", о котором вы не хотите даже думать. Если вы собираетесь использовать .NET, возможно, стоит рассмотреть возможность использования С++/CLI, который значительно упрощает компоновку управляемого и родного кода.
Ответ 4
Я бы использовал С# для материала GUI.
Есть еще несколько заданий С#, кроме С++, с использованием Qt, поэтому почему бы не подготовить их к тому, с чем они, скорее всего, столкнутся после их окончания?
Одна из проблем, с которыми я часто встречалась в академических кругах, не учит тому, что используется в реальном мире. Конечно, все это просто классно, и мне это очень нравится. Опыт использования в реальном мире после школы будет моим приоритетом.
Кроме того, я не думаю, что просить нескольких программистов, как правило, лучший источник советов по этому вопросу. Я бы посмотрел, какие технологии большинство компаний нанимают для вашего местоположения, очень вероятно, что для большинства настольных графических интерфейсов это будет .NET или Java.
Ответ 5
запись GUI в С# и вызов неуправляемой библиотеки С++, потому что VS - хорошая стартовая IDE, а .NET - самый полный набор доступных библиотек. Это предполагает, что ваши ученики имеют доступ к компьютерам Windows. Если они находятся на Linux, QT будет способ пойти.
Ответ 6
Здесь дикая идея, (re) записывает алгоритм в С# для приложения GUI. Это служит слишком целям: 1) он аккуратно оборачивает все промахивание с помощью P/Invoke, С++/CLI или COM только для рисования симпатичных изображений и 2) в отличие от использования Qt, это дает вам возможность подчеркнуть различия между алгоритмом, программой и язык программирования.
Ответ 7
Я не думаю, что имеет смысл начинать создавать неуправляемые/управляемые гибридные приложения С++/С# здесь.
Для обучения это, безусловно, будет проще, если ученикам не нужно изучать новый язык программирования для Gui. Также взаимодействие между управляемым и неуправляемым кодом и различными типами на разных языках усложнит ситуацию без необходимости. Много времени и усилий будет потрачено впустую на эти темы, не помогая никому изучить алгоритмы, которые являются темой курса.
Также для полезности "реальной жизни" я думаю, что ясно, что только очень немногие проекты будут использовать гибрид С++/С#. Если вы сделаете свой графический интерфейс в С#, вы также будете выполнять логику, лежащую в основе этого языка. Я не вижу, что можно получить от создания графического интерфейса приложения С++ на С#.