Bonjour à tous,
dans le cadre de mon travail, nous souhaitons réaliser un logiciel de paramétrage de nos installations électroniques. Le but est de faire une interface graphique qui présente l'état de fonctionnement de nos installations et permette quelques réglages simples (avec très peu d'algorithmique). Évidemment, mon patron n'a rien contre une solution à base de logiciels libres.
Les points clés pour cette application sont:
* facilité de maintenance
* fiabilité
* pérennité
* design très personnalisé
L'heure est aujourd'hui au choix des outils. Pour ma part, je pense que Qt serait un excellent candidat pour la librairie graphique. Surtout avec Qt4.2 qui introduit la personnalisation des widgets au travers d'une syntaxe à la CSS.
Comme je ne suis pas capable de programmer en C++ et que j'aime bien Python,j'aimerai bien utiliser les bindings Python pour Qt, à savoir PyQt. Le problème c'est que Python est plutôt inconnu dans le monde de l'entreprise.
Une autre solution serait d'utiliser java qui est très connu par le grand public. D'ailleurs, il y a aussi des bindings Java pour Qt, nommés Qt Jambi, et supportés officiellement par Trolltech, mais je ne connais pas Java. J'ai essayé java ces derniers jours et j'ai trouvé ça assez déroutant. J'ai eu l'impression d'être *obligé* de faire des classes tout le temps, et le typage statique est quand même un peu lourdingue, par exemple quand j'écris:
Voiture maVoiture = new Voiture("ford fiesta");
à quoi ça sert de préciser que maVoiture est de type Voiture (si je voulais transtyper en Vehicule je l'aurai dit)?
Donc voilà, j'en suis à me demander laquelle des deux solutions est la mieux: PyQt ou Qt Jambi?
Toute argumentation est la bienvenue. D'ailleurs, si vous avez d'autres solutions que Qt, ça m'intéresse aussi!
# PyQT
Posté par Larry Cow . Évalué à 10.
Au final, j'avais ramené chez moi mon code du boulot, à l'époque, et je l'avais testé sur Linux et Mac : il marchait à l'identique. Bien évidemment, ça n'est valable que si évite les fonctions monoplateformes de Python (genre COM ou win32), mais ça tu le sais déjà.
Sinon, les rares tests que j'ai fait avec Jambi marchaient pas mal. Niveau déploiement, si j'ai tout compris, ça demande juste de rajouter un .jar dans ton déploiement. Mais, comme toi, je suis plus à l'aise avec Python que Java.
# Python c'est bon
Posté par eastwind☯ . Évalué à 3.
La réponse est dans la question non ? tu connais pas C++ , Java te lourde , donc python c'est bon ..
En quoi le fait que le grand publique ne connaisse pas python soit un frein ? il vont juste utilisé le code compilé après non ? (oui compilé , car faut optimiser ) . Je crois pas que le grand public connaisse le java ou le C++ mieux que le python a part entendre s'exclamer , ha oui c'est un javascript ou des trucs du genre ...
[^] # Re: Python c'est bon
Posté par Gilles G. . Évalué à 2.
Ce qu'il se dit, c'est que si tout le monde programme en Java c'est qu'il y a de bonnes raisons (d'ailleurs je me demande s'il n'y a pas *vraiment* de bonnes raisons).
[^] # Re: Python c'est bon
Posté par Victor . Évalué à 2.
Puis tu ajouteras que tout comme java c'est multiplatforme mais qu'en plus pour windows tu n'as pas besoin d'installer la vm python car py2exe existe.
[^] # Re: Python c'est bon
Posté par Victor . Évalué à 1.
[^] # Re: Python c'est bon
Posté par Olivier Serve (site web personnel) . Évalué à 10.
[^] # Re: Python c'est bon
Posté par ethtezahl . Évalué à 3.
Et puis, il existe aussi le Jypthon
[^] # Re: Python c'est bon
Posté par eastwind☯ . Évalué à 3.
Ok , alors il y a beaucoup d'organisation utilisant intensivement python pour ne citer que celle qui me vient à l'esprit vite fait : NASA , GOOGLE , ... mais il y a une liste des succès story en python sur des projets /. logiciels très précis et documenté :
http://www.python.org/about/success/
celle de la NASA :
http://www.python.org/about/success/usa/
Ensuite faut demander au autres messieurs qui disent que java est mieux ou il est mieux et des exemples concrets sur quel projets il fait mieux que python et comparer réellement :) Parce que si c'est juste des décideurs pressé qui dise a ton patron java c'est mieux ,mais il dit pas trop ou ni comment ... Surtout que c'est pas eux qui vont coder alors hein ..
[^] # Re: Python c'est bon
Posté par Larry Cow . Évalué à 3.
Python? Compiler? Comment?
(ceci est une vraie question)
[^] # Re: Python c'est bon
Posté par freeze . Évalué à 2.
....
-O Turn on basic optimizations. This changes the filename extension for compiled (bytecode) files from .pyc to .pyo. Given twice, causes docstrings to be discarded.
...
[^] # Re: Python c'est bon
Posté par Larry Cow . Évalué à 2.
Parce que pour rendre du Python plus rapide, j'ai tendance à être plus intéressé par Psyco que par une forme à peine plus succinte du bytecode (sans compter que la taille ne fait pas tout, loin s'en faut).
Pour info, la première doc que je trouve sur ce flag:
-- http://www.network-theory.co.uk/docs/pytut/CompiledPythonfil(...)
Pas super transcendant, même si ça a du s'améliorer depuis.
[^] # Re: Python c'est bon
Posté par freeze . Évalué à 3.
# Java vs Python
Posté par icyfemur . Évalué à 4.
Peut être, mais grâce à cette information qui te parait redondante, le compilateur Java t'interdira d'utiliser maVoiture comme si c'était une carrotte, à moins que tu le veuilles vraiment explicitement.
Avec Python, ça passera tout debout jusqu'au moment où l'utilisateur ou le testeur exécute le bout de code pourri.
Moralité, dans le cas Java, il est beaucoup plus facile d'éviter les erreurs débiles, car elles sont détectés à la compilation, alors qu'en Python l'erreur ne sera détectée qu'à l'exécution (d'un jeu de test unitaire, de l'appli par la personne qui teste, ... ou par l'utilsateur).
En bref, de mon point de vue (qui va certainement pas plaire à tout le monde), il vaut mieux que le langage soit rigoureux, car le développeur, aussi rigoureux qu'il soit, n'est pas à l'abri d'un oubli. Certes, le développement est en général un peu plus long avec un langage comme Java plutôt qu'avec un langage comme Python, mais par la suite au niveau de la maintenance, les avantages/inconvénients se retrouvent inversés.
[^] # Re: Java vs Python
Posté par Anonyme . Évalué à 3.
auto maVoiture = new Voiture("ford fiesta");
ou le compilateur infère le type de maVoiture a Voiture. Et si jamais du veut caster un objet dans sa super classe, il suffira d'expliciter le type a la déclaration.
le lazy typing est dans D et sera dans C++0x, et est une idée survenue (a mon avis) bien trop tard, cette fonctionnalité pourrait même exister en C.
Enfin globalement je suis d'accord avec toi, avec un language typé mais très dynamique (comme java donc), un code qui compile est souvent beaucoup plus proche de l'état débugué qu'un code qui passe l'interpréteur sans test de typage. Mais (il y a un mais), la souplesse des languages dynamiques, et je n'explique pas encore, mênent souvent les dévelopeur a faire de meilleures appli qu'avec un language typé.
Cela reste encore un mystère pour moi, mais mon petit doigt me dit que le temps et les casses têtes a modifier du code dans la rigueur d'un code très typé ne profite finalement pas toujours a la qualité de l'application. (quand je parle de qualité, je pense a l'ergonomie et au bien pensé des fonctionnalité - ergonomie comprend une appli qui ne t'injurie pas constamment avec des exceptions).
[^] # Re: Java vs Python
Posté par solsTiCe (site web personnel) . Évalué à 1.
parce qu'en java, c'est lourd, pour chaque fonction qui peut lancer une exception faut prévoir le cas où...
perso, je trouve le java très lourd.
vive python !
[^] # Re: Java vs Python
Posté par icyfemur . Évalué à 4.
Alors c'est sur, il faut savoir ce qu'on veut : ok, la gestion des exceptions est "lourde" en Java, mais c'est meilleur moyen de pas avoir une appli qui crashe silencieusement (ou du moins si c'est le cas, c'est la volonté du développeur et qu'il l'assume).
Au contraire en Python : ça m'est arrivé de nombreuses fois sous Linux d'avoir des applis qui balancent un stacktrace dans la console et n'effectuant pas le comportement attentu, sans aucun message d'erreur à l'écran. Niveau fiabilité (demandée par l'auteur de ce journal), c'est pas vraiment le top.
Attention, j'ai pas dit que c'était pas possible de faire les choses proprement en Python, mais comme c'est optionnel, le développeur va plus facilement oublier de le faire à un endroit ou à un autre, volontairement ou pas. Le langage ne le contraint pas à la rigeur.
Donc mon avis, c'est que effectivement, développer en Python est beaucoup plus marrant qu'en Java, car on est plus libre de prototyper (ou de faire de la merde) sans se faire engueuler toutes les 3 secondes par le compilateur. Mais pour développer une appli digne d'un Pierre Tramo Lead Architect, il vaut mieux je pense utiliser un outil strict comme Java.
[^] # Re: Java vs Python
Posté par timid . Évalué à 5.
- Les exceptions que tu dois explicitement gérer et qui sont provoquées par un phénomène normal (comme une sorte de code d'erreur).
- Les exeptions qu'on est pas obligé de gérer (RuntimeExeption ou Error) dues à des erreurs qui laissent l'appli dans un état indéfini.
C'est une très bonne chose que le langage t'oblige à gérer le premier type. Par exemple, un utilisateur qui se trompe en saisissant un entier et qui entraine une erreur de convertion string->int n'est pas un bug du programme, mais ne pas gérer ce cas là en engendrerai certainement un.
Je peut me tromper, mais je ne pense pas que python te permettes d'éviter ce genre d'erreurs de programmation de manière systématique.
Pareil pour le typage, d'expèrience, le typage statique permet clairement de faire des programmes plus maintenables, et d'éviter les surprises à l'exécution ...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.