David Larlet : artisan, contributeur et citoyen.


Archives du site biologeek.com. Publications récentes.

★ Pourquoi programmer en Python ?

vignette

Guido le soulignait il y a quelques temps, Python souffre un peu du manque de promotion. La nouvelle version du site est un premier pas, de « nouvelles » initiatives voient le jour (à quand une telle ressource en français ?!) mais peut-être que les blogs sont un des meilleurs moyen de promotion d'un produit actuellement. Voila donc ma participation, ce ne sont pas forcément les arguments que vous pourrez lire ailleurs, nous n'aimons pas forcément tous les mêmes choses pour les mêmes raisons mais ce sont ceux qui me font apprécier Python aujourd'hui.

Apprendre les bases de la programmation

Python offre vraiment un niveau d'apprentissage rapide. Grâce à la simplicité de sa syntaxe, je pense que c'est actuellement le langage de programmation à apprendre si l'on veut débuter la programmation. C'est déjà assez difficile à comprendre pour en plus buter sur la syntaxe (un débutant qui se trompe 20 fois dès le début de son apprentissage pour un point-virgule oublié ou une accolade mal placée c'est autant de temps perdu). Je trouve franchement repoussant l'apprentissage du C en premier langage par exemple.

De plus, Python dispose de très peu de mot-clés à retenir dans un premier temps ce qui permet de rester concentré sur l'algorithmique. Et c'est ce que doit permettre un langage de programmation, tout comme un OS doit permettre d'utiliser l'outil informatique mais bon là on sort du débat ;-).

Enfin le nombre de bibliothèques incluses ou à télécharger simplement permettent d'arriver très rapidement à un résultat concrêt. Et c'est vraiment motivant quand on débute, du coup il est possible encore une fois de se concentrer sur notre véritable objectif : faire une application spécifique qui n'a pas encore été codée.

Progresser en python : une courbe d'apprentissage particulière

Dans tous les apprentissages, on commence par progresser très vite puis la pente de la courbe diminue et on a clairement l'impression de ne plus progresser, qu'au prix d'efforts importants et sur certains sujets uniquement.

Ce qui me plait avec Python, c'est que l'apparente simplicité du langage cache des perspectives que je découvre encore aujourd'hui. Et l'évolution constante du langage permet de disposer de nouvelles fonctionnalités demandées par la communauté de façon rapide et réfléchie. Vous pouvez même donner votre avis dès maintenant sur la mailing-list de Python 3000.

Développer une véritable application

C'est bien beau tout ça mais il faut bien décider un jour de se lancer dans le grand bain et de coder sa propre application qui va roxxxer les mamans ours et vous permettre de conquérir le monde (zut c'était mon plan, bon contactez moi pour le partage).

À moins de faire une application très spécifique, toutes les briques de votre application existent déjà. Il n'y a plus qu'à les choisir et à les assembler de façon optimale. C'est l'une des raisons par exemple pour lesquelles on assiste aujourd'hui à une champignonière de frameworks web, RoR était un exemple intéressant et faire quelquechose qui y ressemble en Python était « simple ». Bon après c'est un peu paradoxal avec la philosophie Python qui est « il existe une seule bonne manière de faire les choses » (en oposition à PERL). Ce sera d'ailleurs l'objet d'un prochain billet.

Convaincu(e) ?

Oui, non, peut-être ? N'hésitez pas à plaider en commentaire, les débats non constructifs ne sont pas les bienvenus. Par contre vos premières expériences avec un langage oui :-).

J'ai déjà regroupé quelques tutoriels que je trouve intéressant si vous êtes déjà conquis(e) !

Et pour quelques clics de plus...

PS : si vous n'aimez pas les blocs qui ne se terminent pas (comme certains - lien mort), point de salut :p

Articles peut-être en rapport


Commentaires

Simon Rozet le 05/05/2006 :

En plus des raisons que tu as déjà évoquées dans ton post, je rajouterai deux choses :
1. Avec Python, ont peut faire beaucoup de choses :
- des applications graphiques (GTK, par exemple)
- de petits scripts utilitaires afin de se faciliter la vie
- de la programmation web (j'ai un faible pour webpy.org)

2. Je trouve le trio interpréteur + dir() + __doc__ vraiment très pratique.

Et finalement, avis totalement subjectif, je trouve le Python beau :-)

Aelor le 06/05/2006 :

Hmmm, réaction à mon troll d'hier midi sur jabber ?

Bon allez, je vais m'y mettre le week end dans les semaines/mois qui arrivent, comme ca, je pourrais dire que je connais autant ruby que python (c'est à dire peu mais assez pour pouvoir en discuter objectivement ou subjectivement).

Charly le 06/05/2006 :

Les applications graphiques c'est en général possible avec tous les langages, mais il faut noter un dynamisme avec pyqt (version 4 pour bientôt) et wxpython, l'orienté portable est donc au coeur du langage.

Je pense que ce qui caractérise le plus python et qui peut être l'objet d'une campagne de promotion :
- un code propre, lisible et qui ne peut être sujet à de multiples interpretation (Cf. troll sur Perl)...
- le temps de codage ... assez incomparable avec un langage bas niveau ou même avec Java
- la facilité pour quelqu'un ayant quelques bases en programmation à apprendre le langage :-), je pythonise mon labo assez facilement !

Steveosteen le 07/05/2006 :

Il y en a même qui dise Java et mort ! Vive Python. Avec wxPython on est pas loin de la verité !

Pierre le 08/05/2006 :

Merci pour ce billet. Je ne connais pas du tout Python : j'ai rapidement parcouru il y a quelques mois un article de vulgarisation sur le sujet, mais il vulgarisait tellement que je n'ai rien appris... J'aimerais trouver un langage que je puisse apprendre rapidement et qui me permette de mettre en oeuvre facilement des idées qui me passent par la tête ; d'après ton billet, Python semble être le client idéal... j'attends les prochains billets pour me lancer dedans :)

Je ne me suis pas du tout renseigné encore, mais y a-t-il des /bindings/ pour lier un programme Python avec une base de donnée SQLite par exemple ?

En fait, j'ai une petite idée d'appli, mais j'ai besoin de connecter un programme à une BDD, et je trouve que Java est un poil lourd our faire ça (gestion de connexion à la BDD, création d'interface graphique...). Si je pouvais trouver un langage simple pour faire une appli graphique utilisable, ça serait le pied !

David, biologeek le 09/05/2006 :

@Aelor :
> Hmmm, réaction à mon troll d'hier midi sur jabber ?

Pas vraiment, disons que j'avais le texte dans mes cartons et je me suis dis que ce c'était l'occasion de le mettre en ligne ;)

@Charly :
> la facilité pour quelqu'un ayant quelques bases en programmation à apprendre le langage :-), je pythonise mon labo assez facilement !

\o/

@Pierre : Oui, python est vraiment le langage idéal dans ton cas, il existe de nombreuses bibliothèques permettant de communiquer très simplement avec les principaux types de bases de données (une liste assez complète sur wikipython.flibuste.net/m... )

> Si je pouvais trouver un langage simple pour faire une appli graphique utilisable, ça serait le pied !

Tu peux facilement faire des applis en GTK avec Glade si tu es sous Ubuntu par exemple ou comme le signalait Steveosteen, utiliser wxPython qui est (paraît-il) très bien.

Kagou le 09/05/2006 :

Ce que je reproche à python :
le choix de tk comme gui par défaut. Donc la très grande majorité des bouquins parle de tk pour faire de petites interfaces.

Je souhaiterai que wxpython soit de base. Je souhaiterai qu'il y ait enfin de vrais bouquins en français, voir juste des didacticiels, mais enfin riches et complets sur la programmation d'interfaces graphiqes, que ce soit avec gtk/gnome/glade/wxpython. Pas les quelques malheureux didacticiels juste histoire d'écrire hello dans une boite avec à la rigueur un menu ;)

Sinon python est vraiment LE language à connaitre. Je suis dingue de lui.

Marcus le 17/06/2006 :

Ce qui est genant avec python comme avec java d'ailleurs , c'est qu'il doivent être installés sur la machine de celui qui lancera votre application.
Si vous utilisez linux ou mac osX pas de prob; Mais avec win, faut installer.
Problème inexistant avec le c/c++.
Notez qu'il existe py2exe qui, comme son nom l'indique, transformera votre app.py en app.exe.

Mais il est vrai que pour l'apprentissage python est nettement plus cool que le C. Car ... Bye bye les pointeurs !!
Ceci dit, en c++ aussi on dit :" bye, bye les pointeurs "

En fait, quel que soit le langage utilisé, l'important est de savoir quoi en faire. En ce qui me concerne, je pense que tout à déjà été inventé et codé.

Avez-vous lu ou entendu ? Maintenant, ils ont équipés les robots avec des logiciels qui peuvent apprendre eux-mêmes en fonction des erreurs commises. En fait les robots sont devenus plus malins et efficaces que des gosses.

Bon , sur ce, longue vie à python

DotMG le 10/08/2006 :

La seule et unique raison qui ne me permet pas encore d'essayer Python, c'est que l'installation sous Windows me semble trop compliqué. Il y a beaucoup de gens comme moi qui ne peuvent pas migrer totalement vers Linux (Il y a des applications Windows qui ne marchent pas avec Wine et sur lesquelles je dois bosser 90% du temps que je consacre à l'ordinateur, et quand elles tournent en arrière-plan, je ne peux même pas éteindre Windows).

Si je pouvais trouver un install python sous Win sur un CD ou si je pouvais télécharger cela sur le Net (à condition que la taille totale ne dépasse pas 10M), je suis sur que je deviendrais accroc dans moins de 24h.

David, biologeek le 10/08/2006 :

Je n'ai jamais installé Python sous Windows mais ça ne me semble pas insurmontable. Apparement c'est juste un installateur Windows classique qu'il faut récupérer sur sur la page de téléchargement. Je veux bien essayer de t'aider s'il y a des étapes où ça coince ! Essaye de perséverer, ça vaut vraiment le coup.

gnux le 15/08/2006 :

Bonjour
J'ai déjà installé Python sur Windows (au taff pour mouler tranquille...) et cela se fait très aisément. Tu cliques sur le .exe, tu choisis ou tu veux l'installer et tu as une barre de progression, en 5mn c'est fait (sous XP).
Pour revenir au sujet du post, je trouve que Scheme est pas mal pour débuter non plus. Par contre le fait que tu dises que Python manque de promotion m'étonne car on en entend bcp parler...
Un jour je m'y mettrais sérieusement (pour mieux comprendre bittorrent pe ...)

DotMG le 18/08/2006 :

OK! En fait, ce qui m'a tenté un jour à utiliser Python est le logiciel trac (edgewall.com). Après l'avoir téléchargé, j'ai lu dans leur doc d'install que l'installation de Python sous Windows était la partie la plus difficile, et j'ai été découragé sans essayer. Maintenant, je constate que leur remarque n'était pas fondée, donc je crois que je vais m'y mettre maintenant.

Un problème m'ennuie, et rien ne pourra y changer: J'utilise Vim (www.vim.org ) comme éditeur de texte, et pour les langages utilisant l'accolade (Php, C, ...) comme délimiteur de blocs, je peux facilement (et j'y suis habitué) voir l'autre délimiteur de bloc à l'aide de la touche %. Avec python, je dois faire défiler le script et me souvenir de la taille d'indentation.

Autre chose sur le site officiel de Python, on devrait y informer que la documentation est intégrée dans l'installeur (pour le .msi de Windows en tout cas). Cela m'aurait épargné de télécharger le même objet deux fois. (Que la bande passante coûte extrêmement cher chez moi :)

yhugo le 25/08/2006 :

<<Ce qui est genant avec python comme avec java d'ailleurs , c'est qu'il doivent être installés sur la machine de celui qui lancera votre application.>> -Marcus-

Salut,
Je commence à peine à m'ouvrir au monde de la programmation ... Je croyais (naïvement peut-être) qu'on pouvait faire tourné un site web en Python comme on le fait avec le PHP (traduit en HTML pour le browser) sans installer un lecteur comme JAVA ... ?

Quelqu'un pourrait éclairer ma lanterne svp ?

Et que pensez-vous de RUBY ? Quelle différence par rapport à PYTHON ? Les deux me semblaient assez "user friendly" pour un gars comme moi qui veut se lancer en prog ...

Salutations et merci pour ce site ...

David, biologeek le 25/08/2006 :

Salut yhugo,

> Je croyais (naïvement peut-être) qu'on pouvait faire tourné un site web en Python comme on le fait avec le PHP (traduit en HTML pour le browser) sans installer un lecteur comme JAVA ... ?

En effet, tu as tout à fait raison, pas besoin de machine virtuelle pour python qui ne renvoie que du html au navigateur.

> Et que pensez-vous de RUBY ? Quelle différence par rapport à PYTHON ?

Ruby est un très bon langage aussi. Si l'on met de côté la syntaxe que je trouve un peu moins évidente, l'avantage de Ruby est qu'il est vraiment tout objet (ce qui est un poil déroutant au début) mais Python gère l'unicode et pour l'instant c'est un avantage de taille. Essaye les deux, en une demi-journée tu peux t'être fait une première opinion.

Si tu veux te lancer dans la prog effectivement je te conseille un de ces deux langages.

NiCoS le 25/08/2006 :

Grâce à David, j'ai découvert Python et pour pas mourir idiot, je suis en train de lire le bouquin sur Ruby On Rails et en parallèle, je suis le tutoriel de Django.

La syntaxe de Python a en effet l'air plus clair que celle de Ruby. En tous cas, je la trouve plus lisible ;-)

Je n'ai toujours pas choisi lequel des deux je vais finir par retenir, j'attends d'arriver au bout de mes lectures et du tutoriel de django pour me décider. Pour le moment, j'avoue avoir une préférence pour Python mais la syntaxe de rails a l'air assez claire... enfin je suis assez partagé quand même...

qqs liens qui peuvent être utiles :
- www.unelectronlibre.info/...
- jesusphreak.infogami.com/...
- qqs marks sur python & ruby : blogmarks.net/user/NiCoS/...

sonic le 17/09/2006 :

Je perso, je n'aime pas Python !!! Je trouve que la syntaxe de ce langage est particulierement pourrie !!et qu'elle date d'autre age !Je crois que je ne m'y ferai jamais. Moi j'ai un faible pour Perl ! :-) car programmer sans les accolades .... franchement peu pour moi !!!

A+

Harry le 19/09/2006 :

Python serait plus populaire si vous mettiez en avant la rapidité des traitements plutôt que "la clarté, la simplicité et la beauté du code source" : c'est de la métaphysique ! Je gère un service de petites annonces qui ne peut plus évoluer en comptant uniquement sur php et mysql : des heures d'optimisation inutiles et qui font perdre autant de temps que d'argent à mon entreprise. Cette nuit je passe sur un serveur clusterisé avec un python dans la tour. Que ces deux communautés le sachent avant d'afficher des liens sponsorisés sur google : Entre deux languages de programmation je choisirais toujours celui qui permet à mes clients d'accèder plus rapidement à mes bases de données et ce peut importe le nombre de lignes à parcourir ou la longueur de la requête. Lisez les benchmarks : le reste c'est du délire de développeur et de forumeur.

kedare le 20/09/2006 :

personellement , je ne vois aucune avantage a python par apport a ruby , ruby ajoute des features tres interessante , le seul defaut je dirais que c'est la vitesse , ruby est pour le moment 2 fois plus lent que python, mais avec l'arriver de Ruby2 , qui comportera une VM a la place d'un interpreteur ,a nous la vitesse :)

da [k] spirit le 24/09/2006 :

développement Python

J'ai récemment eu envie de me remettre au développement, ayant 2-3 projets dans le coin de ma tête. Et je me suis dit que j'allais me mettre à Python, langage interprété, multiplateforme et libre bien évidemment. C'est un peu le langage à la...

Phoenyx le 24/10/2006 :

J'ai découvert Python en voulant m'initier a la programmation.
J'ai commencé par C++ et j'ai vite abandonné, mais je pense qu'une fois que je maitriserais Python , passer a un autre language ne sera qu'une formalité. L'objectif pour moi etait de bien cerner le processus de développement d'un programme, ainsi que l'argorithmique ( je suis pas un matheux , ni un literraire ).
Ce qui est bien avec Python c'est le livre telechargeable facilement depuis Framasoft " debuter en programmation avec python"
C'est la dessus que j'apprend tout doucement et ca porte ses fruits.

De plus j'ai pu observer les capacités de Python au travers d'un ERP ( Tiny ERP) que nous projetons d'integrer chez nos clients.

Je n'en connais surement pas tout un rayon sur les languages de programmation , mais pour quelqu'un qui veut s'initier je proposerais de commencer par Python , et ensuite rien ne l'empeche d'etudier d'autre languages , dès qu'on a compris l'algo et les methodes de développement je pense qu'on doit pouvoir passer d'un language a l'autre sans heurts ...

Dites moi si je me trompe.

Mister_Tsukimoto le 03/12/2006 :

Pour le liens du bouquin :D que je recommande à tout les débutants, avec des exos et tout

www.cifen.ulg.ac.be/infor...

zyegfryed le 18/01/2007 :

Salut,
Il faudrait mettre à jour le lien "Pourquoi Python" pointant sur le site de Nuxeo. Pourquoi ? Pour deux raisons :
- le lien est brisé en ne renvoie pas sur la bonne page
- pire encore, il explique le pourquoi du switchnig de Nuxeo à Java (ce qui est l'effet inverse d'amener de l'eau à ton moulin)
Bye :)
Seb

David, biologeek le 18/01/2007 :

Arf, merci de me l'avoir signalé... pas cool de la part de Nuxeo pour le coup :-/

jfern le 18/03/2007 :

Salut david,

Petite question pour avoir ton avis (et savoir argumenter devant un futur employeur... :-) ). Quels points tu mettrais en avant pour convaincre d'utiliser python (biopython) plutot que perl?

Merci pour ta réponse!

David, biologeek le 18/03/2007 :

Python est lisible, objet, dispose d'outils de documentation (doctests, unittests) avancés. Petit bonus, il est prêt à attaquer le web ;-).

Perl est write-only. C'est quasiment du jetable si quelqu'un veut remettre le nez dedans un jour...

Pour un employeur qui mise sur le long terme, le choix est vite fait à mon avis.

jfern le 19/03/2007 :

Merci pour cette réponse.

vulcanix le 09/10/2007 :

Python est certes séduisant pour les amateurs debutants etc ..
La complexité est renvoyée vers les bibliothéques , sortes de boites noires , qui font presque tout ... même le café . Sauf que lorsque on est devant un blocage ... comment savoir ce qui se passe au niveau de la bibliotheque

Pour les anciens , qui comme moi ont connu les processeurs 286 et 386 etc le basic interprété n'était pas viable en terme de rapidité . On a inventé le Basic compilé ( quickbasic de MS)

On utilisait des routines en assembleur .

L'apparition du C et puis du C++ accessoirement Pascal ont permis un progres considerable dans des developpements puissant et performants en rapidité

Certes avec la montée en puissance extraordinaire des processeurs actuels , le fait d'utiliser du langage dit L4G est compatible et acceptable en terme de rapidité .... mais la même application en C ou C++ il y a pas photo ( c'est de la formule 1)

Il y a des L4G commerciaux type Windev qui sont enfantins à utiliser

David, biologeek le 09/10/2007 :

@vulcanix : les bibliothèques ne sont pas des boîtes noires dans le sens obscur du terme, elles remontent généralement des erreurs compréhensibles par le commun des mortels. Vraiment. De plus, ces bibliothèques sont généralement open-source et comme c'est du python c'est facilement lisible :-).

Après concernant les performances, bien sûr C sera toujours plus rapide à exécuter (pour le coder par contre...), même s'il est possible d'optimiser son code python de façon à accélérer tout ça avec des bonnes pratiques/astuces. Dernier exemple en date : effbot.org/zone/wide-find...

urchin le 14/10/2007 :

Juste un truc, pour des programmes un peu plus gros que des utilitaires, j'aime quand même beaucoup le typage statique de Java ou C++. C'est quand même mieux de découvrir des problèmes à la compilation qu'à l'exécution, non?

David, biologeek le 14/10/2007 :

@urchin : si tu fais de la programmation dirigée par les tests tu as les erreurs dans des conditions quasi-réelles, encore mieux non ? :-)

Il faudra que j'écrive un truc là-dessus tiens.

urchin le 14/10/2007 :

@David: tout-a-fait, et je devrais le faire, le manque de tests dans mon application actuelle se fait cruellement sentir :/ Mais... (car il y a un gros 'mais') je ne sais pas ou trouver de bonne ressources pour concevoir des tests unitaires ou des tests d'integration pour des applications 'difficiles' (par exemple, je trouve les interfaces utilisateurs pas evidentes a tester, et d'autre part la plate-forme que je developpe est distribuee, donc il faudrait mettre en place toute une mecanique pour les tests).

Sinon, je continue a penser que le compilo est bien pratique pour diriger la programmation, i.e. faire un changement qui casse le source et en deduire les modifications a apporter pour que ca compile a nouveau.

En tout cas, je serai ravi de lire ce que tu as a dire sur le TDD, surtout pour des projets complexes. Et si tu connais des bonnes formations sur le sujet (et l'XP en general), je suis preneur aussi :)

Class le 08/11/2007 :

Salut tout le monde j'aurais voulu me mettre au Python mais quand je vois comme c'est pas pratique tu tout ...

en réalités je programme depuis le début de l'annés et j'ai commencé par le Visual Basic et j'ai trouver sa clair parfait pour tout application windows ( surtout avec la posibilité du mode Desing qui est bien pratique pour commencé! ) Bon je sais qu'il est imposible de d'allé bien loing avec VB mais pour commencé c'est vraiment Cool et simple !

Bishop le 17/12/2007 :

A première vue la syntaxe Python me fait penser au BASIC, le language avec lequel j'ai commencé la programmation...Si on implémente une application compexe ne risque-t-on pas les mêmes problèmes qu'avec BASIC: code spagetti, et surtout problème de performance??

David, biologeek le 17/12/2007 :

@Bishop : la syntaxe peut-être mais la notion d'objet a été poussée très loin avec Python donc non on n'arrive pas à du code spaghetti lorsqu'on sait un minimum développer. Niveau performances, ça reste de l'interprété mais c'est quand même assez performant pour un grand nombre de besoins, après il est possible d'optimiser certaines parties en mettant du C par exemple.

La meilleure façon de se faire une idée... c'est d'essayer :-).

Pinky le 03/01/2008 :

Une chose est sûre, T'es au top pour vendre ta marchandise. Bravo!
Il faut dire qu'il est toujours plus facile de vendre du bon et fastoche que ...
Python est en effet génial.
J'ai lu quelque part que le créateur du C++ a dit en voyant python :" J' ai perdu mon temps, c'est python que j'aurais dû inventer".
Ca laisse coit, non ?

Ceci dit, la simplicité de python ne se ressent vraiment qu'a son initiation parce que plus loin, comme tout langage de programmation, ca devient quand même chaud.
Si je devais opposer un langage à python, je crois bien que ce serait OCaml. ( à méditer )

mereaux le 26/01/2008 :

Je travaille dans le test:
quand les développeurs travaillent en C ou C++ je travaille en python
quand ils travaillent en java je travaille en jython
et dernièrement j'ai utilisé IronPython parce que j'avais une appli en C# ...
C'est facile et rapide.

simo le 06/02/2008 :

Bonjour
Je développe dans une application de gestion faite en Python.
J'utilise (codage manuel) uniquement la méthode fourni par l'éditeur pour ajouter de nouveau modules coté serveur.
Et c'est la même qui permet d'ajouter des interfaces sur le client.

Je sais qu'ils ont utilisé py2exe pour générer les exe à partir des script python. Et que le client est basé sur GTK.
Mais je ne sais pas exactement quel framework ils ont utilisé pour générer les interfaces graphiques du client (est-ce glade, wxpython, etc), et est ce qu'il existe aussi un framework graphique pour développer les modules coté serveur ?

A noter que le la licence du produit est en GPL.
Base de donnée PostgreSQL.
Architecture XML-RPC.
Modélisation O.R.M (object relationel mapping)

Voila quelques bibliothèque utilisé par le client windows :
libcairo-2.dll , tcl84.dll , tk84.dll , libxml2.dll , python24.dll , MSVCR71.dll , pythoncom24.dll , libpangoft2-1.0-0.dll , pywintypes24.dll , libglade-2.0-0.dll , libpangocairo-1.0-0.dll .

Voila quelques bibliothèques utilisées par le serveur :
tcl84.dll , tk84.dll , MSVCR71.dll , python24.dll , libxml2.dll , LIBPQ.dll , libexslt.dll.

Si qlq'1 connu de la doc sur les meilleurs framework qui permette le développement d'interface graphique avec python et sous GTK.

Lou le 19/02/2008 :

hello simo,

dans ta liste de librairies, on voit "libglade-2.0" donc ça répond à ta question non ?
essaye "stani python editor" spe, qui intègre le code et les gui.
Perso, je travaille avec glade pour une seule raison : il produit du xml pur, ce qui me permet de réarranger certaines choses si nécessaire "on the fly" sans rien recompiler.
Pour un MAX de doc et d'exemples, wxPython est d'une richesse extra : dans win xp, lancer : C:\Program Files\wxPython2.8 Docs and Demos\demo\demo.pyw donne plus de 200 exemples foudroyants, avec code prêt à copier-coller.
Si tu dois réaliser une interface technique (voltmètres, oscilloscopes, etc) tu devra plutôt te tourner vers PyQT pour QT4, tu y trouveras des librairies ad hoc. Bon vent.

codeStaler le 24/06/2008 :

Je me suis mis à Python pour mon stage.

Eh bien je peux dire qu'il est puissant, efficace et vraiment facile à prendre en main ; toutes les éloges qui lui sont faits sont justifiés.
Par contre, ayant débuté avec du C/C++, j'ai également quelques reproches à lui faire :

* Je trouve sa documentation officielle foire*se (très peu d'exemples ou pas du tout), des explications que peut-être je ne comprends pas.. .
Comparé au C/C++, Java dont la doc est abondante et de meilleure qualité (dans bien des cas).

* Il y a comme un manque de formalisme dans la programmation en Python.
. Les membres des objets tous publiques, ce qui est contraire à l'approche POO.
(d'où le besoin de créer les properties),
. plusieures implémentations pour les classes (new style classes=> object)
les __future__ statement, etc...
On sent que certaines choses n'ont pas été pensées au départ ou pensées différement et que l'équipe Python est obligé de "patcher" pour tout ce qui manque.
> Etat d'esprit du langage 'brouillon', des changements à prévoir d'une version sur l'autre (tellement extensible que ç'en est mal défini).

Par exemple, je cherche à organiser mon projet en package et j'ai besoin d'inclure des modules internes dans des scripts présents dans d'autres dossiers internes au projet. Le fonctionnement des fichiers __init__.py, de sys.path, PYTHONPATH est si bien expliqués que ça ne marche pas..

Comme quoi, rien ne peut être parfait..
Mais Python reste LA bonne alternative de langages info pour sa pédagogie, son utilisation dans des projets "pas trop complexes".

kib le 24/06/2008 :

codeStaler :

La plupart de tes reproches sont justifiés, la doc par exemple est très 'formelle', ne donne que peu d'exemples concrets et ne met pas toujours en évidence des points très importants.

Les attributs publics, ça se discute vu que n'importe qui peut y accéder et les modifier en bidouillant un peu. En pratique, je trouve que c'est plutôt une bonne chose, il faut simplement oublier le côté très formel de Java. Bien sûr, on s'éloigne un peu de la vraie POO.

Pour les classes, sous classer 'object' doit devenir une habitude.

C'est vrai que les détracteurs de Python lui reprochent ce côté un peu 'picoreur' et décousu : on emprunte une fonctionnalité à Java, une autre à Lisp (les lambdas, dire que Guido à failli les supprimer dans Python 3k), d'autres encore à Haskell (les lists comprehension). Mais qui s'en plaindrait au vu de l'efficacité ?

Pour les packages et modules, on a sans doute tous eû du mal au départ (et encore maintenant, dès que ça se complique un peu pour ma part). Le mieux est peut-être de regarder comment sont organisés quelques extensions bien écrites et pas trop longues.

Dargoan le 29/10/2008 :

Bonjour,

J'ai pas mal d'expérience en Java/J2EE.
Le truc bien avec Java/J2EE, c'est tout le savoir faire qu'il y a autour, le nombre d'IDE intéressants et tout et tout...
Ceci dit, je trouve Java très lourd, verbeux, et au final compliqué à maintenir, et faire évoluer.

La raison pour laquelle je me penche aujourd'hui sur Python, c'est qu'il me parait le meilleur langage en terme de compromis rapidité/concision/maintenabilité/évolutivité.
En revanche, existe-t-il des moyens de tester unitairement (comme JUnit, ServletUnit, HttpUnit)?

A-t-on la possibilité d'automatiser les tâches, comme avec Ant et Maven en Java?
Existe-t-il des outils qui "complètent" en quelque sorte le langage?

Merci à tous pour vos réponses.

David, biologeek le 29/10/2008 :

@Dargoan : oui il existe les unittests et doctests en Python, ces derniers sont vraiment utiles pour décrire des scenarii de tests contenant des exemples qui sont exécutés ce qui permet d'avoir la documentation toujours à jour. Il faut absolument utiliser ces outils !

Concernant Ant et Maven, je sais pas exactement ce que ça fait en Java.

Celestin le 17/12/2008 :

Tes billets m'ont vraiment donné goût à Python. C'est très convaincant je l'avoue, merci et bonne continuation !

Nickko le 10/02/2009 :

J'ai essayé de me mettre à python, mais ce qui lui manque cruellement c'est un environnement de développement graphique qui permettent justement de développer des interface rapidement.
La beauté du code est une chose, l'efficacité du développeur en est une autre.

Une autre chose toujours ayant trait aux interfaces c'est la diversité des "framworks" permettant de réaliser une interface. Le choix est difficile, il n'y en a pas vraiment une qui se dégage.

Mais sinon, ma préférence va clairement à python en regarde de ruby, perl, tcl et consort. Dès que j'ai trouvé un bon outil de dev pour faire les interfaces, je me lance.

akaj le 09/03/2009 :

"du coup il est possible encore une fois de se concentrer sur notre véritable objectif : faire une application spécifique qui n'a pas encore été codée."

Héhé le truc c'est que on apprend beaucoup plus à coder qu'a programmer... ou une nuance dans le style. Dans le cycle d'ingénieur c'est dur de ne pas commencer par le C, faire un peu de LISP et forcement Java... mais je comprend mal, les autres filieres où on les bourres de matlab, java, bash etc... ou seul les plus hardu en informatique pourront envisager de les utiliser dans leurs travaux (je parle surtout en java) enfin bref alors que tous ces outils sont dispo avec Python. Les choses changent mais trop lentement.

Python on peut tout faire, c'est jolie, facile et puissant... que demande le peuple ?

J'ai l'impression que tout le monde dis que Python c'est génial ! En parler cela devient difficille si c'est pas pour repeter ce qui est dit déjà ailleurs et bien mieux... même si tu te debrouille pas mal !

akaj le 09/03/2009 :

@Nickko: essaye pygtk avec glade c'est magique... c'est orienté gnome mais tu peux reussir à lancer tes applications pygtk sous windows (c'est même sur). Y a même des truc qui mélange mvc et pygtk [1] je sais pas trop ce que cela donner mais sait ton jamais !

[1] http://stackoverflow.com/questions/310856/python-gtk-mvc

akaj le 09/03/2009 :

malheureusement pas mal de code est en anglais http://glade.gnome.org/... mais y pletore d'exemple d'application en pygtk donc je pense que niveau doc-code ça devrait aller ;)

rémy le 16/04/2009 :

J'essaye depuis longtemps de me mettre à la programmation, chaque tentative ayant alors échouée à la vue des syntaxes à faire "froid dans le dos" d'un débutant. Java, C, chacun restant "chiant" à apprendre.
Avec l'entrée dans Linux (bien que pour Python çà ne fait pas de différences), j'ai découvert le nom de "Python", puis ce site, puis ce super ebook gratuit "Apprendre à programmer avec Python" de Gérard Swinnen".
Python : je m'amuse, c fun, c surtout intelligent car simple et efficace. Je le recommande à tous les débutants, exit tout ce qui y avait avant ! (^^)
Vive Python !

rémy le 20/04/2009 :

Ici le lien vers le bouquin pdf de Gérard Swinnen "Apprendre à programmer avec Python" : http://inforef.be/swi/python.htm

Ya même les corrections des exos (!! génial)
Il est génial aussi ce Gérard !! Merci Mr Swinnen :)

Natim le 13/11/2009 :

Trois ans après le post est encore d'actualité.
Depuis django est entré dans la place pour le développement web.

Damien Petitjean le 23/09/2010 :

En plus, Python c'est très utile quand on est développeur web !

zeddy le 17/01/2011 :

Tout porte à croire que Python permet vraiment de renverser les navires. Je ne m'arrêterais pas sur les détails tels que les interfaces conviviales de dev, car tous savons que les choses sérieuses nécessitent une maitrise parfaite de l'ouvrage donc les WYSIWYG ne devraient pas faire partie du quotidien d'un geek. Par contre, comment expliquer que les gens ne se soient pas rués vers python, quand on sait ce que l'on peut en faire surtout dans les socket.

CyberMuz le 10/11/2011 :

Moi je suis en train de me mettre à python. Je suis étudiant en sécurité et système d'info et les outils python pour la sécurité y en a des masses !

Je pense que n'importe quel admin système devrait connaitre le python. Nan ?

meuledor95 le 07/12/2011 :

Le langage python a l'air pas mal, mais j'ai l'impression qu'avec les différents modules à rajouter au fur et à mesure (accès Excel, accès Oracle, librairie graphiques, etc), les environnements (dev, prod) et livraisons peuvent devenir assez lourdes voires hasardeuses.

Je me trompe ?

Comment être sur qu'on a bien les bons modules avec les bonnes versions installées au bon endroit ?