Début d'une série d'articles sur Perl

Posté par  . Modéré par Fabien Penso.
Étiquettes : aucune
0
19
juin
2003
Perl
Si vous connaissez l'e-zine nova mag, vous avez peut-être remarqué l'arrivée d'un nouvel auteur (moi en l'occurence) et d'un article d'introduction à la programmation Perl. Si vous voulez vous lancer dans la programmation mais que vous avez peur de l'obscurité du C, Perl est fait pour vous.
Ce premier article est le début d'une (longue ?) suite d'autres, d'ailleurs le second (présentation de la syntaxe) est presque fini.
J'espère que cet article convaincra les frileux de plonger dans l'univers Perl entre deux plongeons dans la piscine ;) Le but de cette dépèche n'est pas de relancer l'éternelle guerre Perl <=> Python, mais d'aider les débutants en programmation à se lancer à pieds joints dans la programmation Perl, que je trouve être un excellent langage et une super passerelle pour passer au C plus tard.
Cependant, lançons un petit troll, résultat d'un googlefight Perl contre Python : perl : 13 200 000 résultats et python : 5 420 000 résultats

Aller plus loin

  • # Re: Début d'une série d'articles sur Perl

    Posté par  . Évalué à 10.

    l'obscurité du C

    L'obscurite du C vs l'illisibilite du Perl ?
    Ca va troller, cherie :)

    Serieusement, c'est n'importe quoi, ce genre d'argument, non justifie en plus. Tout langage digne de ce nom, C et Perl compris, sont tres clairs et tres lisibles a condition de programmer proprement.
    Par ailleurs, le choix du langage devrait se faire en besoin du programme a coder, pas en fonction de criteres a deux balles comme une soi-disante obscurite.

    Le bonjour chez vous,
    Yves
    • [^] # Re: Début d'une série d'articles sur Perl

      Posté par  . Évalué à 7.

      > Tout langage digne de ce nom, C et Perl compris, sont tres clairs et tres lisibles a condition de programmer proprement.

      Je te rappelle que là, il s'agit de debuter la programmation, alors pour ce qui est de programmer proprement..

      La question interressante est plutot, quel language reste a peu pres lisible meme quand on programme mal?

      Et la réponse est: pas trop le C et surtout pas le Perl !!
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 4.

        Ce commentaire a été supprimé par l’équipe de modération.

        • [^] # Re: Début d'une série d'articles sur Perl

          Posté par  . Évalué à 2.

          Ca parait tout de suite plus clair !!! (mais à quoi ils tournent les ponger, je sais pas ce que c'est mais vu l'effet que ça fait j'en veux !!)
          • [^] # Commentaire supprimé

            Posté par  . Évalué à 3.

            Ce commentaire a été supprimé par l’équipe de modération.

            • [^] # Re: Début d'une série d'articles sur Perl

              Posté par  . Évalué à 2.

              $ = scalaire (string ou nombre ou référence)

              C'est pas aussi simple, tu sais...

              $machin->{truc}
              • [^] # Commentaire supprimé

                Posté par  . Évalué à 2.

                Ce commentaire a été supprimé par l’équipe de modération.

                • [^] # Re: Début d'une série d'articles sur Perl

                  Posté par  . Évalué à 3.

                  Euh, la, je suis mort de rire...

                  'my $h={"a"=>"b"}; print "$$h{a} ${$h}{a} $h->{a}\n";

                  Et apres on dit que le C, c'est obscur :)
                  Mouahahahahaha

                  Le bonjour chez vous,
                  Yves
                  • [^] # Commentaire supprimé

                    Posté par  . Évalué à 1.

                    Ce commentaire a été supprimé par l’équipe de modération.

                    • [^] # Re: Début d'une série d'articles sur Perl

                      Posté par  (site web personnel) . Évalué à 4.

                      Combien de lignes auras-tu ?

                      tu confonds concision et clarté j'ai bien peur...
                      • [^] # Re: Début d'une série d'articles sur Perl

                        Posté par  . Évalué à 1.

                        tu confonds concision et clarté j'ai bien peur...

                        Tout à fait. En plus je pense qu'il ne faut pas oublier l'historique des langages qui peuvent profiter des précédents langages pour ne pas commettre les mêmes "erreurs".

                        Je vais peut-être en faire rire certains mais je préfère vraiment faire un script shell en PHP (que je trouve bien plus logique que Perl) plutot que de devoir relire un bouquin pour re-comprendre Perl.

                        Pour moi, la seule chose de bien de Perl est l'utilisation dans le langage des expressions régulières. A part ça ...
                        • [^] # Re: Début d'une série d'articles sur Perl

                          Posté par  . Évalué à 1.

                          Tout ca c'est des querelles d'habitues. Tu es habitue a PHP et pas trop a Perl alors tu ne fais pas l'effort (tu n'en as pas vraiment besoin) de te mettre vraiment a Perl donc tu ne le comprends toujours pas mieux, donc tu ne l'aimes pas mieux. Ca m'a fait pareil avec Python qu'on me force a utiliser au boulot. Je n'arrive pas a aimer, car chez moi je ne fais que coder en Perl et c'est un vrai orgasme a chaque ligne de Perl que j'ecris (mal).
                          Perl sait faire un compromis entre heritage du C traditionnel et concepts modernes puissants, et franchement pour moi c'est le langage le plus agreable a utiliser.
                      • [^] # Commentaire supprimé

                        Posté par  . Évalué à 1.

                        Ce commentaire a été supprimé par l’équipe de modération.

        • [^] # Re: Début d'une série d'articles sur Perl

          Posté par  . Évalué à 3.

          > Perl > ($maybe ? $a : $b) = $x; Le C propose une syntaxe equivalente, comme le c++, le java, ...
          • [^] # Re: Début d'une série d'articles sur Perl

            Posté par  . Évalué à 3.

            ce qui aurait donne (a peu pres) :
            maybe ? a = x : b = x;

            ce qui est legerement different de ce que veut nous montrer alenvers.

            voila... et je ne suis partisan d'aucun des langages suscites :P
            • [^] # Commentaire supprimé

              Posté par  . Évalué à 3.

              Ce commentaire a été supprimé par l’équipe de modération.

              • [^] # Re: Début d'une série d'articles sur Perl

                Posté par  . Évalué à 2.

                Perl est tres lisible comme la plupart des langages dignes de ce nom, quand on le programme proprement.
                Perl devient vite illisible quand on le code avec les pieds.

                Il se trouve que Perl dispose de fonctionnalites assez puissantes. Pour le Perl, en l'occurence, les expressions rationnelles permettent de faire de grandes choses. Et etant donne leur syntaxe pleine de symboles non alphanumeriques, elles rendent le Perl vite pas tres lisible si on les utilise n'importe ou et n'importe comment. Voila ce qui fait la reputation de langage pas tres lisible.

                Maintenant, je le repete: quand on programme proprement, le code est lisible, peu importe le langage.

                Le bonjour chez vous,
                Yves
                • [^] # Re: Début d'une série d'articles sur Perl

                  Posté par  . Évalué à 0.

                  je n'ai jamais vu un programme perl qui soit lisible du premier coup par quelqu'un ayant des bases infos mais ne connaissant pas perl ...
                  autrement dit ... perl, au premier abord, ça fait pas envie ... sauf aux geeks!
                • [^] # Re: Début d'une série d'articles sur Perl

                  Posté par  . Évalué à 1.

                  Il faut que tu programmes en Goto++ pour voir. Avec les sorties de boucle aleatoires et le texte ecrit a l'envers je crois qu'il peut difficilement etre aussi lisible que du Perl ou du C. C'est d'ailleurs surement la raison pour laquelle il n'existe pas de Goto++ obfuscator.
            • [^] # Re: Début d'une série d'articles sur Perl

              Posté par  . Évalué à 3.

              et pourtant...
              (maybe ? a : b) = x;

              moi non plus, j'y croyais pas, mais finalement...

              voila... et je ne suis partisan d'aucun des langages suscites :P
              Perl ro><or !!! ;)
              • [^] # Re: Début d'une série d'articles sur Perl

                Posté par  . Évalué à 2.

                >et pourtant...
                >(maybe ? a : b) = x;

                Effectivement. Pour ceux qui veulent tester:

                /* cut -- essai.c -- cut */
                #include <stdio.h>

                int main(void) {
                int a = 1, b=2;
                int x = 0;
                int maybe = 1;

                printf("x=%d\na=%d\nb=%d\n", x, a, b);
                (maybe ? a : b) = x;
                printf("x=%d\na=%d\nb=%d\n", x, a, b);
                return 0;
                }
                /* end cut */

                > Perl ro><or !!! ;)
                on avait dit pas de partisans ! (objc rox :-P)
          • [^] # Commentaire supprimé

            Posté par  . Évalué à 3.

            Ce commentaire a été supprimé par l’équipe de modération.

          • [^] # Re: Début d'une série d'articles sur Perl

            Posté par  . Évalué à -1.

            >Le C propose une syntaxe equivalente, comme le c++, le java, ...

            Non, non, non, ...
          • [^] # Re: Début d'une série d'articles sur Perl

            Posté par  . Évalué à 1.

            > Le C propose une syntaxe equivalente, comme le c++, le java, ...

            Non, non, non, ...
  • # Perl pour débuter la programmation?

    Posté par  . Évalué à 3.

    Beurk, ça me parait encore pire que le BASIC pour débuter!

    Personnellement j'aurais tendance a preferer Ruby, mais c'est apres avoir utiliser le shell et le Perl, pour un débutant je conseillerais Python sans hésitation.

    Pour ce qui est de la recherche a Google, a deux balle, franchement aucun interet..
    • [^] # Re: Perl pour débuter la programmation?

      Posté par  . Évalué à 1.

      Le Python, c'est clair que c'est un langage plus indiqué pour débuter que le Perl:
      - Lisibilité accrue en l'abscence de ; {}, indentation obligatoire
      - Clareté de la syntaxe (pas de $, @, ...)
      - Possibilité d'apprendre l'OO facilement car bien intégrée au langage.
      etc...
      PS: Attention, j'aime bien le Perl, il est très bon en expressions régulières et traitements de fichiers, mais le Python est bcp plus adpaté...
      • [^] # Re: Perl pour débuter la programmation?

        Posté par  . Évalué à 2.

        Si on suit l'ordre des choses, le mieux ne serait-il pas de comencer en assembleur, puis en C, puis des languages de plus haut niveau ? Car s'il est interessant d'utiliser la notion de threads en java, mais si on ne sait pas trop ce qui se passe en dessous (comme les semaphores par exemple), on peut avoir du mal a comprendre pourquoi le code ne fonctionne pas.

        Quelqu'un qui debute en java fera facilement cette erreur:
        void creeTable(int [] t)
        {
        t = new int[5];
        }

        avec un background d'assembleur ou de C (malloc), on comprend pourquoi ce code ne marche pas.

        -----------------------------
        Clavier qwerty :(
        • [^] # Re: Perl pour débuter la programmation?

          Posté par  . Évalué à 1.

          oui et non ... le cheminement que tu propose est l'inverse d'une démarche reflechie qui va de la théorie a la pratique...
          il vaut mieux, d'apres moi, commencer par les concepts (l'algo/structuration) puis par des langages qui implémentent ces concepts (donc forcément haut niveau) , puis , pour ceux que ça interesse, redescendre , jusqu'a l'assembleur si besoin...
          partir de l'assembleur vers les autres langages, c'est se former au pissage de code (apprendre a faire du bon code optimisé).
          apprendre a programmer, c'est plus apprendre a passer de la vrai vie au programme (et non pas apprendre a passer du materiel informatique au programme) ...

          j'ai appris l'assembleur (68k) tres tot, ça me sert effectivment a comprendre des choses, mais beaucoup de gens sont aussi performants que moi sans avoir ces bases...
          Pour tout dire, je connais des collegues qui sont tres performant dans leur codage (parce qu'ils sont surtout performant dans la conception) et sont parfaitement incapables de monter un PC, installer un OS, comprendre la différence entre un port serie et parallelle etc...
      • [^] # Re: Perl pour débuter la programmation?

        Posté par  (site web personnel) . Évalué à 3.

        Franchement j'avais lu du source python dans lequel pas moyen de retrouver ce que je cherchais donc de corriger le bug mineur.
        J'ai commencé à faire du ruby hier (sans tutorial, juste en jetant un coup d'oeuil a des sources) et je trouve ca très clean.

        Et sinon, je vois pas en quoi l'absence de {} augmente la lisibilité...
        • [^] # Re: Perl pour débuter la programmation?

          Posté par  . Évalué à 1.

          >Et sinon, je vois pas en quoi l'absence de {} augmente la lisibilité...

          Et bien, ca force a indenter correctement: c'est penible a ecrire, mais plus agreable a relire et comme ca, on est sur que tous le monde indente de la meme maniere.

          Sinon entre ruby et python, je trouve que les deux se valent pour un programmeur experimenté: je prefere la syntaxe de Ruby mais Python est plus utilisé (plus de librairie).
          Pour un debutant, je pense qu'imposer l'indentation des sources, plus l'absence des $, @ font pencher la balance pour Python..
          • [^] # Re: Perl pour débuter la programmation?

            Posté par  . Évalué à 1.

            Il faut se demander ce qu'on veut lui apprendre, au debutant. Est-ce qu'on veut lui expliquer comment ecrire de petits algorithme sans se tracasser avec le type de donnees (donc sans $ ni @ ni %) ou bien est-ce qu'on veut lui donner de bonnes bases en lui apprenant a differencier ses donnees, comment le compilateur/interpreteur conserve la trace du type associa a chaque varible, etc... Je ne pense pas que le Perl ou le Python soient vraiment plus adaptes a des debutants. On est beaucoup a avoir commence en C, sans vraiment souffrir.
            Concernant le Python, l'absence de {} est un calvaire pour moi. Imbrique deux ou trois boucles et au bout essaie de revenir a la premiere, tu ne sais pas de combien tu dois desindenter. Avec les {} la plupart des editeurs te permettent de retrouver rapidement le { associe a un }. En langage machine, les {} se traduisent obligatoirement par des instructions conditionnelles et des sauts. Le fait que le Python ne les traduise pas a l'ecran me semble contre-nature.
  • # Re: Début d'une série d'articles sur Perl

    Posté par  . Évalué à 1.

    Cependant, lançons un petit troll, résultat d'un googlefight Perl contre Python : perl : 13 200 000 résultats et python : 5 420 000 résultats

    !TROLL BEGIN!

    ça me paraît normal, la lisibilité du Python fait qu'on ne doit pas recommencer ses programmes 6 mois après faute de pouvoir reprendre ses source PERL ;-)

    !TROLL END!
  • # Re: Début d'une série d'articles sur Perl

    Posté par  . Évalué à 3.

    je ne connais pas le perl et ne peu donc pas le juger.
    par contre, il me semble que le mieux pour débuter la programmation, c de commencer par effectuer des taches d'automatisation en script shell, puis de s'apercevoir que l'on peut faire des choses plus puissante et de se tourner vers un "vrai" langage de programmation.
    A cet effet, python me semble adapté, car syntaxiquement très clair (contrairement à certain je pense quand même que les {} lui manque au niveau lisibilité).
    L'utilisation d'un langage naturellement plus obscur (python, perl (?)) nécessite à mon humble avis des notions préalables d'algorithmique pour se contraindre à écrire de manière lisible.

    Just my 0.02 €
    • [^] # Re: Début d'une série d'articles sur Perl

      Posté par  . Évalué à 1.

      Les {} peuvent manquer à certains, justement ceux qui en ont l'habitude... C'est pas plus lisible avec puisque Python t'oblige à indenter les instructions donc elles sautent aux yeux lors d'une lecture d'un script...
    • [^] # Re: Début d'une série d'articles sur Perl

      Posté par  (site web personnel) . Évalué à 3.

      le problème c'est que les langages de shell sont tous plus ou moins truffés de cas particulier pour simplifier la vie des geeks (tout ce qui est expansion de variables, blindage à coups de backslash etc). Autant de bruit syntaxique, c'est un obstacle énorme ; j'ai remarqué que les élèves s'attachent énormément à la syntaxe, en attendant d'avoir acquis la vision d'ensemble du langage ou de la programmation. Comme langage d'initiation je pense donc que scheme est bien plus adapté... ça permet d'expliquer le classique (if (prédicat) #t #f). Dans le même esprit (syntaxe expressive mais ultraminimale) smalltalk permet très rapidement de faire des programmes avec lesquels on peut interagir graphiquement, sans se poser les problèmes de librairies ou autres. Pour continuer dans les langages intéressants à apprendre, on peut considérer Haskell, Prolog, Mozart ou, plus près du vrai monde, Eiffel, OCaml... de quoi avoir une meilleure idée de ce qu'est la programmation qu'avec perl :]
      • [^] # Re: Début d'une série d'articles sur Perl

        Posté par  . Évalué à 1.

        Alors le Scheme est vraiment super bien pour apprendre l'algorithmique, a ne pas ecrire comme un porc, a bien reflechir avant de coder etc... Je me souviens des trucs enormes qu'on arrivait a faire avec une ligne de Scheme utilisee de facon recursive. Ca n'en reste pas moins traumatisant :o)
    • [^] # Re: Début d'une série d'articles sur Perl

      Posté par  . Évalué à 2.

      perl c'est le seul langage ou CHAQUE fois que j'en refais je suis obligé de reprendre la manuel. Il me suffit de ne pas pratiquer pendant 2 semaine pour oublier une partie du langage, c'est sûrement cette capacité formidable du cerveau à oublier les évènements traumatisants ;)
  • # Re: Début d'une série d'articles sur Perl

    Posté par  . Évalué à 5.

    Bienvenue nouveau perleur,

    Je signale mon " Introduction à la programmation en Perl "
    compilation des 7 articles que j'avais fait paraître dans LinuxMag.
    http://www.lhullier.org/articles/perl.html(...)

    Bonne continuation.
  • # Re: Début d'une série d'articles sur Perl

    Posté par  . Évalué à 6.

    Personne n'en a marre d'ecrire des introductions au C et/ou ou et/ou au Perl ? Une des caracteristique de Perl est que sa documentation est extraordinairement bien foutue; les pages de man et les livres oreilly pour ceux qui veulent du papier etant les references. Faire des choses plus claire que LW ou TC me semble difficile. De plus il y'a deja de *TRES* bon articles pour debuter le Perl, dont ceux du monsieur juste au dessus de moi :-) J'ai du mal a voir l'interet de reecrire des choses qui ont deja ete ecrites 20 fois ? Apres fait des trucs rigolo comme les derniers articles du LMF par les mongeurs ou ca traite de sujet peu souvent abordés et qui montrent de nouvelles choses... Enfin bon c'est ma vision des choses !
    • [^] # Re: Début d'une série d'articles sur Perl

      Posté par  . Évalué à 0.

      Je ne sais pas où tu as appris à lire. Ce n'est qu'un article d'introduction. Je pense écrire 3-4 articles sur les bases de la prog Perl et ensuite enquiller sur des applications spécifiques (ncurses, Gtk2, SDL, ...). De plus, tous les mans Perl sont consultables sur le site et j'y fait beaucoup référence.
      Malheureusement, l'anglais est rebutant pour beaucoup de personnes, et autant commencer du bon pied.

      Pour les trolls Perl/Python ou Perl/C je m'y attendais, mais no comment ...
  • # Protégez moi de mes amis, je m'occupe des mes ennemis

    Posté par  . Évalué à 2.

    Cet article est presque vide de contenu et les rares informations concrètes sont incorrectes ou incomplètes. La compilation d'un programme perl5 ne génère pas de bytecode par exemple. Perl6 (http://dev.perl.org/perl6/(...) ) dont le VM parrot (http://www.parrotcode.org/(...) ) est en cours de développement le fera. Le lien vers <href="http://www.cpan.org(...)">CPAN de l'article est cassé et de toute façon le point d'entrée pour chercher un module est plutôt search.cpan.org (http://search.scpan.org(...) ).

    Si vous voulez lire des articles sur Perl en Français je vous conseille LinuxMag dont la série d'article initiée par Sylvain Lhuillier et continuée par d'autres membres des mongeurs de Perl. LinuxMag nous laisse gracieusement les mettre ces articles (http://articles.mongueurs.net/magazines/(...) ) en ligne un mois après publication.

    Enfin les mongueurs de Perl organise YAPC::EU 2003 (http://yapc.mongueurs.net(...) ) la version européenne et donc anglophone de YAPC (http://www.yapc.org(...) ). Le prix est modique: 99 euros.

    Je peux déjà dire que des gourous interviendrons tels que Mark Jason Dominus (http://conferences.oreillynet.com/cs/os2003/view/e_spkr/10(...) ) (aussi (http://perl.plover.com/(...) )) ou Leopold Tötsch, l'implémenteur du VM de Parrot susmentionné, et coauteur du livre sur perl6 (http://www.oreilly.com/catalog/perl6es/(...) ) à paraître L'annonce de la liste des "talks" sera prochainement publiée sur LinuxFr.

    Pour d'autres sources d'information sur Perl: perl.com (http://www.perl.com(...) ), userperl (http://useperl.org(...) ), perlmonks (http://perlmonks.org(...) ), O'Reilly (http://perl.oreilly.com(...) ), books.perl.org (http://books.perl.org(...) ).

    reformatté qd j'ai découvert que lfr ne supporte pas les ancres:

    perl -pe 's|(.*?)|$2 ($1 )|g'

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.