Comparatif entre Perl et Python

Dans le cadre des exposés réalisés par les étudiants en cours de Système, j'ai choisi de présenter les différences et les similitudes entre deux langages de scripts : Perl et Python. Téléchargez la version Powerpoint de cette présentation.


Les objectifs de cette présentation sont :

L'accent sera mis sur Python, car c'est un langage moins connu, qui promet malgré tout de de belles perspectives.
Ecrivez à Cédric Bertho - IR 5 pour toutes questions ou commentaires.
 



 
  1. Origines de Perl et PythonPerl comme Python sont des langages de scripts évolués, c'est à dire des langages interprétés. Dans les deux cas, les scripts sont traduits par un "programme" (interpréteur spécifique à Perl ou à Python) chaque fois qu'ils sont exécutés (ce qui n'est pas le cas des programmes compilés comme en langage C). L'avantage à celà, c'est que l'on peut expérimenter et débugger plus facilement nos "programmes-scripts" car on ne passe pas par une phase intermédiaire de compilation.

  2. Python a été développé en 1990 par Guido van Rossum (université d'Amsterdam). A l'origine, il était destiné au projet Amoeba (projet de conception de système d'exploitation). Il ne doit pas son nom au serpent mais à la série des Monthy Python?s Flying Circus à partir de laquelle de nombreux codes d'exemples se sont inspirés.

    Perl quant à lui a été développé en 1987 par Larry Wall (université de Seattle Pacific ?). Il était destiné initialement aux traitements de chaînes de caractères sous Unix (avec l'utilisation des expressions régulières). Son acronyme signifie "Practical Extraction and Report Language" ou "langage de rapport et d'extraction pratique".
     
     
     

  3. A quoi servent-ils ?Tous deux permettent :

  4.  
     
  5. Quelles sont leurs similitudes ?Perl et Python sont tous les deux gratuits, portables et Open Source.

  6. Ce sont des langages multi-plateformes qui tournent sur les environnements Unix, Windows, BeOs, MacOS, Amiga, ...
    Ils peuvent être utilisés de manière procédurale ou orientée objet.
    Tous deux supportent des structures de données riches et dynamiques (listes, hashtables, ...).
    Ils possèdent de fortes communautés de développeurs (CPAN (Comprehensive Perl Archive Network) pour Perl et PSA pour Python).
    Ils disposent de nombreux modules et bibliothèques d?outils.
    Ils sont lents à l'exécution (surtout pour du parsing sur des gros fichiers -voir dans la partie suivante-).
     
     
     
  7. Quelles sont leurs différences ?On dit que "Perl est plus gros, mais Python grossit plus vite". Celà signifie qu'en terme de documentation et de support communautaire, de modules d'extension, Perl est bien plus important par rapport à Python. Perl est réputé pour avoir la plus grande infrastructure communautaire de tous les langages de scripts, notamment grâce au CPAN qui est un ensemble d'archives de documentation et de codes réutilisables.

  8. Malgré tout, l'engouement pour Python grandit beaucoup plus vite qu'il ne l'a été pour Perl. Le nombre de personnes présentes aux conférences sur Python augmente plus rapidement que celui des conférences sur Perl.

    L'orientation objet est native pour Python, alors qu'elle est superficielle pour Perl. Python s'assemble donc plus facilement avec des composants orientés objets. D'ailleurs, les modules les plus récents ou les plus intéressants sont d'abord portés ou mieux portés sur Python.

    Les performances de parsing sur des fichiers XML entre Perl, Python (et d'autres langages) mesurées sur le site : http://www.xml.com/pub/Benchmark/exec.html montrent que Perl est légèrement plus performant que Python. Tous deux restent malgré tout très lents par rapport à un programme écrit en langage C.

    Ce sur quoi la polémique est la plus forte entre les deux langages, c'est leur syntaxe respective.
    Le slogan des "adorateurs" de Perl est : "There?s more than one way to do it", ce qui signifie "Il y a plus d'une façon de le faire". Ce slogan est souvent repris aussi bien par les fans de Perl que par ses opposants pour fonder leurs argumentations. En Perl, il y a plusieurs manières d'arriver au même résultat pour un programme : référencer un élément dans une liste, écrire l'ensemble des paires clé/valeur définisant une hastable peuvent s'écrire de différentes façons ! Celà peut être un avantage dans la mesure où l'on gagne en liberté d'implémentation. Seulement, cette liberté s'accompagne d'une réputation de syntaxe illisible pour les néophytes. La syntaxe de Perl est complexe, elle n'est pas à la porté du premier débutant en programmation venu. De plus, la présence de nombreux symboles tels que @, _, %, sur une ligne de script peut produire une certaine fatigue ou "bruit" à la lecture du code source. Les fans disent que c'est une économie d'expression, les opposants de Perl l'accusent d'avoir un côté "astuces".

    Le grand point fort de Python sur Perl c'est sa lisibilité. Le slogan des fans de Python est : "Life?s better without braces", ce qui signifie "La vie est meilleur sans accolades". En Python il n'existe pas d'accolades pour délimiter un bloc de code. En fait, le programmeur Python n'a pas le choix dans la façon de formater son code s'il veut pouvoir l'exécuter sans erreurs. Comme pour un Makefile, une mauvaise indentation produit une erreur de syntaxe (voir les exemples de code dans la partie suivante). La syntaxe de Python est plus donc constante et uniforme, voir restrictive. Sa rigidité lui permet d'être plus compréhensible par tous, notamment pour des projets avec plusieurs auteurs et des centaines de lignes de codes sources. Les scripts Python ont tous la même "tête", ils peuvent donc être relus par d'autres plus facilement. Cette remarque n'est pas négligable surtout lorsque l'on sait qu'un développeur passe au moins autant de temps à lire et comprendre un code qu'à l'écrire !
     
     
     

  9. Exemples d'utilisation :L'objectif de cette partie n'est pas de détailler la syntaxe de code de chacun des exemples, mais d'avoir plutôt un bref aperçu visuel des différences de syntaxe entre Perl et Python.

  10.  
  11. Lequel choisir ?Il est difficile de donner une réponse tranchée à cette question.

  12. Perl s'adresse d'avantage à des gens ayant déja programmé, des programmeurs familiers au C, à Sed, Awk ou aux commandes Unix. Il nécessite la compréhension des expressions rationnelles, et d'avoir la faculté de comprendre le code des autres. On l'utilise plus volontier pour le traitement de chaînes de caractères ainsi que pour les CGI.

    Python semble plus approprié aux débutants en programmation. Il intéressera d'avantage ceux qu'ils veulent faire de la programmation orientée objet. Les réactions contre Perl n'apparaissent pas avec Python : ceci atteste la qualité du design et l'implémentation en Python. De part ses conventions, son esthétisme et son support inhérent pour des ensembles d'objets, Python est plus adapté aux projets de grande taille.

    Pour conclure, si vous ne savez toujours pas lequel choisir, le mieux de les essayer tous les deux par vous même ! ;-)




Références internet :