Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Nouveau tutoriel: de Perl 5 à Perl 6


Sujet :

Langage Perl

  1. #1
    Rédacteur/Modérateur

    Nouveau tutoriel: de Perl 5 à Perl 6
    Bonjour,

    j'ai mis en ligne ces jours-ci la première partie d'un nouveau tutoriel sur Perl 6, axé sur les différences entre Perl 5 et Perl 6, afin de faciliter la transition vers Perl 6 des lecteurs connaissant déjà Perl 5:

    De Perl 5 à Perl 6 - Partie 1: les bases du langage.

    Bonne lecture à tous.

    EDIT :

    Les nouveautés ajoutés dans la mise à jour du 24/12/2015 :

    • les regex et surtout les grammaires de Perl 6 (§ 7), en particulier la possibilité d'ajouter dynamiquement des nouveaux éléments syntaxiques à la grammaire Perl 6 existante, rendant le langage intrinsèquement malléable et évolutif ;
    • un nouveau système de programmation orientée objet (§ 6) particulièrement flexible, puissant et expressif ;
    • les fonctions multiples (§ 5) et la capacité de créer dynamiquement de nouveaux opérateurs ou de surcharger des opérateurs existants ;
    • un modèle de programmation fonctionnelle (§ 4) très enrichi avec en particulier le support aux listes paresseuses ;
    • un modèle de programmation parallèle et concurrente (§ 8) de haut niveau, fiable, facile à utiliser et extrêmement prometteur.

  2. #2

  3. #3
    Membre averti
    J'ai juste regardé le début mais ça m'a l'air comme d'habitude d'un super boulot.
    Je vais m'y pencher plus sérieusement car il y a l'air d'y avoir pas mal de changements

  4. #4
    Membre du Club
    Merci beaucoup pour ce tutoriel.

    Etant débutant en Perl et voulant vraiment me lancer dedans, me conseillez vous de commencer par ces tutoriel PERL ou bien de lire d'abord des tutoriels concernant Perl 5 ?
    Merci pour vos précisions.

  5. #5
    Rédacteur/Modérateur

    Franchement, je te conseille Perl 5, robut et fiable depuis longtemps, très bien documenté, très bien testé et disponible sur des dizaines d'environnements ou de systèmes différents. De plus, la bibliothèque de modules additionnels (le CPAN) est immense, sans doute la plus grande du monde, tous langages confondus.

    En face de cela, Perl 6 est encore en cours de développement, il n'y a pas encore de compilateur complet, bref le langage et son écosystèmes sont encore très immatures, et il n'y a encore que très peu de documentation.

    J'aurai peut-être un avis différent dans un an ou deux, mais pour l'instant, Perl 5 est la bonne solution.

  6. #6
    Membre du Club
    Citation Envoyé par Lolo78 Voir le message
    Franchement, je te conseille Perl 5, robut et fiable depuis longtemps, très bien documenté, très bien testé et disponible sur des dizaines d'environnements ou de systèmes différents. De plus, la bibliothèque de modules additionnels (le CPAN) est immense, sans doute la plus grande du monde, tous langages confondus.

    En face de cela, Perl 6 est encore en cours de développement, il n'y a pas encore de compilateur complet, bref le langage et son écosystèmes sont encore très immatures, et il n'y a encore que très peu de documentation.

    J'aurai peut-être un avis différent dans un an ou deux, mais pour l'instant, Perl 5 est la bonne solution.
    Super merci beaucoup pour ta réponse

  7. #7
    Rédacteur/Modérateur

    De Perl 5 à Perl 6 - Partie 2: les nouveautés
    Bonjour,

    j'ai mis en ligne ces jours-ci la deuxième partie d'un nouveau tutoriel sur Perl 6, axé sur les différences entre Perl 5 et Perl 6, afin de faciliter la transition vers Perl 6 des lecteurs connaissant déjà Perl 5:

    De Perl 5 à Perl 6 - Partie 2: les nouveautés

    Bonne lecture à tous.

  8. #8
    Membre régulier
    Un grand merci pour ce tutoriel.

    Juste en 6.2.2 : 1 / (2 / 4) = 1/2 donne 2 plutôt

  9. #9
    Futur Membre du Club
    relevé erreur
    Un bien noble effort, merci.

    Attention tout de même aux imprécisions. Par exemple, la façon correcte de simplifier:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    print "Vrai\n" if $nombre == 9 or $nombre == 10;


    est:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    print "Vrai\n" if $nombre == 9|10


    et non:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    print "Vrai\n" if $nombre == 9 or 10;

  10. #10
    Rédacteur/Modérateur

    Bonsoir grondilu,

    merci de ton message et de tes encouragements.

    J'aborde la syntaxe que tu préconises dans le premier chapitre de la seconde partie du tutoriel, consacré aux jonctions.

    Au moment où je décris la syntaxe possible que je propose et que tu cites, je n'ai pas encore abordé les jonctions et je cherche juste à donner un exemple de simplification syntaxique par rapport à Perl 5 et à tous les autres langages que je connais.

    A ma connaissance, la syntaxe que je propose fonctionne parfaitement:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    > my $nombre = 10;
    10
    > print "Vrai\n" if $nombre == 9 or 10;
    Vrai
    > say "Vrai" if $nombre == 10 or 9;
    Vrai


    Je vais tout de même ajouter la syntaxe que tu proposes comme autre solution, mais pas tout de suite, là il se fait tard. Sans doute ce week-end.

  11. #11
    Futur Membre du Club
    RE:
    Citation Envoyé par Lolo78 Voir le message
    Bonsoir grondilu,
    A ma connaissance, la syntaxe que je propose fonctionne parfaitement:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    > my $nombre = 10;
    10
    > print "Vrai\n" if $nombre == 9 or 10;
    Vrai
    > say "Vrai" if $nombre == 10 or 9;
    Vrai

    La syntaxe est correcte en effet mais elle ne correspond pas du tout à la sémantique suggérée.

    Considère ceci:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    > say "Vrai" if pi == 1 or 2;
    Vrai


    Comme en perl5, l'opérateur "or" a une priorité très faible, de telle sorte que la commande ci-dessus doit se comprendre:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    > say "Vrai" if ( (pi == 1) or (2) );


    (pi == 1) or (2) est toujours Vrai puisque 2 a une valeur booléenne vraie.

  12. #12
    Rédacteur/Modérateur

    Bonjour,

    tu as raison, il y a effectivement une erreur de précédence. Il faut ajouter des parenthèses pour que la sémantique soit correcte.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    > my $nombre = 10;
    10
    > say "vrai" if $nombre == (10 or 9)
    vrai
    > say "vrai" if $nombre == (11 or 9)
    Nil
    > say "vrai" if $nombre == (11 || 9)
    Nil
    > say "vrai" if $nombre == (10 || 9)
    vrai


    Je corrigerai au plus vite. Merci beaucoup de m'avoir prévenu, cela me permet d'améliorer le contenu.

    Cordialement,
    Laurent.

  13. #13
    Futur Membre du Club
    Re.
    Non ça n'est toujours pas correct.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    say "ok" if 10 == (10 or 9)


    affiche Ok car 10 or 9 retourne 10, mais ça n'est pas vraiment ce que tu voulais faire. Par exemple:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    say "ok" if 10 == (9 or 10)


    n'affiche rien car au final ce qui est testé c'est 10 == 9 cette fois, puisque 9 or 10 retourne 9.

    Pour faire ce que tu veux faire il faut vraiment utiliser une jonction. infix:<or> n'a pas du tout la sémantique appropriée.

    Je comprends l'intérêt qu'aurait une telle sémantique dans la mesure ou ça se rapproche beaucoup du langage naturel, mais tu en demandes trop là.

    A ce point dans ton manuel je suggère de se contenter d'illustrer le caractère chaîné de infix:<==>, avec quelque chose comme:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    my $a = my $b = my $c = 7;
    say $a == $b == $c;



    Tu le fais un peu plus loin je crois et il faudrait donc déplacer la section en question mais je crois que c'est mieux puisque c'est l'analogue exact du caractère chaîné des relations d'ordres :


  14. #14
    Futur Membre du Club
    Pour être plus précis je dirais qu'à cet endroit ce que tu peux expliquer c'est le chaînage des opérateurs de comparaison. C'est-à-dire que ce que tu cherches à faire c'est comparer trois nombres, et non un nombre à deux autres.

    Donc tu peux commencer à dire que pour trois nombres pris au hasard, la manière "Perl 5" de voir s'ils sont tous trois égaux est la suivante:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    my ($a, $b, $c) = (^10).roll(3);
    say so $a == $b and $b == $c;


    Mais la manière idiomatique en Perl 6 est:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    my ($a, $b, $c) = (^10).roll(3);
    say so $a == $b == $c;


    Et de manière équivalente pour les opérateurs de relation d'ordre, on écrira:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    my ($a, $b, $c) = (^10).roll(3);
    say so $a < $b < $c;


    au lieu de :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    my ($a, $b, $c) = (^10).roll(3);
    say so $a < $b and $b < $c;



    Le cas où tu cherches à comparer un nombre à deux autres, par exemple $a < $b or $a < $c, doit nécessairement se faire avec des jonctions et doit donc être discuté dans la section correspondante.

  15. #15
    Rédacteur/Modérateur

    Bonjour Grondilu,

    je te remercie vivement de tes messages qui m'ont permis d'améliorer ce tutoriel PERL.

    J'ai modifié l'article en conséquence et t'ai ajouté dans la liste de mes remerciements.

    Bien cordialement,
    Laurent.

  16. #16
    Responsable Perl et Outils

    Bonjour Lolo78,

    Pourrais-tu mettre à jour ton tutoriel -> Nouveau tutoriel: de Perl 5 à Perl 6 - 1ere partie, notamment le chapitre 1-2. Installer Perl 6 sur votre ordinateur.
    À ce jour, il est plus recommandé d'utiliser la machine virtuelle MoarVM (en dépit de Parrot) plus complet et aboutit.

  17. #17
    Rédacteur/Modérateur

    Bonjour Djibril,

    oui, j'ai l'intention de le faire très prochainement, en même temps que l'ajout de liens vers le nouvel arrticle en cours.

    Bonne soirée,
    Laurent.

  18. #18
    Rédacteur/Modérateur

    Bonjour,

    j'ai mis en ligne ce matin la quatrième partie de mon tutoriel De Perl 5 à Perl 6: Perl 5 à Perl 6 - Annexe1 : Ce qui change entre Perl 5 et Perl 6.

    J'ai également modifié la première partie de ce tutoriel pour refléter le fait qu'il est désormais plus recommandé d'utiliser la version de Rakudo Star employant la machine virtuelle MoarVM (plutôt que Parrot), ajouté quelques liens vers cette annexe 1 et mis à jour deux ou trois autres petits points ayant évolué depuis la rédaction initiale de cette première partie.

    Bonne lecture à tous.

  19. #19

  20. #20
    Rédacteur/Modérateur

    Bonjour,

    je viens de mettre en ligne la cinquième et dernière partie de mon tutoriel: De Perl 5 à Perl 6 - Annexe 2 : Les nouveautés du langage: http://laurent-rosenfeld.developpez....rl6/annexe-02/

    Parmi les nouveautés particulièrement dignes d'intérêt, on peut citer:

    • les regex et surtout les grammaires de Perl 6 (§ 7), en particulier la possibilité d'ajouter dynamiquement des nouveaux éléments syntaxiques à la grammaire Perl 6 existante, rendant le langage intrinsèquement malléable et évolutif ;
    • un nouveau système de programmation orientée objet (§ 6) particulièrement flexible, puissant et expressif ;
    • les fonctions multiples (§ 5) et la capacité de créer dynamiquement de nouveaux opérateurs ou de surcharger des opérateurs existants ;
    • un modèle de programmation fonctionnelle (§ 4) très enrichi avec en particulier le support aux listes paresseuses ;
    • un modèle de programmation parallèle et concurrente (§ 8) de haut niveau, fiable, facile à utiliser et extrêmement prometteur.


    Bonne lecture à tous et passez de joyeuses fêtes.

###raw>template_hook.ano_emploi###