mercredi 19 mai 2010

Pourquoi choisir Python ?

Geek, scientifique, hacker, bidouilleur, codeur ... vous qui avez envie de développer rapidement ce qui vous passe par la tête sans forcément avoir pour objectif de construire la nouvelle application énorme qui va changer le monde. Vous qui avez simplement envi de résoudre votre petit problème par de la programmation, de tester votre algorithme ou bien de voir ce que vous pouvez faire avec certaines données. Python est fait pour vous.

Qu'est-ce que je note comme avantage ?

  • Python est relativement multi-platforme pour peu que vous ne touchiez pas à des APIs spécifiques, un avantage de plus en plus appréciable de nos jours où le tout Windows s'effrite à vue d'oeil ;
  • La syntaxe de Python est légère, mais alors très très légère. L'indentation par exemple permet à l'interpréteur de comprendre la structure de votre code. Le désavantage (léger) de ce point est que l'auto-indentation de votre IDE ne vous sera d'aucune aide... Mais l'avantage c'est que votre code est compact et donc facile à afficher sur un seul écran, et vous pouvez donc lire votre programme rapidement ;
  • Python privilégie la simplicité et offre un accès de haut niveau à de nombreuses choses ; typiquement la lecture complète d'un fichier tient en deux lignes sur la première file = open('./votre/fichier') sur la seconde content = file.read(), la même chose en Java, en PHP ou en C, prend tout de suite des allures plus complexes pour des raisons de buffers qui se révèlent inutiles dans la plupart des cas.
  • Il existe de très nombreuses librairies, parmi les plus connus et celles dans lesquelles j'ai mi les main côté algo : Networkx (modélisation de graphe creux type réseaux sociaux), SciPy (plein d'outils scientifique, avec entre autres des générateurs de nombres aléatoire reposant sur toutes les lois de probabilités que vous pouvez espérer) et NumPy qui fournit plein de nouvelles structures de données ;
  • Python est un langage interprété qui connaît de multiples implémentations ayant chacune leur spécificités mais qui permettent pour certains de compiler le code pour en optimiser l'exécution ;
  • Python se branche très facilement sur des librairies écrites dans d'autres langages (C entre autre) ;
  • Python n'est pas tenu pour rapide mais néanmoins j'y suis passé pour cette raison, j'ai constaté une amélioration significative pour des problématiques de réseau sociaux entre le couple Java/Jung et Python/Networkx... C'est d'ailleurs pourquoi je suis étonné par ce graphique de performance qui ne lui donne pas une très bonne place.
Les mauvaises nouvelles maintenant :
  • Python est actuellement en version 3.x mais la version 3.0 stoppant la rétrocompatibilité tout ce que vous trouverez est taillé pour Python 2.6 voir 2.5... Par ailleurs, Python est coupé en plein de petit bout de librairies, si vous êtes sous Linux tout va bien : aptitude résout tous vos problèmes, mais sous Mac c'est objectivement une horreur, pour peu que vous vouliez passer votre code entre les deux plateformes vous allez vraiment faire du mal à votre coeur... Je n'ai pas eu le "plaisir" de tenter l'expérience sous Windows, mais ça doit valoir sa dose d'antidépresseurs.
  • Python ça va vite, c'est simple, mais donc ce n'est pas assez rigoureux pour les débutants, le typage dynamique bloque pas mal d'aide contextuelles et du coup j'aurais tendance à vous dire d'y aller doucement si c'est pour un premier essai de la programmation.
  • Pour la même raison que je le déconseillerais à des débutants, je n'ai pas encore bien compris comment structurer une grosse application en Python, j'ai l'impression que le moindre développement peut très vite virer à l'anarchie (vision médiatique de la chose), du coup je me restreins à des développements de tests et de petits scripts sur ce langage.
Si vous avez envie vous lancer dans Python, renseignez-vous un peu sûr :
  • Pydev, le plugin Eclipse qui vous donnera un bon coup de main !
  • IPython un interpréteur un peu amélioré ;
  • BPython un interpréteur qui ajoute cette fonctionnalité excellente qu'est l'auto complétion et l'aide contextuelle... Je suis fan !
  • Reinteract qui offre pas mal de fonctionnalités pour construire rapidement de petit modèle (un substitut potentiel à Excel sur le long terme) ;
  • SciPy la librairie qu'il ne faut définitivement pas oublier ;
  • Networkx si vous voulez jouer avec des modélisations de réseau sociaux ;
  • Python-Twitter si vous voulez jouer en plus avec l'API de votre système de microblogging favoris ;
  • Ubigraph qui même s'il n'a rien à voir avec Python peut être un outil de visualisation très très pratique lorsqu'on le met en interaction avec les deux items précédents.
Le site de Nojhan qui laisse quelques bout de code Python trainer par ci par là et qui a eu le bon goût de faire connaître Reinteract et BPython


2 commentaires:

  1. peut-être existe-t-il des outils tels que Aptitude pour Mac, ou plus raisonnablement :
    - Fink (apt-get) -> voir http://fink.sourceforge.net
    - Fink Commander ( l'installateur graphique )

    RépondreSupprimer
  2. Il en existe mais c'est pas aptitude, et ça reste une galère.

    RépondreSupprimer

Related Posts with Thumbnails