Pourquoi Python ? L'avis de Bruce Eckel

Pourquoi Python ? L'avis de Bruce Eckel - Python - Programmation

Marsh Posté le 26-10-2002 à 17:35:03    

honteusement copié de la ML python@aful.org
 
http://www.nuxeo.com/techno/python/eckel.html
 
Pourquoi Python ? L'avis de Bruce Eckel
=======================================
 
:Author: Stéfane Fermigier (Nuxeo.com)
:Version: 1.0 du 26/10/2002
 
Au cours de la 9ème conférence internationale des utilisateurs de Python (http://python9.org/) qui s'est tenue du 5 au 8 mars en Californie, l'un des conférenciers invités était Bruce Eckel, spécialiste respecté de la programmation objet et auteur de deux best-sellers sur le sujet, "Thinking in C++" (http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html) et "Thinking in Java" (http://www.mindview.net/Books/TIJ/) . Celui-ci a déclaré qu'il était tombé amoureux du langage Python et que c'était à présent le premier langage auquel il pensait au moment d'attaquer un problème de programmation.
 
Selon lui, si le fait de passer de C++ à Java permet de doubler en moyenne la productivité des programmeurs, alors le passage de C++ à Python représente de son côté un gain d'un facteur 5 à 10.
 
Les dix raisons qu'il met en avant pour justifier sa passion pour Python sont:
 
  10. **Lisibilité et simplicité**. L'indentation fait partie intégrante de la syntaxe de Python, ce qui en fait un langage par nature plus lisible. C'est un critère de poids lorsqu'on sait qu'on passe beaucoup plus de temps à relire des programmes qu'à les écrire.
 
  9. **Python n'impose pas de coût de compatibilité ascendante**. Bien des langages populaires se vantent d'une compatibilité ascendante, mais au prix d'une syntaxe malaisée (C++ and Perl) ou d'une verbosité importante (Java).
 
  8. **Il ne sacrifie pas la productivié à la performance**. Plutôt que d'obliger le programmeur à implémenter des séquences de code bizarres au nom de la sacro-sainte "efficacité", Python implémente des idiomes faciles à apprendre
  - tout en autorisant l'écriture d'extensions écrites en C lorsque les performances l'exigent.
 
  7. **Il fait confiance au programmeur**. Il n'interdit pas la surcharge des opérateurs, ne met pas l'accent sur la déclaration de types, et ne prétend pas être ce qu'il n'est pas.  
 
  6. **Les programmeurs Python n'ont pas besoin d'attendre indéfiniment une implémentation complète du langage** - alors que certaines fonctionnalités inventées par le comité de standardisation du C++ attendent toujours d'être implémentées.
 
  5. **Python ne préjuge pas de la façon dont nous découvrons nos erreurs**. Il ne force pas la vérification du typage statique et incite le programmeur à découvrir ses erreurs rapidement à partir de données réelles.
 
  4. **Il n'est pas (encore) pollué par les excès du marketing**, contrairement à Java et MS Visual C++, par exemple, qui ont été survendus.
 
  3. **Il n'exige pas de taper beaucoup de code**. Python n'est pas aussi abscons qu'APL, ni aussi excessivement inventif que Perl ou FORTH, ni aussi verbeux que Java.
 
  2. **Il est intuitif**. Java et C++ exigent des programmeurs qu'ils vérifient constamment la syntaxe utilisée dans les manuels de référence du langage. Les idiomes utilisées par Python sont plus faciles à retenir.
 
  1. **Langage de haut niveau, Python permet de se concentrer sur les concepts**. Nul besoin de s'échiner sur la conception de Java, ni de se débattre avec les bugs de compilation ou d'exécution du C++.
 
Plus d'infos: http://www.mindview.net/Books/TIPython

Reply

Marsh Posté le 26-10-2002 à 17:35:03   

Reply

Marsh Posté le 26-10-2002 à 17:46:50    

:jap:


---------------
Le site de ma maman
Reply

Marsh Posté le 26-10-2002 à 17:53:03    

droit de réponse:
 
 

10. Lisibilité et simplicité. L'indentation fait partie intégrante de la syntaxe de Python, ce qui en fait un langage par nature plus lisible. C'est un critère de poids lorsqu'on sait qu'on passe beaucoup plus de temps à relire des programmes qu'à les écrire.


 
>>> en phase de développement: si c'est pas claire dans ta tete, c'est pas plus claire une fois taper. Sinon, le truc de l'indentation, c'est juste une préférence comme les begin/end ou les {}. tu indentes bien ton code (ou tu utilises un soft qui le fait) et tu as le meme résultat.
 
 

9. Python n'impose pas de coût de compatibilité ascendante. Bien des langages populaires se vantent d'une compatibilité ascendante, mais au prix d'une syntaxe malaisée (C++ and Perl) ou d'une verbosité importante (Java).


 
>>> différentes philosophie qui s'affrontent, c'est tout
 
 

8. Il ne sacrifie pas la productivié à la performance. Plutôt que d'obliger le programmeur à implémenter des séquences de code bizarres au nom de la sacro-sainte "efficacité", Python implémente des idiomes faciles à apprendre - tout en autorisant l'écriture d'extensions écrites en C lorsque les performances l'exigent.


 
>>> un bon programmeur C/C++ ne fait jamais de code bizarre...
 
 
 

7. Il fait confiance au programmeur. Il n'interdit pas la surcharge des opérateurs, ne met pas l'accent sur la déclaration de types, et ne prétend pas être ce qu'il n'est pas.


 
>>> typage statique vs. typage dynamique
 
 

6. Les programmeurs Python n'ont pas besoin d'attendre indéfiniment une implémentation complète du langage - alors que certaines fonctionnalités inventées par le comité de standardisation du C++ attendent toujours d'être implémentées.


 
>>> ? pareil pour tous les langages
 
 

5. Python ne préjuge pas de la façon dont nous découvrons nos erreurs. Il ne force pas la vérification du typage statique et incite le programmeur à découvrir ses erreurs rapidement à partir de données réelles.


 
>>> c'est le problème du typage dynamique: constater une erreur à l'exécution, ca s'appelle un bug dans un programme pour une pauvre histoire de type
 
 

4. Il n'est pas (encore) pollué par les excès du marketing, contrairement à Java et MS Visual C++, par exemple, qui ont été survendus.


 
>>> d'accord
 
 

3. Il n'exige pas de taper beaucoup de code. Python n'est pas aussi abscons qu'APL, ni aussi excessivement inventif que Perl ou FORTH, ni aussi verbeux que Java.


 
>>> j'aime bien le Perl
 
 

2. Il est intuitif. Java et C++ exigent des programmeurs qu'ils vérifient constamment la syntaxe utilisée dans les manuels de référence du langage. Les idiomes utilisées par Python sont plus faciles à retenir.


 
>>> question de philosophie: si tu saisie celle d'un langage ca passe tout seul.
 
 

1. Langage de haut niveau, Python permet de se concentrer sur les concepts. Nul besoin de s'échiner sur la conception de Java, ni de se débattre avec les bugs de compilation ou d'exécution du C++.


 
>>> idem en Java et en C++
 
 
J'aime bien le Python mais ces cibles diffèrent radicalement de celles du C/C++: les comparaisons sont tres difficiles. A mon avis, il répond a un nouveau besoin d'application (graphique) portable d'informatique de gestion. Le but n'est pas de chercher la performance, mais la vitesse de développement.
Le python n'est pas la pour eclipser le C/C++/Java/Perl, il ouvre un nouveau champ.
 
 
Mais bon, il faut bien essayer de se vendre.  :hello:


Message édité par Taz@PPC le 26-10-2002 à 17:54:24

---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 02-11-2002 à 21:26:30    

Je ne pense pas qu'Eckel voit python comme un langage de remplacement mais plutôt comme un langage complémentaire.
 
Et il a raison, les couples python/C et jython/java sont vraiment des combinaisons très intéressantes.
 
Le fait de pouvoir étendre très simplement les fonctionnalités de python en appelant directement des librairies C (via swig) ou bien inversement utiliser dans un programme C tout l'arsenal python permet de créer des protos d'applis ou des tests très rapidemement.


Message édité par verdoux le 02-11-2002 à 21:26:49
Reply

Marsh Posté le 08-11-2002 à 14:19:16    

Citation :

6. Les programmeurs Python n'ont pas besoin d'attendre indéfiniment une implémentation complète du langage - alors que certaines fonctionnalités inventées par le comité de standardisation du C++ attendent toujours d'être implémentées.


c'est bizzar, je croyais justement que l'evolution de python etait totalement vouée au bon vouloir du "maitre" guido?


Message édité par pospos le 08-11-2002 à 14:19:52
Reply

Marsh Posté le 08-11-2002 à 14:38:48    

pospos a écrit a écrit :

Citation :

6. Les programmeurs Python n'ont pas besoin d'attendre indéfiniment une implémentation complète du langage - alors que certaines fonctionnalités inventées par le comité de standardisation du C++ attendent toujours d'être implémentées.


c'est bizzar, je croyais justement que l'evolution de python etait totalement vouée au bon vouloir du "maitre" guido?




 
Oui. En fait c'est pas vraiment un avantage ce point. Ce que le mec veut dire par la a mon avis, c'est que y'a pas des trucs qui sont définis dans le langage mais non supporté par les compilateurs.

Reply

Marsh Posté le 08-11-2002 à 14:43:53    

**Il fait confiance au programmeur**.  
 
mouais, je connais pas Python, mais en entreprise, moins tu laisses de liberte au programmeur, plus tu reduis le risque de problemes ... par exemplem, le passage de C++ a Java permet de se soustraire des problemes d'allocation memoire, et prevenir ainsi un nombre **incroyable** de fuites memoire ou de pointeurs mal initialises.
 
Je prendrais plutot "Il fait confiance au programmeur" comme un inconvenient plutot qu'un avantage, de meme que "Python ne préjuge pas de la façon dont nous découvrons nos erreurs" ....
 
De maniere generale, l'article est loin d'etre objectif, puisqu'il diabolise des langages comme C++ ou Java a grands renforts d'arguments plus ou moins discutables, etant donne que Python et C++/Java semblent ne pas jouer dans la meme categorie. Pourquoi les comparer dans ce cas ? Tu trouveras toujours des cas ou Perl fout la raclee a Java, ou VB torche C++, etc etc ...


Message édité par Gonzoide le 08-11-2002 à 14:48:19
Reply

Marsh Posté le 08-11-2002 à 14:46:10    

Gonzoide a écrit a écrit :

 
un argument valable




 
Mais ca dépends du contexte. C'est clair que pour faire une gorsse application industrielle, Python n'est pas l'outil adapté. Il manque trop de choses, comme la possibilité d'avoir des membres privés, par exemple.
 
Par contre, pour faire du prototypage ou un programme vite developpé, cette souplesse redevient un avantage.

Reply

Marsh Posté le 08-11-2002 à 14:50:32    

lorill a écrit a écrit :

 
 
Mais ca dépends du contexte. C'est clair que pour faire une gorsse application industrielle, Python n'est pas l'outil adapté. Il manque trop de choses, comme la possibilité d'avoir des membres privés, par exemple.




Tout a fait d'accord, voir l'edit de mon post ci-dessus : si les langages ne sont pas faits dans le meme but, a quoi sert de les comparer ? Pour parser un fichier j'utilise Perl, pour ecrire une appli serveur j'utilise Java. Pourtant je ne peux pas dire que, globalement, l'un est mieux que l'autre, c'est ridicule. C'est comme l'eternelle comparaison de JSP et PHP, C++ et Java, etc etc

Reply

Marsh Posté le 19-01-2003 à 14:48:28    

Je voudrais juste re situer un peu le sujet :
 
http://www.ceramiko.ch/python/CHAP_1/sv4854853.jpg
 
voila, maintenant essayez de comparer ce qui est comparable...


Message édité par Phod le 19-01-2003 à 16:44:07

---------------
Signatures aux choix Votez:  O - Le python c'est bon, mangez-en  O - L'abus de forum rend dependant, postez avec modération
Reply

Marsh Posté le 19-01-2003 à 14:48:28   

Reply

Marsh Posté le 19-01-2003 à 15:05:48    

cool ton schéma  :sol:
 
edit: je confirme le gain incroyable.
 
en ce moment, je travail sur une apploc lcient serveur et le traitement des données fait par le serveurs et les clients est soumis à un impératif temporels pour des raisons temporels.
 
je voyais meme pas comment faire mon traitement en awk, j'avais commencé, mais vu les spécifications de awk, le code a vite commencé a gonflé et les performances ont directes morflées (cela dit je suis pas un pro de awk)
 
je tente python: en 30min j'ai fait mes 2 scripts impeccablement. ça tourne tres bien, ça me permet de faire un traitement beaucoup plus riche qu'avec un langage classique comme awk, et en plus avec la sérialisation et le module gzip, mes communications clients-serveur sont bien meilleurs et beaucoup plus facile à gérer.


Message édité par Taz le 19-01-2003 à 15:13:12
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed