=encoding iso-8859-1 =head1 NOM perlfaq1 - Questions d'ordre général sur Perl ($Revision: 1.15 $, $Date: 1998/08/05 11:52:24 $) =head1 DESCRIPTION Cette section de la FAQ répond aux questions d'ordre général et de haut niveau sur Perl. =head2 Qu'est ce que Perl ? Perl est un langage de programmation de haut niveau avec un héritage éclectique écrit par Larry Wall et un bon milier de développeurs. Il dérive de l'omniprésent langage C et, dans une moindre mesure, de Sed, Awk, du shell Unix et au moins d'une douzaine d'autres langages et outils. Son aisance à manipuler les processus, les fichiers et le texte le rend particulièrement bien adapté aux tâches faisant intervenir le prototypage rapide, les utilitaires système, les outils logiciels, les gestionnaires de tâches, l'accès aux bases de données, la programmation graphique, les réseaux, et la programmation web. Ces points forts en font un langage particulièrement populaire auprès des administrateurs système et des auteurs de scripts CGI, mais l'utilisent également des mathématiciens, des généticiens, des journalistes et même des managers. Et peut être vous aussi ? =head2 Qui supporte Perl ? Qui le développe ? Pourquoi est-il gratuit ? La culture d'origine d'Internet et les croyances profondément ancrées de l'auteur de Perl, Larry Wall, ont donné naissance à la politique de distribution gratuite et ouverte de perl. Perl est soutenu par ses utilisateurs. Le noyau, les bibliothèques standards Perl, les modules optionnels, et la documentation que vous êtes en train de lire ont tous été rédigés par des volontaires. Vous pouvez consulter les notes personnelles à la fin du fichier README de la distribution du code source de Perl pour plus de détails. L'historique des versions de Perl (jusqu'à la 5.005) est disponible ici : L. En particulier, l'équipe principale de développement (connue sous le nom 'Perl Porters') est une bande hétéroclite d'individus des plus altruistes engagés à faire un logiciel gratuit meilleurs que tout ce que vous pourriez trouver dans le commerce. Vous pouvez glaner des informations sur les développements en cours sur news://genetics.upenn.edu/perl.porters-gw/ et http://www.frii.com/~gnat/perl/porters/summary.html. Bien que le projet GNU inclue Perl dans ses distributions, il n'y a pas à proprement parler de "GNU Perl". Perl n'est pas produit ni entretenu par la Free Software Foundation. Les termes de la licence de Perl sont aussi moins restrictifs que ceux de la licence GNU. Vous pouvez obtenir une assistance commerciale pour Perl si vous le souhaitez, mais pour la plupart des utilisateurs une assistance informelle devrait être largement suffisante. Regardez la réponse à question "Où acheter une version commerciale de perl" pour de plus amples informations. =head2 Quelle version de Perl dois je utiliser ? Vous devriez sans hésitation utiliser la version 5. La version 4 est ancienne, limitée et n'est plus mise à jour; son dernier patch (4.036) date de 1992. La version la plus récente distribuée est la 5.005_01. Les références au langage Perl plus loin dans ce document se rapportent à cette version sauf indication contraire. Il pourra y avoir un correctif de bug officiel pour la version 5.005_01 le temps que vous lisiez ceci, et également peut être quelques versions expérimentales en vue de la prochaine distribution. =head2 Qu'est-ce que perl4 et perl5 ? Perl4 et perl5 sont des noms informels pour désigner les différentes versions du langage de programmation Perl. Il est plus facile de parler de "perl5" que de "la version 5(.004) de Perl", mais certaines personnes ont interprété cela et pensent qu'il y a un langage appelé "perl5", ce qui n'est pas le cas. Perl5 est tout simplement le nom populaire désignant la cinquième version majeure (octobre 1994) tandis que perl4 était la quatrième (mars 1991). Il y eu également un perl1 (en janvier 1988), un perl2 (juin 1988), et un perl3 (octobre 1989). La version 5.0 est essentiellement une réécriture complète du code source de perl. Il a été modularisé, orienté objet, ajusté, élagué, et optimisé jusqu'à ce qu'il ne ressemble plus à l'ancien code. Cela dit, l'interface est quasiment la même, et la compatibilité avec les versions précédentes est très grande. Pour éviter la confusion "quel est le langage perl5 ?", certains préfèrent parler simplement de "perl" pour se référer à la dernière version de perl, plutôt que d'employer le terme "perl5" en entier. C'est sans grande importance de toute manière. Voir L pour un historique des révisions de Perl. =head2 Est-ce que Perl est stable ? Les nouvelles versions produites, qui incluent des corrections de bugs et de nouvelles fonctionnalités, sont amplement testées avant d'être distribuées. Depuis la version 5.000, on compte en moyenne une version par an. Larry et l'équipe de développement Perl font occasionnellement des changements dans le noyau interne du langage, mais tous les efforts possibles sont déployés pour assurer la compatibilité descendante. Bien que quelques scripts perl4 ne tournent pas impeccablement sous perl5, une mise à jour de perl ne devrait presque jamais invalider un programme écrit pour une version plus ancienne. (exception faite des corrections de bugs accidentels et des rares nouveaux mots réservés). =head2 Est-il difficile d'apprendre Perl ? Non, il est facile de débuter et même de continuer l'apprentissage de Perl. Il ressemble à la plupart des langages de programmation que vous avez probablement rencontré, aussi si vous avez déjà écrit un programme en C, un script awk, un script shell ou même un programme en BASIC, vous avez déjà fait une partie du chemin. La plupart des tâches ne requiert qu'un petit sous-ensemble du langage Perl. Une des idées phares en matière de développement Perl est : "Il y a plus d'une façon de procéder". La courbe d'apprentissage de Perl est étroite (facile à apprendre) et longue (il y a beaucoup de choses faisables si vous le voulez réellement). Enfin, Perl est (souvent) un langage interprété. Cela signifie que vous pouvez écrire vos programmes et les tester sans phase intermédiaire de compilation, vous permettant ainsi d'expérimenter et de débugguer rapidement et facilement. Les choses qui facilitent l'apprentissage de Perl sont : l'expérience d'Unix, quasiment n'importe quelle expérience de la programmation, une compréhension des expressions rationnelles, et la capacité de comprendre le code des autres. S'il y a quelque chose que vous avez besoin de faire, alors il a probablement été déjà fait, et un exemple fonctionnant est généralement disponible gratuitement. N'oubliez pas non plus les modules perl. Ils sont abordés dans la partie 3 de cette FAQ, et avec le CPAN dans la partie 2. =head2 Est-ce que Perl tient la comparaison avec d'autres langages comme Java, Python, REXX, Scheme ou Tcl ? Oui pour certains domaines, moins pour d'autres. Définir précisément dans quels domaines Perl est bon ou mauvais est souvent une question de choix personnel, et poser cette question sur Usenet risque fortement de déclencher un débat houleux et stérile. La meilleurs chose à faire est certainement d'essayer d'écrire le code équivalent dans plusieurs langages pour accomplir un ensemble de tâches. Ces langages ont leurs propres newgroups dans lesquels vous pouvez en apprendre plus (et non, espérons le, vous disputer) sur eux. =head2 Que puis-je faire avec Perl ? Perl est suffisamment souple et extensible pour que vous puissiez l'employer pour tout type de tâche, du traitement de fichier ligne par ligne à des systèmes complexes. Pour de nombreuses personnes, Perl remplace avantageusement les outils existants pour les scripts shell. Pour d'autres, c'est un substitut efficace et de haut niveau pour tout ce qu'ils programmeraient en langage de bas niveau comme C ou C++. En définitive c'est à vous (et certainement à votre direction...) de voir pour quelles tâches vous allez utiliser Perl ou non. Si vous avez une bibliothèque fournissant une API, vous pouvez en rendre n'importe quel composant disponible comme une fonction ou une variable Perl supplémentaire en utilisant une extension Perl écrite en C ou C++, et dynamiquement liée dans votre interprêteur perl principal. A l'opposé, vous pouvez également écrire votre programme principal en C/C++, et ensuite lier du code Perl au vol pour créer une puissante application. Ceci dit, il y aura toujours des langages dédiés à une classe de problèmes qui sont tout simplement plus pratiques. Perl essaye d'être tout à la fois pour tout le monde, mais rien de précis pour personne. Les exemples de langages spécialisés qui viennent à l'esprit comptent prolog et matlab. =head2 Quand ne devrais-je pas programmer en Perl ? Quand votre patron vous l'interdit - mais envisagez de lui trouver un remplaçant :-) En fait, une bonne raison pour ne pas utiliser Perl est d'avoir une application déjà existante écrite dans un autre langage qui est toute faite (et bien faite), ou si vous avez une application conçue pour une tâche spécifique dans un langage particulier (i.e. prolog, make) Pour des raisons variées, Perl n'est probablement pas bien adapté pour des systèmes embarqués temps-réel, des développements systèmes de bas niveau, des travaux comme des pilotes de périphérique ou du code à commutation de contexte, des applications paralèlles complexes en mémoire partagée, ou des applications très grandes. Vous remarquerez que perl n'est pas lui même écrit en Perl. Le nouveau compilateur Perl de code natif peut réduire ces limitations jusqu'à un certain degrés, mais comprenez que Perl reste fondamentalement un langage à typage dynamique, et non à typage statique. On ne vous en voudra pas si vous ne lui faites pas confiance pour un code de centrale nucléaire ou de contrôle de chirurgie cérébrale. Larry en dormira d'autant mieux - [ Wall Street programs not withstanding. :-) ] =head2 Quelle est la différence entre "perl" et "Perl" ? Un bit. Ah, mais vous ne parliez pas de codes ASCII ? :-) Larry emploie le terme "Perl" pour désigner le langage en lui même, tandis que "perl" désigne sont implémentation, c'est à dire l'interpréteur actuel. D'où la boutade de Tom : "Rien d'autre que perl ne peut analyser Perl". Vous pouvez ou non choisir de suivre cet usage. Par exemple dire que le parallèlisme implique "awk et perl" et "Python et Perl" semble ok, tandis que "awk et Perl" ou "Python et perl" ne l'est pas. [parallelism means "awk and perl" and "Python and Perl" look ok, while "awk and Perl" and "Python and perl" do not] [NdT: ma phrase ne veut rien dire, j'ai du rater un faux-ami sur "parallelism"] =head2 Parle t on de programme Perl ou de script Perl ? Cela n'a pas d'importance. En "terminologie normalisée" un I a été compilé un fois dans un code machine, et peut ensuite être lancé plusieurs fois, alors qu'un I