IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Quel langage et manière de déployer choisiriez-vous pour produire le code le plus optimisé possible

Votants
24. Vous ne pouvez pas participer à ce sondage.
  • Sans hésiter, un code 100 % en Qt ;

    11 45,83%
  • Qt et un de ses bindings pour avoir plus d'outils ;

    11 45,83%
  • La création d'un exécutable sera plus propice à améliorer le "SAV" ;

    9 37,50%
  • La distribution des sources et des biblios sera d'une grande efficacité.

    8 33,33%
Sondage à choix multiple
PyQt Python Discussion :

Quel choix pour coder et déployer son programme : Qt en C++ ou Python ?


Sujet :

PyQt Python

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Quel choix pour coder et déployer son programme : Qt en C++ ou Python ?
    Bonjour,

    Après plusieurs mois sans programmation je reviens parmi vous avec notamment le projet de reprendre l'un de mes programmes depuis le début.

    L'idée est surtout d'améliorer le programme coté « programmeur » (coté utilisateur il sera aussi étoffé, mais ceci n'est pas le but de cette discussion), le but étant de d’obtenir un code :
    • plus simple ;
    • plus lisible ;
    • plus facilement maintenable ;
    • plus facilement mettable à jour.

    Afin d’obtenir le meilleur compromis, je me pose alors les deux questions suivantes :
    • pour la partie codage, mieux vaut-il faire un code en « pureQt » (en C++) ou utiliser l’un de ses binding (principalement en Python) ?
    • pour le déploiement, faut-il favoriser la création d’un exécutable ou diffuser le code source et les bibliothèques nécessaires ?

    Ces questions ne sont pas forcément très simples de réponse car supposent que les deux langages soient connus à niveau équivalent. Malgré tout une approche peut être faite pour dégrossir le sujet.

    N’hésitez pas apporter en plus de vos votes un argumentaire en séparant bien les deux questions, même si elles peuvent être étroitement liées, il est peut-être plus simple de déployer d’une certaine manière avec un certain choix de langage…

    Au niveau du code, il faut aussi remarquer que Qt Creator, l'EDI développé spécialement pour Qt, ajoute le support de Python dans sa dernière préversion.

    Merci pour votre contribution.

    J

  2. #2
    Rédacteur/Modérateur
    Avatar de arnolddumas
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Autriche

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 978
    Points : 7 764
    Points
    7 764
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    Afin d’obtenir le meilleur compromis, je me pose alors les deux questions suivantes :
    • pour la partie codage, mieux vaut-il faire un code en « pureQt » (en C++) ou utiliser l’un de ses binding (principalement en Python) ?
    Je n'ai pas une grande expérience en Python donc mon avis sera forcément biaisé mais j'ai voté pour du code 100% C++. Je ne sais pas si l'application que tu développes est gourmande mais les performances seront bien meilleurs en C++ qu'en Python. Ca dépend aussi de ton expérience avec ces deux langages. Il y en a forcément un des deux que tu maitrises mieux que l'autre.

    Citation Envoyé par Jiyuu Voir le message
    • pour le déploiement, faut-il favoriser la création d’un exécutable ou diffuser le code source et les bibliothèques nécessaires ?
    Je dirais que ça dépend des sytèmes d'exploitation visés. Pour Windows et Mac, il faut impérativement faire un installeur. Pour Linux, BSD et autres, le mieux est de mettre les sources sur Github ou équivalent. Après, un simple git clone suivi d'un cmake ou d'un qmake et le logiciel tourne sur la machine.

    Si le logiciel est un minimum intéressant, il se retrouvera packagé dans la plupart des distributions. Tu peux aussi maintenir toi-même les paquets.

  3. #3
    Membre habitué Avatar de Apocalyps
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Août 2006
    Messages : 83
    Points : 170
    Points
    170
    Par défaut
    Bonjour à tous, pour ce sondage, j'ai répondu :
    Sans hésiter, un code 100 % en Qt ;
    Tout simplement C++ (car Python n'est pas encore à mon ordre du jour ), l'interface de Qt Creator est amplement suffisante pour mes projets.

    La création d'un exécutable sera plus propice à améliorer le "SAV" ;
    ainsi que
    La distribution des sources et des biblios sera d'une grande efficacité.
    Ayant le projet de faciliter l'utilisation de mes logiciels pour les utilisateurs lambda, je me doit de créer un installeur Windows (minimum).
    Les sources sont néanmoins disponible dans le cadre du logiciel libre et du portage Linux.

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 679
    Points : 188 770
    Points
    188 770
    Par défaut
    Citation Envoyé par arnolddumas Voir le message
    les performances seront bien meilleurs en C++ qu'en Python
    Il faut encore voir si l'augmentation de perfs est si phénoménale que ça… et aussi si ça a la moindre importance dans le cas précis. Je ne pense pas que l'aspect performances brutes doit être le premier critère pour le choix. (D'ailleurs, Python n'a généralement pas à rougir de ses performances, bien que ce n'est pas son but principal.)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Points : 103
    Points
    103
    Par défaut
    Le problème de performance est relatif.
    Certes dans l'absolu le C++ est plus performant que le python, mais:
    1) suivant ce que fait ton application ça se verra pas forcement ( à moins que tu fasse du traitement d'image/video ... ), et de toute façon python ou C++ la lib Qt et donc l'IHM restera en natif
    2) comme c'est plus rapide/facile de coder en python qu'en C++, il te reste plus de temps pour optimiser

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 222
    Points : 767
    Points
    767
    Par défaut
    Utiliser python nécessiterait que tes utilisateurs installent un interpréteur python. Et distribuer les sources plutôt qu'un exécutables nécessitent que tes utilisateurs installent la chaîne de compilation et fassent la compilation eux-mêmes.

    Donc si tes utilisateurs ne sont pas très avertis, il vaut mieux développer en C++ et déployer un exécutable avec toutes les bibliothèques dynamiques nécessaires (dans un zip ou mieux via un installateur). Evidemment il faudra compiler pour diverses architectures si tu veux que ce soit multiplateformes.

    S'il est plus facile ou plus pratique pour toi de développer en python, il y a peut être moyen de faire un installateur qui installera l'interpréteur python automatiquement?

    Ça ne t'empêche pas de distribués les sources à part si tu veux faire de l'open source.

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Citation Envoyé par olreak Voir le message
    Utiliser python nécessiterait que tes utilisateurs installent un interpréteur python.
    Pas nécessairement.
    Il est possible de convertir un script en fichier .exe qui embarque son interpréteur et toutes les bibliothèques nécessaires avec lui.
    cx_freeze est un outil qui permet ça (et qui a le bon goût d’être compatible Python 3)

  8. #8
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Je tiens déjà à tous vous remercier pour vos votes et/ou commentaires.

    Je souhaite réagir sur trois points :

    La performance du langage :
    À mon sens il existe au moins trois niveaux de performance pour un langage :
    • La performance liée à la rapidité d'écrire le code ;
    • La performance liée à la vitesse d'exécution, de consommation de ressources, ... ;
    • La performance liée à sa maintenabilité dans le sens large du terme (maj, correction bogues, ...) ;


    Comme Dourouc et jbb2811 le suggère, je pense que la performance liée à la vitesse de calcul, etc est très relative. Je pense que vous aurez compris que je suis avant tout un codeur Python. J'avoue n'avoir jamais vraiment été gêné de ce coté. Les seules fois où j'ai eu l'impression de ralentissement était bien souvent au moment d'exécuter des requêtes Sql sur un serveur distant, et là je pense que les performances de Python ne sont pas forcément les seules en cause.

    D'autre part, bien que je n'ai pas une très grande expérience en C++, j'ai lu ici et là que ce n'était pas la panacée en simplicité de codage, ma faible expérience me fait dire aussi ceci et jbb semble aussi suggérer. Python est, je pense, plus performant de ce coté.

    La distribution du code :
    Pour le C++, j'utilise depuis longtemps un logiciel écrit dans ce langage et dont les premières versions étaient exclusivement distribuées en version source. Même étant sous windows, je n'ai jamais rencontré de difficulté pour l'utiliser. Je pense que tout peut très bien se passer si c'est bien préparé.

    Pour Python, je pense qu'il faut distinguer les applications destinées à tourner sur Win ou sur Linux comme l’indique arnolddumas.
    Pour Linux, cela risque d'être beaucoup moins problématique puisque Python est présent de base (et C++ aussi au passage ^^), il ne reste plus qu'à gérer les bibliothèques manquantes.
    Pour Win, j'avoue là être un peu plus dans le flou car tous les programmes que j'ai fait actuellement ont soit été exclusivement pour moi (donc j'ai déjà mon Python), soit distribué via un exécutable, et je confirme que cela peut très bien se passer.

    Cependant, il existe des solutions dites portables de Python qui peuvent avantageusement être distribuées avec les sources du programme. Je me demande même dans quelle mesure, un simple copier-coller du dossier Python et quelques réglages ne permettraient pas de régler le problème (test en cours )

    Quid de la taille du programme ?
    Le problème peut venir de là.
    En Python et pour des petits à moyens projets on va rapidement atteindre les 350 ou 400Mo… certes ça peut paraitre peu vu les 1 000Go bien souvent disponibles, mais bon...
    J’ai aussi dernièrement essayé de créer un exécutable d’un programme exemple fourni avec Qt5.0.2. Si j’ai bien compris, une fois le .exe créé, il est nécessaire d’y ajouter quelques DLL. J’ai été assez surpris de la taille de Qt5Guid.DLL et d’autres… et me dit que finalement, un programme source python distribué avec tout ce qui faut pour le faire tourner n’a pas forcément à rougir.

    En espérant que ces quelques remarques permettrons encore d’alimenter le débat, et peut-être de faire réagir des pro-Python

    Merci à vous pour votre implication.

  9. #9
    Rédacteur/Modérateur
    Avatar de arnolddumas
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Autriche

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 978
    Points : 7 764
    Points
    7 764
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    D'autre part, bien que je n'ai pas une très grande expérience en C++, j'ai lu ici et là que ce n'était pas la panacée en simplicité de codage, ma faible expérience me fait dire aussi ceci et jbb semble aussi suggérer. Python est, je pense, plus performant de ce coté.
    C'est vrai que le C++ a vraiment des côté si0ux parfois.

    Citation Envoyé par Jiyuu Voir le message
    Pour le C++, j'utilise depuis longtemps un logiciel écrit dans ce langage et dont les premières versions étaient exclusivement distribuées en version source. Même étant sous windows, je n'ai jamais rencontré de difficulté pour l'utiliser. Je pense que tout peut très bien se passer si c'est bien préparé.
    D'un autre côté, tu es développeur. 99% des gens ignore ce qu'est un compileur ou même un langage de programmation donc il ne faudrait pas géneraliser. Tant mieux si tu arrives à compiler un logiciel mais je doute que ce soit le cas des utilisateurs finaux, sauf si le logiciel en question s'addresse aux développeurs.

    Citation Envoyé par Jiyuu Voir le message
    Le problème peut venir de là.
    En Python et pour des petits à moyens projets on va rapidement atteindre les 350 ou 400Mo… certes ça peut paraitre peu vu les 1 000Go bien souvent disponibles, mais bon...
    J’ai aussi dernièrement essayé de créer un exécutable d’un programme exemple fourni avec Qt5.0.2. Si j’ai bien compris, une fois le .exe créé, il est nécessaire d’y ajouter quelques DLL. J’ai été assez surpris de la taille de Qt5Guid.DLL et d’autres… et me dit que finalement, un programme source python distribué avec tout ce qui faut pour le faire tourner n’a pas forcément à rougir.
    Oui mais c'est Qt5Guid.dll aussi. N'oublies pas que c'est la version debug, avec plein de symboles inutiles (pour la distribution) dedans. Les version release sont nettement plus légères.

    Pour que le programme prenne 300 Mo avec les dlls release, il faut utiliser quasiment tous les modules de Qt.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par arnolddumas Voir le message
    D'un autre côté, tu es développeur.
    C'est gentil, mais je ne me considère que comme un développeur « plusquamateur »

    Citation Envoyé par arnolddumas Voir le message
    99% des gens ignore ce qu'est un compileur ou même un langage de programmation donc il ne faudrait pas géneraliser. Tant mieux si tu arrives à compiler un logiciel mais je doute que ce soit le cas des utilisateurs finaux, sauf si le logiciel en question s'addresse aux développeurs.
    Ta remarque a attiré plus que mon attention. Je me suis peut-être un peu emballé...
    Huuuummm.... comment dire... il est possible que j'ai pris, dans ma mémoire défaillante (message pour Dourouc : c'était pas que de la Belge ), la version ReadyToUse (non setupée) pour une version source

    Citation Envoyé par arnolddumas Voir le message
    Oui mais c'est Qt5Guid.dll aussi. N'oublies pas que c'est la version debug, avec plein de symboles inutiles (pour la distribution) dedans. Les version release sont nettement plus légères.

    Alors là tu me rassures et tu démontres à merveille que j'ai des lacunes en C++

    Citation Envoyé par arnolddumas Voir le message
    Pour que le programme prenne 300 Mo avec les dlls release, il faut utiliser quasiment tous les modules de Qt.
    C'est exactement ça. De mémoire :
    • Python jsute après son installation : 50 à 60 Mo ;
    • Python après l'installation de PyQt : 250 à 300Mo.


    J'ai mis la main sur une version portable de Python, pratique mais 250Mo, avec une possibilité de réduire car il y a toutes les bibliothèques.

  11. #11
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Bon, dernière (ou pas) tentative de faire venir des Pythoniens
    Manière simple de faire une version portable de Python, c'est de choisir une installation pour un utilisateur unique lors de l'installation de Python...

    Allez les gars, faut faire tourner la balance dans l'autre sens

  12. #12
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut Python + PySide (ou PyQt)
    Franchement, il n’y a pas vraiment matière à hésiter.

    Si tu connais bien Python et que ton application est pas gourmande en calcul, bah go Python.
    Le code sera plus court, plus lisible, plus maintenable, et plus portable (pas besoin de distribuer X exécutables).

    Et puis même si c’est gourmand, il y a peu de chances que ça soit l’interface qui calcule. Donc au pire tu fais le cœur qui calcul avec un truc qui dépote (numpy, pypy, C++, …) et tu restes sur du Python pour l’interface.


    [avis perso]
    Moi je n’ai jamais vraiment aimé Qt à cause de l’étape intermédiaire avec le préprocesseur pour générer du code à partir des macros que tu dois foutre partout dans ton code. Je trouve ça moche au possible…
    Cela dit, j’ai pas franchement d’alternative à proposer donc ça reste un ressenti personnel, pas spécialement une critique technique (ça ne réduit en rien la qualité de Qt).
    Il y a aussi la propension que Qt a (avait ? Paraît que ça change un peu maintenant) à faire doublon avec la bibliothèque standard sur certains point (bon, ça c’est compréhensible vu qu’à l’époque des premières versions de Qt, la bibliothèque standard c’était pas aussi bien foutu que maintenant).

    Par contre, quand j’ai testé Qt avec Python, là c’était beaucoup plus « joli », plus naturel (vu que Python de base offre déjà des mécanismes d’introspection) du coup j’ai pris plaisir à coder avec ce couple.
    [/avis perso]

  13. #13
    Invité
    Invité(e)
    Par défaut
    Il y a trois choses qui me dérangent avec PySide/PyQt :
    • Le style : les bindings ne respectent pas la pep8, et quand on utilise d'autres modules qui la respectent, on aboutit à un code hétérogène sur le plan du style.
    • Le support des IDE : je n'arrive pas à obtenir une auto complétion correcte sur ces bindings. J'utilise PyCharm, et impossible de générer les squelettes python. Ce serait cool que QtCreator propose un bon support de Python. J'ai hâte de voir ce que ça va donner sur la version 2.8 finale.
    • Le fait que certains modules Qt sont redondants avec la librairie standard (threading, networking...). Une bonne pratique consiste à utiliser les modules Qt lorsque l'on interagit avec un contexte Qt, et les modules de la librairie standard sinon. Il n'en reste pas moins qu'on va potentiellement avoir l'utilisation de plusieurs modules différents pour le même usage final.


    Mais en dehors de ça, PySide/PyQt reste pour moi une des solutions idéales pour du GUI cross-platform.

    Le problème que j'ai avec le développement C++ pour des applications qui n'ont pas besoin de perfs extraordinaires, c'est que j'ai l'impression que la plus grande partie de ma concentration est verrouillée sur la gestion mémoire pour pas faire de conneries.
    La productivité est démultipliée en Python et pour 99% des applications perso que je vais faire, je n'ai pas besoin de la rapidité apportée par le C++. Au pire, l'intégration de code natif est assez aisé.

    [HS]
    Il y a aussi JavaFx2 qui semble assez intéressant dans ce domaine. Il permet aussi de faire du packaging d'applications pour avoir des apps "self-contained".
    Sans oublier aussi le trio JS/HTML/CSS qui commence à arriver sur desktop.
    [/HS]

  14. #14
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Enerian Voir le message
    Le support des IDE : je n'arrive pas à obtenir une auto complétion correcte sur ces bindings. J'utilise PyCharm, et impossible de générer les squelettes python. Ce serait cool que QtCreator propose un bon support de Python. J'ai hâte de voir ce que ça va donner sur la version 2.8 finale.
    Je t'invite à lire ce tutoriel
    Pour la version 2.8 de QtCreator, je ne pense pas que ça aille bien au delà de ce qu'il y a à présent. Au pire la possibilité de faire un F5 .
    En tout cas je ne pense pas que l'on atteindra le niveau de performance et d'efficience que l'on peut avoir avec le couple QtDesigner-Eric.

    Je ne connais pas PyCharm. Cela semble être un IDE de plus, mais à priori orienté Django, l'un des plus célèbres framework web de Python. Il n'est peut-être pas forcément le plus dédié pour codé du PyQt ou PySide.


    Citation Envoyé par Enerian Voir le message
    Le fait que certains modules Qt sont redondants avec la librairie standard (threading, networking...). Une bonne pratique consiste à utiliser les modules Qt lorsque l'on interagit avec un contexte Qt, et les modules de la librairie standard sinon. Il n'en reste pas moins qu'on va potentiellement avoir l'utilisation de plusieurs modules différents pour le même usage final.
    On ne peut qu'être d'accord avec toi su ce point. Le gros souci est que parfois on se casse la tête à essayer de faire un truc en Qt alors que Python le permet très simplement (le formatage de nombre par exemple).

  15. #15
    Membre éprouvé Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Points : 1 174
    Points
    1 174
    Par défaut
    Python sort des temps très satisfaisant. Certe il restera toujours derrière le c++ mais ca reste une alternative interressante.

    Dans mon cas, je dirais bien sure : 100% cpp

  16. #16
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir Jiyuu,

    Citation Envoyé par Jiyuu Voir le message
    Bon, dernière (ou pas) tentative de faire venir des Pythoniens
    Manière simple de faire une version portable de Python, c'est de choisir une installation pour un utilisateur unique lors de l'installation de Python...

    Allez les gars, faut faire tourner la balance dans l'autre sens
    Une version portable de Python ? Il en existe comme par exemple Python Portable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    What is included?
    
    Large set of third party python libraries - NumPy, SciPy, Matplotlib, PyWin32, Django, PIL, wxPython, PyQt, PyGame, etc. code editors - PyScripter and IDLE all packaged in a single installer.
    Ce n'est qu'un exemple.

    Python c'est
    • plus simple ;
    • plus lisible ;
    • plus facilement maintenable ;
    • plus facilement mettable à jour.
    Et plus rapide (+++) au niveau développement.

    Si c'est pour de la performance il existe, par exemple, CPyton. Et l'on garde la rapidité de développement.

    Citation Envoyé par arnolddumas Voir le message
    Je dirais que ça dépend des sytèmes d'exploitation visés. Pour Windows et Mac, il faut impérativement faire un installeur. Pour Linux, BSD et autres, le mieux est de mettre les sources sur Github ou équivalent. Après, un simple git clone suivi d'un cmake ou d'un qmake et le logiciel tourne sur la machine.

    Si le logiciel est un minimum intéressant, il se retrouvera packagé dans la plupart des distributions. Tu peux aussi maintenir toi-même les paquets.
    Du code Python c'est universel.

    Bref... Comme je ne pratique pas Qt c'est juste pour répondre au "Allez les gars, faut faire tourner la balance dans l'autre sens" vu qu'avec le froid les pythons ne bouges plus (reptiles oblige).

    @+

    Edit:
    Amusez vous dans ce sens.
    Propose un sujet de développement sur une semaine pour les C++ et Python et regardez qui vas sortir le premier code 'valable'.
    Si aucun C++ n'as cela dans son cookbook vous allez voir la différence, et la maintenance aussi.

  17. #17
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Si c'est pour de la performance il existe, par exemple, CPyton. Et l'on garde la rapidité de développement.
    Je pense que tu voulais parler de Cython (CPython étant l’interpréteur de référence, le plus couramment utilisé).
    Il y a aussi PyPy qui a de très bon résultats (sur des exemples bien choisi il est plus rapide que le C, sinon de manière générale il s’en sort bien).

  18. #18
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Citation Envoyé par grim7reaper Voir le message
    Je pense que tu voulais parler de Cython
    Oui... ()

  19. #19
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 481
    Points : 9 280
    Points
    9 280
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Désolé de mon retard sur un sujet aussi intéressant, mais je suis en vacances dans un camping qui a un internet plutôt défaillant...

    Même en connaissant C et C++ ainsi qu'une douzaine d'autres langages, je vote, bien sûr, pour Python avec juste quelques limites.

    Python rend le codage vraiment très facile et très rapide. On peut faire beaucoup de POO, et utiliser une quantité invraissemblable de modules divers dans plein de domaines très différents. Et la mise en oeuvre de ces modules est très aisée.

    En tant qu'outil de développement, j'utilise pour ma part Eclipse + Pydev, ce qui me donne une liaison directe avec tous mes projets, ce qui facilite la réutilisation de morceaux ainsi que la gestion de fonctions de bibliothèque perso. Pydev dispose de toutes les facilités d'édition (coloration syntaxique, completion y compris avec PyQt4, encodages, fins de ligne, debugging, etc...). Il est de plus multiplateforme, ce qui me permet de travailler de la même façon sur Windows, Linux et Mac OS X. Il a aussi le gros avantage de ne pas être écrit en Python, ce qui évite les inévitables conflits avec, en particulier, les threads et les processus...

    Les projets en Python + PyQt4 sont très rapides, ou plutôt "aussi rapide qu'il est nécessaire". Si une réponse de 1/10 de seconde convient, utiliser un langage plus complexe pour passer à 1/100 seconde est complètement inutile: ce n'est plus un critère de choix. En fait, si Python est un langage interprété, les instructions Python passent la main très rapidement au code écrit en C/C++, ce qui fait que 80 ou 90% s'exécutent en fait au même rythme que le C/C++ compilé.

    Certaines routines critiques en temps d'exécution peuvent s'écrire en Cython, ce qui accèlère beaucoup à condition de ne pas utiliser trop d'objets spécifiques Python (les appels multiples à l'API Python font perdre du temps). Par contre, avec des données de type C/C++, on peut utiliser directement les bibliothèques C/C++.

    Pour la distribution du code: rien de plus facile. J'utilise beaucoup cx_freeze sous Windows et sous Linux, et ça marche très bien (avec quelques tatonnements tout de même). Cela permet de distribuer un "exe" accompagné de toutes les bibliothèques nécessaires, y compris, bien sûr, de l'interpréteur Python. Compte tenu de la puissance des machines actuelles, le volume que ça représente n'est vraiment pas un problème.

    Sous Windows, après traitement par cx_freeze, on peut utiliser un installeur comme innosetup, et on obtient un fichier qui s'installe comme n'importe quel logiciel Windows: les utilisateurs ne sauront même pas que c'est du Python... Je n'ai pas essayé sous Linux, mais je sais qu'il est possible de fabriquer des paquets (.dev, .rpm) et de créer un dépot local personnalisé.

    J'applique tout ça pour mes projets. Mon plus gros projet fait le traitement d'un concours internationnal de photos pour mon photo-club (en tant qu'amateur bénévole). Il est écrit en Python + PyQt4. Il contient plus de 20 fenêtres et plus de 25000 lignes de codes Python, avec:

    - création d'étiquettes autocollantes avec codes barres
    - lecture de codes barres avec pilotage du lecteur (sous Windows et Linux)
    - formulaire de saisie avec des widgets personnalisés et de nombreuses vérifications. Les widgets personnalisés, écrits en Python, sont rendus utilisables par QtDesigner
    - gestion complète d'une base de données relationnelle de 5000 articles, une quinzaine de tables avec contraintes de clés étrangères et mises à jour et destructions en cascade. J'utilise sqlite3 mais Postgresql ou Mysql sont possibles.
    - consultation/modification dans la base de données avec des outils graphiques de PyQt4 (QTableView). On peut éditer des tables temporaires à partir de scripts sql écrits en interactif (QTextEdit). La recherche/filtrage peut s'effectuer avec les instructions sql, mais aussi par wildcard, expressions régulières et par mots similaires (avec ratio paramétrable). Le tri peut être fait avec l'ordre du dictionnaire français (script Python utilisé directement par sql)
    - téléchargement ftp dans les 2 sens avec barre de progression et, si nécessaire, avec reprise
    - compression/décompression zip
    - une fenêtre éditeur de texte (QTextEdit)
    - une fenêtre navigateur internet qui permet, entre autres, de lire les manuels d'utilisation écrits en html
    - édition de résultats sous diverses formes: html, csv pour Excel, pdf, jpg, ... J'ai même un programme utilisant le module PyPdf pour regrouper plusieurs centaines de fichiers pdf en un seul pour faciliter l'impression.
    - Traitement par cx_freeze pour obtenir un exe facilement transportable d'un pc à un autre, et qui s'exécute sans nécessiter d'installer Python et PyQt4.
    - ...

    Sincèrement, quand je vois avec quel facilité j'ai fait tout ça, je ne regrette pas d'avoir choisi Python. Et comme j'en suis le principal utilisateur, je peux confirmer que ça marche!

    J'avais parlé tout au début de "quelques limites": les voici.

    En tant que langage interprété, Python a quelques souplesses qui peuvent pousser à la faute. Trois exemples:
    - une simple faute de frappe peut faire créer involontairement une nouvelle variable sans aucun message d'erreur puisqu'il n'y a pas de déclaration. Et l'importance de l'erreur ainsi commise ne sera visible qu'à l'exécution.
    - certaines erreurs de codage n'apparaitront que lorsque la fonction concernée sera effectivement solicitée, c'est à dire le plus souvent après la distribution du logiciel.
    - comme les variables, les arguments passés aux fonctions n'étant pas typés, on peut passer n'importe quoi, mais les conséquences se verront dans les traitements qui les utilisent: surprises possibles.

    On peut aussi rencontrer des difficultés en cas d'exigence de temps de réponse, en particulier avec le ramasse miette qui peut se déclencher n'importe quand.

    On peut, bien sûr, compenser en partie avec une (très très) solide méthode de développement,mais ce serait encore plus fiable si on ne pouvait pas faire autrement. Autrement dit, j'adore Python, mais si je devais coder pour Ariane ou pour le nucléaire, j'utiliserais un langage beaucoup plus contraignant... ADA?

  20. #20
    Invité
    Invité(e)
    Par défaut
    @tyrtamos : merci pour le retour d'expérience sur un vrai projet ! Je te rejoins sur les inconvénients que tu cites, mais pour moi, leur impact est limité sur des projets personnels non critiques, quel que soient leur taille. Des noms explicites et des tests permettent d'anticiper bon nombre de soucis.

    Par ailleurs, en passant par hasard sur le site de Riverbank, j'ai vu que PyQt5 est disponible en version stable. Je ne suis pas sur qu'ils supportent tout, mais c'est une excellente nouvelle. Je ne pensais pas que ça sortirait si vite.

Discussions similaires

  1. Quel choix pour une base de données embarquée ?
    Par Schyzophrenic dans le forum JDBC
    Réponses: 2
    Dernier message: 04/07/2008, 19h49
  2. quel choix pour la Persistence?
    Par Sniper37 dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 12/05/2008, 22h20
  3. Réponses: 9
    Dernier message: 09/04/2008, 16h51
  4. [Général] Quel langage pour une banque de son?
    Par freedom4seagulls dans le forum Windows
    Réponses: 4
    Dernier message: 22/11/2006, 20h00
  5. [Techno/Langage] Quel choix pour un gros développement orienté objet ?
    Par Neilos dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 18/05/2006, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo