Что лучше для студенческого программирования на С++ учиться для написания графического интерфейса: С# 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. Также взаимодействие между управляемым и неуправляемым кодом и различными типами на разных языках усложнит ситуацию без необходимости. Много времени и усилий будет потрачено впустую на эти темы, не помогая никому изучить алгоритмы, которые являются темой курса.

Также для полезности "реальной жизни" я думаю, что ясно, что только очень немногие проекты будут использовать гибрид С++/С#. Если вы сделаете свой графический интерфейс в С#, вы также будете выполнять логику, лежащую в основе этого языка. Я не вижу, что можно получить от создания графического интерфейса приложения С++ на С#.