29 votes

Programmation Qt : Plus productif en Python ou en C++ ?

J'essaie de me plonger dans Qt, mais je n'ai pas encore réalisé de grand projet avec. J'utilise actuellement Python, mais j'ai réfléchi : quel est le meilleur langage à utiliser en termes de productivité du programmeur ?

Dans la plupart des comparaisons entre les langages, Python est la réponse évidente, car vous n'avez pas à vous occuper de la gestion de la mémoire et de tout le reste.

Cependant, avec Qt, je n'en suis pas si sûr. Il fournit suffisamment de fonctionnalités ajoutées au C++ pour que (d'après ce que je peux dire) une ligne de code Python soit à peu près égale à une ligne de code C++ la plupart du temps (à l'exclusion de certaines choses supplémentaires comme les définitions de classe et les composants de structure). Qt fait presque toute la gestion de la mémoire pour vous, tant que vous vous en tenez à ses classes, et fournit des équivalents aux jolis conteneurs que vous trouveriez en Python.

J'ai toujours préféré les langages à typage statique, mais j'ai pris le train de Python pour diverses raisons. Cependant, si la productivité des programmeurs est similaire à celle du C++, il se peut que je retourne dans cette voie pour ses autres avantages : un code plus efficace et moins de dépendances à installer par les utilisateurs.

Qu'en pensez-vous ?

19voto

stinky472 Points 4864

Si c'est l'un ou l'autre, je suggérerais en fait Python, bien que je sois un enthousiaste du C++. Avec le code Python, vous n'avez pas à vous soucier du MOC, de la portabilité, des temps de construction, etc. Il suffit de comparer le travail nécessaire à l'implémentation d'un slot QT en C++ par rapport à PyQT ou PySide, par exemple. Je trouve que c'est beaucoup moins pénible de traiter les widgets de cette façon (bien plus productif). Vous pouvez toujours invoquer du code C++ à partir de Python dans les cas où vous avez besoin de performances supplémentaires.

Si vous utilisez une combinaison, envisagez d'étendre Python plutôt que de l'intégrer. Python est généralement mieux adapté pour intégrer du code C/C++ que pour être intégré dans un système C/C++. C'est également plus logique, car les applications sont généralement composées d'un code beaucoup plus banal et non critique en termes de performances que de code critique en termes de performances. Ainsi, écrire votre application principalement comme une application Python à laquelle sont attachées des fonctions C/C++ correspond mieux à ce type de conception de système.

15voto

Anurag Uniyal Points 31931

Mon opinion (ayant essayé C++ et Python en général et spécifiquement dans le cas de Qt) : Python l'emporte toujours en termes de "productivité du programmeur" et de "tranquillité d'esprit". PyQt représente très bien Qt et donc la question ne se pose pas de savoir si Qt avec Python ou Qt avec C++. En général, Python est plus productif, sauf si vous avez besoin de vitesse ou de quelque chose qui n'est pas disponible en Python.

Meilleur moyen pour arriver à la réponse, il faudrait écrire un projet simple d'abord en C++, puis le même projet en python et comparer, mais cela pourrait être biaisé en faveur de python car après avoir codé le projet une fois, vous pourriez le trouver facile en python, alors essayez aussi un autre projet et faites-le d'abord en python, puis en C++.

6voto

SystematicFrank Points 3014

Définitivement Python.

Oui, les gens diront sans raison que Python est plus productif. Certaines réponses mentionnent que vous n'avez pas besoin de recompiler. Je vais vous donner quelques détails supplémentaires

  1. Python est une couche d'abstraction par rapport à C++, ce qui vous permet de penser et d'exprimer vos conceptions avec moins de code. Votre programme ne s'exécutera peut-être pas aussi rapidement, mais vous êtes sûr de pouvoir exprimer plus vite en code ce que vous voulez.

  2. Le cas le plus courant est celui où vous lancez votre application, chargez quelques fichiers, configurez l'environnement et ouvrez un dialogue. Là, vous remarquez qu'un bouton ne fonctionne pas ou n'est pas là où il devrait être. C'est à ce moment-là que la plupart des gens ferment l'application, lient un emplacement ici, un signal là... et démarrent l'application, chargent les fichiers, configurent... Avec Python, vous écrivez simplement le code et relancez le dialogue, pas l'application entière. Je ne sais pas pour vous, mais ce type de tâche est ce que je fais la plupart du temps avec Qt.

  3. Python vous offre quelque chose que le C++ n'a pas : l'introspection. Vous pouvez explorer un programme en cours d'exécution et obtenir des informations sur ses composants au moment de l'exécution. Qt vous offre partiellement cela. Vous avez cette couche MOC où des méta-propriétés et des méta-informations peuvent être attachées aux objets Qt. Toutes les parties d'un programme Python peuvent être introspectées. Beaucoup de personnes déboguant du code Python, ou essayant de comprendre comment il fonctionne, sont accros à cela pour une bonne raison

4voto

Alexandre C. Points 31758

Avec Python, vous n'avez pas besoin de construire votre projet. C'est un gain de temps suffisant, je suppose. Et les bindings Pyqt sont géniaux. Je suis définitivement plus efficace avec pyqt qu'avec qt/C++.

3voto

lamirap Points 125

L'utilisation de python ou de C++ dépend plus de l'application que vous construisez et pas tellement de Qt. Si vous créez une application qui nécessite beaucoup de ressources, comme le processeur et la mémoire, le C++ est un meilleur choix. D'autre part, si votre application est davantage axée sur l'interface utilisateur, python offre de nombreux autres avantages en termes de développement rapide et de bibliothèques riches.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X