Journal : Python et les décideurs
Posté par Gilles G. () le 20 novembre 2007
Bonjour à tous,
je suis actuellement en train de pousser dans ma boite pour pouvoir développer en Python (au lieu de Java).
Les bonnes raisons pour utiliser Python sont:
* c'est simple
* c'est rapide à développer
* c'est flexible
* c'est vraiment simple...
* j'aime bien Python
Les deux gros obstacles que je rencontre dans mon argumentation sont:
* java saymieux (sans arguments c'est plus facile)
* Python c'est pas fiable puisque c'est dynamique
* on trouve facilement des développeurs Java alors que personne connait Python
* Python c'est lent
(Vous pouvez d'ailleurs constater que même des gens qui ne connaissent quasiment pas Python sont capable de troller comme des malades)
Je sais répondre calmement et de manière argumentée à la plupart des trolls (c'est dur de trouver un développeur Python??)
J'imagine que je ne suis pas le premier qui se retrouve face à ce genre d'argumentation sans trop de fondements, et je commence à avoir envie de troller à mon tour dans l'autre sens.
Je suis donc à la recherche de trolls (sauvages et poilus) sur Java-et-ses-potes histoire de lutter à armes égales avec mes adversaires...
Merci d'avance!
PS: si vous avez des vrais arguments, ça m'intéresse aussi.
je suis actuellement en train de pousser dans ma boite pour pouvoir développer en Python (au lieu de Java).
Les bonnes raisons pour utiliser Python sont:
* c'est simple
* c'est rapide à développer
* c'est flexible
* c'est vraiment simple...
* j'aime bien Python
Les deux gros obstacles que je rencontre dans mon argumentation sont:
* java saymieux (sans arguments c'est plus facile)
* Python c'est pas fiable puisque c'est dynamique
* on trouve facilement des développeurs Java alors que personne connait Python
* Python c'est lent
(Vous pouvez d'ailleurs constater que même des gens qui ne connaissent quasiment pas Python sont capable de troller comme des malades)
Je sais répondre calmement et de manière argumentée à la plupart des trolls (c'est dur de trouver un développeur Python??)
J'imagine que je ne suis pas le premier qui se retrouve face à ce genre d'argumentation sans trop de fondements, et je commence à avoir envie de troller à mon tour dans l'autre sens.
Je suis donc à la recherche de trolls (sauvages et poilus) sur Java-et-ses-potes histoire de lutter à armes égales avec mes adversaires...
Merci d'avance!
PS: si vous avez des vrais arguments, ça m'intéresse aussi.
> Lire le journal (70 commentaires, moyenne: 3,3).
Vous avez demandé le commentaire #883999.



Dynamiquement typé ou statiquement typé ?
Je ne connais pas très bien java et encore moins Python mais je connais par contre bien le C# ainsi que le Ruby. J'ai développé dans ces deux langages et bien je peux dire une chose :
A partir d'une certaine taille de projet (disons 10'000 lignes), les langages à typage dynamique deviennent une plaie à utiliser. pourquoi ?
Beaucoup d'erreurs qui sont levées à l'exécution (parfois chez le client) auraient pu être détectée à la compilation dans le cas d'un langage statiquement typé.
Même des fautes de frappe toutes connes peuvent engendrer des problèmes beaucoup plus tard. par exemple un appel de méthode inexistant "monObjet.aficher()" ne se verra qu'a l'exécution dans le cas de Ruby. Ok le Ruby/python c'est souple on peut faire plein de chose (ducktyping et cie) mais personnellement je pense justement que cette souplesse est plus un inconvénient qu'un avantage dans beaucoup de cas.
On est obligé d'imposer des consignes très strictes en matière de codage comme par exemple documenter de manière formel le type des paramètres des méthodes.
Je ne dis pas que le typage statique et meilleur que le typage dynamique, l'un et l'autre ont leurs avantages et inconvénients. Je pense que Python et Java peuvent très bien être utilisés conjointement, l'utilisation de l'un ou de l'autre dépend du type de la problématique.
[^]Re: Dynamiquement typé ou statiquement typé ?
Un truc qui commence à se développer pas mal en Java, c'est d'utiliser via l'inteface de scripting Java du Ruby ou du Python pour certaines taches.
L'avantage c'est de bénéficier de la flexibilité de Ruby ou Python pour certains aspects bien précis du logiciel, et d'utiliser Java pour le reste.
Pour Civilization III ils ont fait ça (c'est pas du Java mais le principe est le même) : la majorité de l'IA et des règles du jeu sont écrites en Python, ce qui permet aux fans d'écrire des mods assez facilement sans devoir se plonger dans le code complet du jeu.
Vache qui rit, à moitié dans son lit
[^]Re: Dynamiquement typé ou statiquement typé ?
petite correction : c'est civ 4 et non civ 3 qui utilise du python (ou alors c'est les deux)
[^]Re: Dynamiquement typé ou statiquement typé ?
Non non tu as raison ! C'est bien le 4.
Vache qui rit, à moitié dans son lit
[^]Re: Dynamiquement typé ou statiquement typé ?
Je pense que le problème n'est pas le typage dynamique versus le typage statique ou quel est le meilleur.
Tout dépend de son usage et de l'implémentation dans le langage.
Par exemple, écrit une véritable application complexe en Smalltalk qui est un langage à typage dynamique et tu constateras alors l'absence de problèmes liés au typage et que tu trouves dans d'autres langages à typage dynamique.
[^]Re: Dynamiquement typé ou statiquement typé ?
Tout (de l'OS aux applis) sur les Lisp Machines étaient implémenté en Lisp (pas Common Lisp, mais "presque"), et difficile de faire plus dynamique. On dépasse assez largement les 10 000 lignes dans ce cas-là, et personne ne s'en est jamais plaint. Pourquoi?
Grâce aux outils disponibles pour le développement. La possibilité d'inspecter n'importe quel widget de l'interface graphique, avec le code qui est derrière, de savoir où est définie une fonction, et quelles autres fonctions l'utilise, etc. Les déclarations de type *optionnelles* aussi (le compilo peut s'en servir pour optimiser plus qu'en ne faisant qu'inférer le type).
Peut-être aussi que les programmeurs n'étaient pas des "pisseurs de code" lambda (pun not intended)
Bon je suis ptêtre un vieux con à 26 ans, mais je trouve les IDE Common Lisp, qui sont pourtant moins puissantes qu'une Lisp Machine, beaucoup plus puissantes que les IDE Java.
PS: je n'ai pas physiquement accès à une Lisp Machine, mais des vidéos sont dispos. Je n'ai pas d'actions chez Symbolics ou Franz non plus :-)
[^]Re: Dynamiquement typé ou statiquement typé ?
Est-il encore pertinent de faire la comparaison entre le dynamique-impératif et le dynamique-fonctionnel, je ne suis pas sûr. L'approche est complètement différente.
[^]Re: Dynamiquement typé ou statiquement typé ?
Dans la majeure partie des dialectes de Lisp, tu peux autant coder en impératif qu'en fonctionnel. Ou tout autre paradigme d'ailleurs, merci les macros... enfin on est pas là pour faire de la pub.
En Python tu as des éléments qui le rapproche du fonctionnel.
Donc je pense qu'on peut quand même faire la comparaison.
Il faut que je retrouve une vidéo dans laquelle on voit bien l'environnement de développement et les outils qu'il propose.
[^]Re: Dynamiquement typé ou statiquement typé ?
On parle toujours des erreurs de typages détectés à la compilation, comme si elles étaient très fréquentes. Hors je sais pas vous mais personnellement, quelque soit le langage que j'ai utilisé je ne me souviens pas avoir été particulièrement confronté à ces problèmes...
Pareil pour les exceptions, je trouve concrètement très rare d'avoir un bug en python qui aurait été attrapé par un rattrapage obligatoire en java.
En revanche les tests fonctionnels et unitaires me servent énormément et sont beaucoup plus facile à faire qu'en java, ne serait-ce parce qu'ils n'obligent pas aux mêmes contraintes justement !
Est-ce parce que je travail généralement seul ?
[^]Re: Dynamiquement typé ou statiquement typé ?
Oui ca ne sert pas à grand chose quand tu développes "à chaud", surtout quand tu es seul sur le projet vu que tu as une vision globale de ton code.
Par contre reviens 6 mois plus tard faire des modifs sur un projet de plus de 100000 lignes qui utilise des librairies développées par d'autres gens ... là tu seras bien content d'avoir ces vérifications au lieu de devoir découvrir les plantages en testant à la main (oui on peut faire des tests unitaires mais quand on touche à la couche GUI ça devient plus chiant).
[^]Re: Dynamiquement typé ou statiquement typé ?
Admettons que je revienne sur un gros projet, admettons même que ce ne soit pas moi qui l'ai fait. Je vais utiliser une fonction déjà existante, il me semble que le premier truc que je vais regarder c'est le type des données qu'elle attend et reçoit...
Le seul cas critique que je vois en y réfléchissant c'est si je met à jour une librairie et qu'elle a changée son type de données, mais ça me semble quand même hyper rare...
Un cas de figure auquel je ne pense pas ?
Si les tests de type étaient indispensables, on ferait des tests unitaires pour ça, hors c'est également rarement le cas. Il y a également des outils comme pychecker ou pylint pour généraliser ce type de tests.
Pour les GUI, je suis passé aux applis web en grande partie pour faciliter les tests !!