web-dev-qa-db-fra.com

Programmation de bureau multiplateforme: C ++ vs Python

D'accord, pour commencer, j'ai de l'expérience en tant qu'obj-C/Cocoa amateur et Ruby w/Rails programmer. Ce sont excellents, mais ils ne sont pas vraiment utiles pour écrire des applications multiplates-formes (espérons que GNUStep sera un jour suffisamment complet pour que la première soit multi-plateforme, mais ce jour n'est pas aujourd'hui).

Le C++, d'après ce que je peux en déduire, est extrêmement puissant mais aussi un énorme monstre laid qui peut prendre une demi-décennie ou plus à maîtriser. J'ai également lu que vous pouvez très facilement non seulement vous tirer une balle dans le pied, mais en souffler toute la jambe car la gestion de la mémoire est entièrement manuelle. Évidemment, tout cela est assez intimidant. Est-ce correct?

Python semble fournir la majeure partie de la puissance de C++ et est beaucoup plus facile à récupérer au détriment de la vitesse. Quelle est la taille de ce sacrifice? Est-il significatif ou peut-il être ignoré?

Qu'est-ce qui me permettra d'écrire des applications rapides, stables et hautement fiables dans un délai raisonnable?

En outre, est-il préférable d'utiliser Qt pour votre interface utilisateur ou de conserver des frontaux natifs séparés pour chaque plate-forme?

EDIT: Pour plus de clarté, il y a deux types d'applications que je veux écrire: l'une est une interface de base de données extrêmement conviviale et pratique et l'autre, qui viendra sans doute beaucoup plus tard, est un éditeur de monde 3D.

11
John Wells

C/C++ est rapide. La réalité est que la plupart des applications n'auront pas besoin de cette performance avec l'état des matériels actuels. La manière habituelle est de développer l'application dans un langage de haut niveau, comme python, que d'optimiser en cas de besoin avec des langages de niveau inférieur, comme C/C++.

Python vous donnera une grande augmentation de la productivité, il est facile à apprendre et raisonnablement rapide. Il y a Cython , que vous pouvez utiliser pour écrire des extensions C à utiliser dans votre application python avec une syntaxe de type python pour accélérer les goulots d'étranglement).

Pour les applications GUI standard, python peut vous donner suffisamment de performances. Et python a quelque chose de très cool appelé Kivy , un framework GUI qui fonctionne sur Mac, Windows, Linux, Android et iOS, et prend en charge le multi-touch. La partie bonus est que les parties critiques de performance sont optimisées avec C, en utilisant Cython.

9
Hakan Deryal

J'irais avec Python, car cela vous donne une grande augmentation de la productivité. Vous pouvez toujours écrire des parties de votre application qui ont besoin de vitesse en C++, il existe un projet Cython qui permet d'utiliser les bibliothèques C++ directement en Python. Si vous êtes préoccupé par la sécurité de vos sources, Cython peut également vous aider, vous pouvez l'utiliser pour compiler votre code python normal en code C++).

Je recommanderais d'intégrer Chrome et d'utiliser des technologies telles que: HTML5 + CSS3 + Javascript + JQuery + Canvas pour l'interface utilisateur.

Il existe un cadre qui facilite l'intégration de Chrome dans votre application C++, il s'appelle CEF - Chromium Embedded Framework . Il prend en charge Windows, Linux, Mac OS.

Si vous aimez Python, jetez un œil à CEF Python , c'est un projet qui fournit python liaisons pour le framework CEF (en utilisant Cython CEF python ne prend actuellement en charge que Windows, mais il existe des plans pour d'autres systèmes d'exploitation).

Voici une liste des applications qui ont réussi avec CEF (tirées de ici ):

  • Adobe Brackets - éditeur de code pour le web
  • Adobe Edge - outil de création multimédia
  • AppJS - créer des applications de bureau à l'aide de Node.js
  • AOL Instant Messenger - le client Windows utilise CEF
  • Cubiez - intègre votre contenu préféré dans le bureau
  • Desura - plateforme de jeu en ligne
  • Dish World IPTV - plateforme vidéo en streaming
  • Evernote - logiciel de prise de notes
  • ExeOutput - vous permet de déployer des applications html5/php en tant qu'applications de bureau
  • GitHub pour Windows - Logiciel client GitHub pour Windows
  • Janetter - Logiciel client Twitter
  • mChef - plug-in de navigateur mIRC
  • MediaMan - logiciel organisateur
  • MetaVR - logiciel de simulation géographique
  • MTG Studio - logiciel d'organisateur de jeux
  • OpenSpace3D - Plateforme de développement 3D
  • Rdio - plateforme de musique en streaming
  • Spotify - plateforme de musique en streaming
  • Steam Client - plateforme de jeu en ligne
  • Tencent QQ - programme de messagerie instantanée et navigateur Web
  • Trend Micro - logiciel de sécurité Internet
  • WBEA Desktop - vous permet de déployer des applications html5 en tant qu'applications de bureau

Jetez également un œil à cette entrée de blog: Création d'une application de qualité bureau sur les technologies Web - Équipe de rédaction de supports expliquant comment ils l'ont construite à l'aide de cadre CEF et de technologies Web telles que: - jQuery , Bootstrap , LESS CSS , requireJS , Jasmine for Unit testing , - JSlint .

Avertissement: je suis l'auteur du projet CEF Python.

5
Czarek Tomczak

La manière Qt de C++ est excellente et propre, alors s'il vous plaît, laissez tomber la partie "laid monstre", je les ai essayés tous les deux, et personnellement, je suis beaucoup plus productif/confortable avec Qt/C++ qu'avec la liaison Qt de Python. C'est mon conseil si vous choisissez d'aller avec Qt. De plus, en plus de l'expérience native fournie par le widget Qt, Qt5 et QtQuick2 avec la technologie QML et la possibilité d'incorporer JavaScript et HTML5 dans votre application, vous donnent une apparence et une convivialité Web modernes, si vous choisissez faire cela.

Alors, pourquoi je n'aime pas Python dans les applications de bureau et je préfère le conserver pour les scripts ou les choses côté serveur?

  • Python brise un peu la joie multiplateforme, votre client doit installer Python pour exécuter votre application (en particulier sur Windows), et les différentes versions Python qui sont sur le site officiel de python maintenant confondre le client, celui à télécharger/installer.

  • Python à exe , faites de plus grandes applications (en termes de taille).

  • Applications Python, mangez plus de mémoire.

C'est un point de vue personnel. Le système parent de Qt, les pointeurs intelligents, ne vous laissera pas vous tirer dans le pied, ni dans les jambes, le C++ 11 vous donnera encore plus de fonctionnalités.

5
01walid