Программирование на Qt: более продуктивно на Python или C ++? - PullRequest
38 голосов
/ 29 июня 2010

Пытаюсь погрузиться в Qt, но пока не сделал большой проект с ним.В настоящее время использую Python, но я подумал - какой язык лучше использовать с точки зрения продуктивности программиста?

В большинстве сравнений между языками Python является очевидным ответом, потому что вы непридется возиться с управлением памятью и всем этим.

Однако с Qt я не уверен.Он предоставляет достаточно дополнительных возможностей для C ++, что (из того, что я могу сказать) строка кода Python в большинстве случаев примерно равна строке кода C ++ (исключая некоторые дополнительные вещи, такие как определения классов и компоненты структуры).Qt выполняет почти все управление памятью для вас, пока вы придерживаетесь его классов, и предоставляет эквиваленты красивым контейнерам, которые вы найдете в Python.

Я всегда предпочитал статически типизированные языки, но получилподножка Python по разным причинам.Однако, если производительность программиста схожа с C ++, я могу воспользоваться другими преимуществами - более эффективным кодом и меньшим количеством зависимостей для установки пользователями.

Мысли?

Ответы [ 5 ]

25 голосов
/ 29 июня 2010

Если бы один или другой, я бы на самом деле предложил Python, несмотря на то, что он энтузиаст C ++.С кодом Python вам не нужно беспокоиться о MOC, переносимости, времени сборки и т. Д. Просто сравните работу, связанную с реализацией слота QT в C ++, с PyQT или PySide, например, я считаю, что это намного меньше болиработать с виджетами таким образом (гораздо большая производительность).Вы по-прежнему можете вызывать код C ++ из Python в тех случаях, когда вам нужна дополнительная производительность.

Если вы используете комбинацию, рассмотрите возможность расширения Python, а не встраивания.Python, как правило, лучше подходит для встраивания кода C / C ++, чем для встраивания в систему C / C ++.Это также имеет больше смысла, так как приложения, как правило, состоят из гораздо более обыденного, не критичного к производительности кода, чем критичный к производительности, поэтому написание вашего приложения в основном в виде приложения на Python с присоединенными к нему функциями C / C ++ соответствует этому видудизайна системы лучше.

22 голосов
/ 29 июня 2010

Мое мнение (опробовав C ++ и Python в целом и особенно в случае Qt): Python всегда побеждает с точки зрения «производительности программиста» и «душевного спокойствия». PyQt очень хорошо представляет Qt и, следовательно, не остается вопроса «Qt с Python» или «Qt с C ++», в общем случае Python более продуктивен, если вам не нужна скорость или что-то, чего нет в Python.

Лучший способ для вас получить ответ - написать простой проект сначала на C ++, а затем тот же проект на python и сравнить, но это может быть смещено в сторону python, как после кодирования проекта один раз. в Python вам может быть легко, поэтому попробуйте другой проект и сначала сделайте это в Python, а затем в C ++.

8 голосов
/ 18 сентября 2011

определенно Python.

Да, люди скажут, что Python более продуктивен без причины.В некоторых ответах упоминается, что вам не нужно перекомпилировать.Я дам вам более подробную информацию

  1. Python - это один уровень абстракции над C ++, так что вы можете думать и выражать свои проекты с меньшим количеством кода.Ваша программа может работать не так быстро, но вы уверены, что вы выражаете в коде то, что вам нужно.

  2. Наиболее распространенный случай - когда вы запускаете приложение, загружаете некоторые файлы, настраиваете среду иоткрыть диалог.Там вы заметили, что кнопка не работает или где она должна быть.Это тот момент, когда большинство людей закрывают приложение, связывают один слот здесь, один сигнал там ... и запускают приложение, загружают файлы, настраивают ... с помощью python вы просто пишете код и снова запускаете диалог,не все приложение.Я не знаю как вы, но этот тип задач - то, что я делаю большую часть времени с Qt

  3. Python дает вам то, чего нет у C ++: самоанализ.Вы можете исследовать работающую программу и извлекать информацию о ее компонентах во время выполнения.Qt дает вам частично это.У вас есть тот слой MOC, где мета-свойства и мета-информация могут быть присоединены к объектам Qt.Все части программы на Python могут быть подвергнуты интроспекции.Многие люди, отлаживающие код Python или пытающиеся понять, как он работает, увлекаются этим по уважительной причине

4 голосов
/ 29 июня 2010

С Python вам не нужно создавать свой проект.Думаю, хватит экономить время.И привязки Pyqt потрясающие.Я определенно более эффективен с pyqt, чем с qt / C ++.

3 голосов
/ 29 июня 2010

Используете ли вы Python или C ++, больше зависит от приложения, которое вы создаете, и не столько от Qt. Если вы создаете приложение, которое требует значительных ресурсов и требует много ресурсов, таких как процессор и память, C ++ будет лучшим выбором. С другой стороны, если ваше приложение в большей степени ориентировано на пользовательский интерфейс, python предоставляет множество других преимуществ в плане быстрой разработки и расширенных библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...