Journal Bientôt Noël pour Perl6

Posté par . Licence CC by-sa
Tags :
29
1
déc.
2015

camelia

Après 14 ans de rédaction, conception et de « bons échecs », Perl6 et sa première implémentation complète sur machine virtuelle sera disponible en version 6.0 pour Noël … 2015.

C'est quoi Perl6 ?

On peut le voir comme une version majeure de Perl5 qui casse la rétro-compatibilité, ou bien comme un « langage sœur » de Perl5 dont il ne partage que quelques caractéristiques syntaxiques.

Pour faire bref on distingue :

  • Le langage (spécifications uniques)
  • L'implémentation (Niecza, Rakudo, écrivez la votre ici …)
  • La machine virtuelle (Parrot, Jvm, Moar, écrivez la votre ici … )

Pour Noël on a quoi ?

Une implémentation (Rakudo), portée sur une machine virtuelle (Moar), qui valident les spécifications par une série de tests. Pour le reste (et pour beaucoup ici) vous aurez un "générateur pathologique de camelote éclectique" … mais aussi.

Vu l'enthousiasme incontrôlable que provoquent les dépêches Perl sur linuxfr, je ne vais pas m'escrimer à détailler la chose avec des exemples de code, et vous laisser donc suivre les liens.

  • # Ca sert à quoi Perl6 ?

    Posté par . Évalué à 3.

    mis à part un lab ou on teste plein de nouveaux concepts ?

    • [^] # Re: Ca sert à quoi Perl6 ?

      Posté par . Évalué à 5.

      À quoi servait Rust ou go (ou même python 3) avant leur sortie ?
      Il me paraît logique qu'un langage qui n'a pas encore d'implémentation complète ne soit pas très utilisé.

      Mais c'est une grosse amélioration du perl (qui AMHA a tout de même pas mal de défauts) et ça ajoute des concepts excellents (qui peuvent être complexes en tant à manipuler mais simple coté utilisateur, comme on le vois déjà avec les expressions régulières et tout un tas de trucs (comme la programmation template) en C++).

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Ca sert à quoi Perl6 ?

        Posté par . Évalué à 3.

        Est-ce qu'un langage qui a mis 15 ans a sortir est encore si novateur ?

        Est-ce qu'il a encore un rapport avec Perl 5 a part le nom et son concepteur?

        "La première sécurité est la liberté"

        • [^] # Re: Ca sert à quoi Perl6 ?

          Posté par . Évalué à 5.

          Est-ce qu'un langage qui a mis 15 ans a sortir est encore si novateur ?

          Tu n'a pas tant de langage que ça qui permettent en standard de faire du DSL en manipulant des AST entre autre. Je ne connais pas non plus des millions de langages qui sont aussi ouvert sur l'utilisation d'opérateur.

          C'est le genre de choses qui (peuvent être casse gueule) offrent une sacré expressivité.

          Le langage qui se rapproche le plus de ça (que je connais) est groovy.

          Sinon je ne connais pas de langage qui a l'équivalent du given/when.

          Est-ce qu'il a encore un rapport avec Perl 5 a part le nom et son concepteur?

          C'est clairement un descendant de Perl5. Savoir si c'est une version suivante du langage ou un nouveau langage qui se base sur le précédent… euh comment dire ? OSEF Quand tu écris du C++ as-tu en tête sa descendance philosophique avec le C ou en PHP avec perl ?

          Ce qui intéresse les développeurs c'est de savoir que leur scripts vont casser.

          Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

          • [^] # Re: Ca sert à quoi Perl6 ?

            Posté par . Évalué à 2.

            Le langage qui se rapproche le plus de ça (que je connais) est groovy.

            Il s'inspire pas de Ruby, justement ? (c'est le cas d'après Wikipedia) (et Ruby s'inspire du Perl, d'où son nom).

            Ruby est assez utilisé aussi pour faire des DSLs (exemple).

            "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 3.

              En effet, (un bon exemple de DSL ruby est cucumber) est-ce qu'il s'inspire de ruby, de groovy ou de je ne sais quel autre langage, je n'en sais rien.

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

          • [^] # Re: Ca sert à quoi Perl6 ?

            Posté par . Évalué à 3.

            Concernant les DSL, la mode c'est les techno de modeling comme EMF qui fournisse l’éditeur graphique qui va avec (bon, je bosse professionnellement sur ce genre d’éditeur).

            "Sinon je ne connais pas de langage qui a l'équivalent du given/when."

            Le filtrage des type sum de Ocaml, propose bien mieux depuis bien plus longtemps, par exemple. J'imagine que tous les langages fonctionnelles proposent l'équivalent (haskell, scala, rust…)

            "La première sécurité est la liberté"

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 3.

              Concernant les DSL, la mode c'est les techno de modeling comme EMF qui fournisse l’éditeur graphique qui va avec (bon, je bosse professionnellement sur ce genre d’éditeur).

              Pas tant que ça, non. Déjà parce que ça même les DSL tu n'en trouve pas des masses (c'est très peu utilisé au final, regarde dans les paquets installés de base avec ta distribution ceux qui utilisent un (ou plusieurs DSL)). D'autres par parce que ça ne s'adresse pas toujours aux même personnes, les DSL - dans la théorie - c'est le développeurs du logiciel qui crée son DSL pour modéliser plus facilement une partie de son programme. L'EMF est plus de la configuration (c'est ce qu'on trouve beaucoup dans les BMP). J'ai pas encore croisé d'EMF qui soit vraiment ami avec les gestionnaires de version.

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Ca sert à quoi Perl6 ?

                Posté par . Évalué à 2.

                "(c'est très peu utilisé au final, regarde dans les paquets installés de base avec ta distribution ceux qui utilisent un (ou plusieurs DSL))."

                C'est le début de l’ingénierie des modèles. Et je parle surtout du milieu professionnel (genre les outils internes basé sur Eclipse RCP).

                "les DSL - dans la théorie - c'est le développeurs du logiciel qui crée son DSL pour modéliser plus facilement une partie de son programme."

                Non, un développeur fait un DSL pour une personne "métier" qui n'est justement pas développeur mais expert d'un autre domaine.

                "L'EMF est plus de la configuration (c'est ce qu'on trouve beaucoup dans les BMP). "

                Non, c'est pour ce que tu veux, avec un peu plus de sémantiques qu'une structure de donné classique. Qu'est-ce que tu appelles BMP ?

                " J'ai pas encore croisé d'EMF qui soit vraiment ami avec les gestionnaires de version."

                Le format de base étant du XMI, le gestionnaire de version est un peu à la ramasse. Mais rien n’empêche d'imaginer un diff spécifique.

                "La première sécurité est la liberté"

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par . Évalué à 4.

                  C'est le début de l’ingénierie des modèles. Et je parle surtout du milieu professionnel (genre les outils internes basé sur Eclipse RCP).

                  Oui c'est le début, pas la mode (pour moi la mode c'est quand ça commence à vraiment être utilisé partout).

                  Non, un développeur fait un DSL pour une personne "métier" qui n'est justement pas développeur mais expert d'un autre domaine.

                  Oui et non. Il y a un paquet de DSL qui sont a destination de développeur : Cucumber, Spoke, Gradle, sbt,…

                  Qu'est-ce que tu appelles BMP ?

                  Business Process Management. C'est ce que font des logiciels comme OracleBPM, Bonita,…

                  Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par (page perso) . Évalué à 3.

              Le filtrage des type sum de Ocaml, propose bien mieux depuis bien plus longtemps, par exemple.

              Il propose différent, mais mieux ou non c'est une question de point de vue et de contexte. Parce que le filtrage de types en Caml te permet pas de matcher des chaînes sur des expressions régulières (même si je connais une extension qui essaie de faire un truc similaire). En Perl6, un seul mécanisme permet de faire beaucoup de choses : matcher suivant le type (ce qui donne beaucoup de flexibilité à faible coût intellectuel), suivant une expression régulière, matcher contre une jonction (donc tester l'appartenance à une liste, ou qu'une propriété est vraie pour tous les éléments d'une liste par exemple), etc. Mais il n'y a en effet pas de types algébriques (encore, en tous cas).

              • [^] # Re: Ca sert à quoi Perl6 ?

                Posté par . Évalué à 2.

                En Ocaml, il n'y a pas d'expression régulière built-in, mais tu peux tout à fait écrire une clause "when" au milieu de ton filtre pour y mettre un test boolean qui soit un appel vers une lib externe type pcre.

                Si un switch est nécessaire sur un type, c'est qu'il y a un gros problème d'architecture. Le coté polymorphe de ocaml rend ce genre de cas inutile (typique avec des listes utilisant uniquement des types parents).

                "La première sécurité est la liberté"

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par (page perso) . Évalué à 2.

                  mais tu peux tout à fait écrire une clause "when" au milieu de ton filtre pour y mettre un test boolean qui soit un appel vers une lib externe type pcre.

                  Oui, ce qui revient juste à faire des "if" chainés : pas de filtrage sur les types. Je pense que le problème, c'est que le filtrage avec given ressemble à un filtrage par motif OCaml syntaxiquement, mais ils ne représentent pas du tout le même problème.

                  Si un switch est nécessaire sur un type, c'est qu'il y a un gros problème d'architecture. Le coté polymorphe de ocaml rend ce genre de cas inutile (typique avec des listes utilisant uniquement des types parents).

                  Ce n'est pas équivalent au polymorphisme d'OCaml, c'est plus flexible (tout en offrant moins de garanties). Après, on peut considérer qu'il y a un problème d'architecture si on a besoin de cette flexibilité, mais c'est une autre histoire.

              • [^] # Re: Ca sert à quoi Perl6 ?

                Posté par . Évalué à 1. Dernière modification le 04/12/15 à 10:57.

                Parce que le filtrage de types en Caml te permet pas de matcher des chaînes sur des expressions régulières (même si je connais une extension qui essaie de faire un truc similaire).

                Le pattern matching sur les types sum c'est pour faire du raisonnement disjonctif, ou raisonnement par cas. Un type sum n'est rien d'autre qu'une partition, au sens ensembliste du terme, d'un ensemble représenté par le type en question.
                Si tu veux matcher sur des expressions régulières, c'est qu'elles doivent représenter une partition d'un ensemble de chaînes de caractères. Dans ce cas, tu crées un type associé du genre type t = A of string | B of string | C of string... avec, si tu le souhaites, des smart constructeurs pour chaque alternatives. Et ensuite tu fais du pattern matching sur ce type.

                Mais il n'y a en effet pas de types algébriques (encore, en tous cas).

                Ce qui en fait un système de type à l'expressivité très limitée, et n'offre donc pas le contrôle et la garantie d'un système de type comme celui d'OCaml. La sécurité apportée par la méthodologie décrite ci-dessus est indéniable, sécurité que ne semble pas offrir le système de given/when de perl6. ;-)

                Et comme l'a dit Nicolas Boulay : « Si un switch est nécessaire sur un type, c'est qu'il y a un gros problème d'architecture. »

                Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par . Évalué à 6.

                  La sécurité apportée par la méthodologie décrite ci-dessus est indéniable, sécurité que ne semble pas offrir le système de given/when de perl6. ;-)

                  Oui, mais pour écrire des scripts simplement et rapidement c'est de la grosse artillerie pour pas grand chose. Perl6 n'a pas vocation à concurrence tout le monde sur tout les plans. C'est un langage de script (=> qui fait de la compilation JIT), très bien outillé pour le système et pour faire des unilignes (contrairement à ce que beaucoup de gens croient, ce n'est pas qu'une question de concision).

                  Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                  • [^] # Re: Ca sert à quoi Perl6 ?

                    Posté par . Évalué à 2.

                    "Oui, mais pour écrire des scripts simplement et rapidement c'est de la grosse artillerie pour pas grand chose. Perl6 n'a pas vocation à concurrence tout le monde sur tout les plans. C'est un langage de script (=> qui fait de la compilation JIT), très bien outillé pour le système et pour faire des unilignes (contrairement à ce que beaucoup de gens croient, ce n'est pas qu'une question de concision)."

                    C'est pas une raison. Les types sommes ne sont pas très compliqué et permet de faire des trucs bien plus concis et sans bug qu'avec n'importe qu'elle autre système.

                    Une fois j'avais fais un code qui générais du C, la description sous forme d'arbre du code C + la sérialisation en fichier C, cela tenait sur 250 lignes… Avec le moindre truc objet, il faudrait 10 fois plus de code.

                    "La première sécurité est la liberté"

                    • [^] # Re: Ca sert à quoi Perl6 ?

                      Posté par . Évalué à 5.

                      Une fois j'avais fais un code qui générais du C, la description sous forme d'arbre du code C + la sérialisation en fichier C, cela tenait sur 250 lignes… Avec le moindre truc objet, il faudrait 10 fois plus de code.

                      Oui mais moi je te parle de scripts qui font quelques dizaines de lignes tout au plus. Ce que tu aurai en awk par exemple.

                      Pour mon usage, perl est la brique entre le scripting shell et le programme que tu va écrire en go/rust/haskel/lisp/…

                      C'est pas une raison.

                      Du coup si c'est une raison. Une bonne partie de mes scripts sont écris rapidement pour un usage ponctuel. J'aurais (définitivement) fini d'utiliser mon script perl avant d'avoir une première version qui compile en ocaml.

                      De plus ce n'est pas parce que c'est concis que c'est simple. Le fait de créer des abstractions, rend pleins de choses plus simples au prix d'une réflexion plus importante lors de la mise en place (ce qui est génial puisque tu met en place une seule fois et que tu fais évoluer pendant des années), mais ce n'est pas pertinent dans mon cas d'usage de perl.

                      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                  • [^] # Re: Ca sert à quoi Perl6 ?

                    Posté par . Évalué à 1.

                    Oui, mais pour écrire des scripts simplement et rapidement c'est de la grosse artillerie pour pas grand chose.

                    Tu as bien raison, rien ne sert de sortir un char d'assaut pour écraser une mouche. Il faut savoir choisir l'outil le mieux adapté à ses besoins, et pour les cas d'usages que tu décris Perl est sans doute un choix plus judicieux.

                    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par (page perso) . Évalué à 2.

                  Le pattern matching sur les types sum c'est pour faire du raisonnement disjonctif, ou raisonnement par cas.

                  Tout à fait, et ce n'est pas du tout ce que permet de faire le given de Perl6, les fonctionnalités offertes sont très différentes, il ne s'agit pas de filtrer sur des types algébriques.

                  Pour avoir quelque chose de similaire au filtrage sur les regexp en OCaml, il faudrait déjà intégrer les regexp au langage (pour que la compilation des regexp se fasse à la compilation, et pas à l'exécution, et du coup avoir de meilleurs messages d'erreurs et moins tardifs, entre autres), ce qui demanderait d'utiliser camlp4/5 ou les ppx, et probablement s'amuser avec les GADTS comme ça a été fait avec printf (mais je dois dire que je sais pas les utiliser très bien, donc je dis peut-être une bêtise sur ce point).

          • [^] # Re: Ca sert à quoi Perl6 ?

            Posté par (page perso) . Évalué à 4.

            Je ne connais pas non plus des millions de langages qui sont aussi ouvert sur l'utilisation d'opérateur.

            Et il n'y a pas non plus des millions de langages, qui s'excusent quand le programmeur fait une erreur avec un ===SORRY!=== ;)

            D'ailleurs, du point de vue des erreurs de syntaxes, les messages d'erreurs sont excellents, du fait d'une grammaire minutieusement étudiée, ce qui rend Perl6 très accessible aux débutants, je trouve, malgré le côté colossal du langage. Oublier un point virgule donnera un message d'erreur très précis (en pratique toujours pile à l'endroit où il faut le mettre) du type Two terms in a row across lines (missing semicolon or comma?) en montrant aussi le bout de code fautif, et mettant du rouge à l'endroit où le problème a été détecté, ce qui comparé à Perl5 est très bien, mais aussi comparé à d'autres langages comme OCaml (tu reçois comme message d'erreur que tu passes trop d'arguments à une fonction en général, dans ce cas, ce qui est compréhensible que pour celui qui connaît déjà bien le langage, mais totalement abscons pour le débutant).

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 2.

              "mais aussi comparé à d'autres langages comme OCaml (tu reçois comme message d'erreur que tu passes trop d'arguments à une fonction en général, dans ce cas, ce qui est compréhensible que pour celui qui connaît déjà bien le langage, mais totalement abscons pour le débutant)."

              C'est vrai qu'il faut sérieusement s'habituer aux messages d'erreur de ocaml. Mais cela progresse.

              "La première sécurité est la liberté"

        • [^] # Re: Ca sert à quoi Perl6 ?

          Posté par . Évalué à 2.

          Est-ce qu'un langage qui a mis 15 ans a sortir est encore si novateur ?

          Entre: Libre, Rapide, Bon … choisir 2 des 3 propositions pour faire un langage de programmation.
          Perl6 est "Libre", et visiblement il n'a pas pris "Rapide" …

          Quand à "novateur", je ne pense pas … extensible (Grammaires, Opérateurs, Implémentations, bientôt Macros) oui.

          Est-ce qu'il a encore un rapport avec Perl 5 a part le nom et son concepteur?

          Au niveau syntaxe, à part les sigils et le TMTOWTDI il n'a rien à voir.
          D'où la mauvaise presse (au début) des détracteurs de Perl dans un sens, et de la partie conservatrice de p5 de l'autre.

      • [^] # Re: Ca sert à quoi Perl6 ?

        Posté par . Évalué à 2.

        À quoi servait Rust ou go (ou même python 3) avant leur sortie ?
        Il me paraît logique qu'un langage qui n'a pas encore d'implémentation complète ne soit pas très utilisé.

        Il existe des OS expérimentaux (je pense notamment à Plan9), alors pourquoi pas un langage expérimental pour tester l'implémentation de certains concepts avant de les intégrer dans un autre langage ?

        Ce n'est pas une tare, loin de là.

    • [^] # Re: Ca sert à quoi Perl6 ?

      Posté par . Évalué à 10.

      Si tu vérifie Perl est un langage crée AVANT Linux, à une époque ou le moindre compilateur C coutait un mois de salaire de l'époque voire plus.

      Les vendeurs de matériels commençaient à comprendre, qu'ils pouvaient VENDRE certains logiciels plutôt que de les livrer en standard.

      C'est le premier langage dont j'ai téléchargé puis compilé les sources (sur AIX4 et peut être AIX3), ensuite je l'ai utilisé exactement ce pourquoi il était fait : du traitement de données

      A l'époque Les données arrivaient via TRANSPAC/X25 (rappelez vous le truc qui fonctionnait beaucoup trop bien et qu'il fallait arrêter pour de bêtes questions de monopoles) et il fallait en faire des données utilisables pour du mailing et/ou des imprimés.

      Remplacer les caractères null, changer les E majuscule accentués en EBCDIC en E majuscule etc …
      Quelques lignes de perl au lieu de dizaines de lignes en C ou sed awk et shell

      Exemple : substr($string, index($string, 'people'), 6) = 'women';

      Plus tard en 2005, parti d'un exemple du Camel Book j'ai développé un petit serveur TCP pour faire du suivi de fabrication.

      Actuellement il tourne toujours :) il a changé 3 fois de serveurs, passé d'AIX à Centos
      mais il est toujours en exploitation.

      Il doit exister beaucoup de petit scripts perl qui font leur job sans broncher ni planter, on ne se souviens que des trains qui arrivent en retard.

      Je ne pense pas que je re développerai un truc en perl6, mais perl4 et perl5 m'ont ÉNORMÉMENT appris et m'ont considérablement aidé.

      Il m'a permis de comprendre la différence entre une variable et un objet grâce à son mot clé bless par exemple

      Aussi Perl6 a quoi cela peut servir ? à découvrir, à apprendre, à explorer … à penser différemment.

      le pire qu'il puisse arriver c'est qu'il n'existe plus qu'un seul langage informatique.

      Cela deviendra peut être devenu un langage de vieux, comme on considère le COBOL de nos jours
      Mais il inspire et inspirera encore certainement beaucoup de choses, à beaucoup de personnes

      Et ça c'est la preuve du génie du Larry Wall… respect

      • [^] # Re: Ca sert à quoi Perl6 ?

        Posté par (page perso) . Évalué à 3.

        le pire qu'il puisse arriver c'est qu'il n'existe plus qu'un seul langage informatique.

        C'est vrai, mais personne ici n'a soutenu le contraire en même temps.

        Il m'a permis de comprendre la différence entre une variable et un objet grâce à son mot clé bless par exemple

        En gros Perl t'a appris les idiomes du Perl. On pourrait en dire autant de n'importe langage donc.

        Cela deviendra peut être devenu un langage de vieux

        Soit un langage est utilisé par les gens, et il devient forcément un langage de vieux (en ayant au passage plus ou moins inspiré son ou ses successeurs), soit tout le monde s'en tape.

        Aussi Perl6 a quoi cela peut servir ? à découvrir, à apprendre, à explorer

        On peut faire tout ça avec n'importe quel langage.

        … à penser différemment

        On peut faire ça avec n'importe quel langage éloigné des autres langages qu'on connaît déjà. Entre C, Python, Rust, Erlang, Haskell, Prolog, Ada (par exemple) on a déjà des concepts très différents à appréhender. Les concepts de Perl6 apportent-ils tant de choses que ça (c'est une vraie question) ?

        Il existe des tas de très bons langages libres (ou avec au moins une implémentation libre). On peut donc demander quel est l'intérêt de Perl6 de toute bonne foi, sans sous-entendre qu'il ne sert à rien. Et par exemple "faire un langage pour s'amuser" peut être une réponse acceptable (mais pas forcément très motivante).

        • [^] # Re: Ca sert à quoi Perl6 ?

          Posté par . Évalué à 9.

          Personnellement, je trouve perl assez agréable à utiliser. Il a un coté fun que python n'a pas (le fait d'être vraiment concis).

          Perl6 apporte à perl un gros coup de jeune qui n'est pas inutile. Ça corrige pleins de petits défauts et ça apporte pas mal d'expressivité, cela me suffit.

          Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

          • [^] # Re: Ca sert à quoi Perl6 ?

            Posté par . Évalué à 4.

            Pour ce que j'ai fais en perl, je le trouvais assez productif et efficace, mais c'était très facile de faire une horreur totalement illisible avec. Le write once n'était pas si faux.

            "La première sécurité est la liberté"

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 3.

              ++
              C'est un peu ce qui m'a fait passer de perl à python : la lisibilité

              Quand je dois me replonger dans 3000 lignes de perl (ce qui n'est pas énorme) pour effectuer une modif il me faut bien 1 journée pour me remettre dedans

              Mais bon le code doit être bourrés d'erreurs de débutants … et comme il tourne bien en exploitation personne ne veut payer les quelques journées nécessaires pour une refonte du code

              • [^] # Re: Ca sert à quoi Perl6 ?

                Posté par (page perso) . Évalué à 6. Dernière modification le 04/12/15 à 18:53.

                C'est un peu ce qui m'a fait passer de perl à python : la lisibilité

                C'est curieux, parce qu'en ce qui me concerne, c'est le contraire. Bien qu'en Perl il est possible d'écrire du code vraiment affreux, et il y a sans doute beaucoup de ce type de code dans la nature (en partie parce qu'il est très facile d'écrire du Perl tout en ne sachant pas programmer, et en partie du fait de one-liners et code golf), la plupart du code que j'ai lu (principalement des modules sur CPAN), me semble particulièrement lisible et vite compréhensible.

                Le fait de voir d'un coup d'œil qu'une variable est un tableau, une table de hachage, etc. aide facilement à se repérer. Le fait que la comparaison numérique utilise des opérateurs différents que la comparaison des chaînes, etc. aide aussi, dans la plupart des cas simples, à déduire plus vite de quoi il est question. Savoir si on additionne deux nombres ou concatène deux listes est instantané aussi, par exemple. Et c'est un des principes du langage : les choses courantes qui sont différentes, doivent apparaître visuellement différentes. Alors, bien sûr, c'est un peu le contraire du principe de généralisation qui voudrait que l'on utilise les mêmes opérateurs et les mêmes idées pour des choses totalement différentes dès qu'ils présentent certaines ressemblances mathématiques (comme dans haskell), ce qui est utile parfois, mais souvent on se fiche du parallèle mathématique, et avoir un retour visuel instantané plus concret aide à la compréhension en pratique.

                En gros, Perl force syntaxiquement à une certaine redondance dans l'information concernant les types de données utilisés qui rend le code plus lisible (à mon avis).

                Les expressions régulières sont aussi plus lisibles que dans la plupart des autres langages (avec coloration syntaxique de l'éditeur possible) du fait qu'elles sont intégrées dans le langage, et peuvent être écrites avec des espaces et des commentaires. Et avec use strict; (utilisé presque partout) il faut déclarer les variables avec my (lexicales à un bloc, pas comme en python qui est assez surprenant à ce sujet), ce qui permet de voir instantanément où est la première occurrence d'une variable, et de savoir qu'elle n'est pas globale, par exemple.

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par . Évalué à 1.

                  Globalement d’accord avec ce que tu dis, mais pour ce point :

                  peuvent être écrites avec des espaces et des commentaires.

                  Ça se fait aussi en Python et Ruby.

                  • [^] # Re: Ca sert à quoi Perl6 ?

                    Posté par (page perso) . Évalué à 2.

                    Oui, et maintenant que tu le dis, je crois me souvenir qu'en effet j'avais déjà vu ça en Python et Ruby (par contre je n'ai pas l'impression que ce soit courant dans beaucoup d'autres langages, où souvent il y a même le problème de devoir échapper en double les \).

                    Un autre détail qui peut avoir son importance d'un point de vue lisibilité est, si je ne me trompe pas, qu'en Python par exemple les expressions régulières doivent êtres compilées préalablement à la main pour des raisons de performance avant une boucle, alors qu'en Perl si c'est une constante c'est compilé qu'une seule fois dès la phase de compilation, donc on peut la mettre directement dans la boucle, ce qui est plus lisible quand l'expression régulière n'est utilisée qu'à un seul point du programme, ou est très simple (ce qui est souvent le cas). Je ne sais pas si ça vaut pour Ruby aussi (a priori, ce serait possible d'optimiser, vu qu'elles sont intégrées au langage de façon similaire qu'avec Perl).

                    • [^] # Re: Ca sert à quoi Perl6 ?

                      Posté par (page perso) . Évalué à 3.

                      si je ne me trompe pas

                      Après vérification, en fait python fait une optimisation à ce sujet, en créant un cache des regexps les plus récentes, ce qui doit être suffisant dans les cas pas trop intensifs.

          • [^] # Re: Ca sert à quoi Perl6 ?

            Posté par . Évalué à 2.

            Personnellement, je trouve que les défauts de Perl (enfin, ce que je voyais comme des défauts) sont corrigés par Ruby. Celà dit je n'ai pas encore eu l'occasion de tester Perl6. Est-ce qu'on a maintenant une gestion des objets digne de ce nom par exemple ?

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 0.

              La majorité des types natifs étant des objets, ça facilite la vie.

              Pour les objets en soit, pas de révolution, mais on a la panoplie complète, "rôles" inclus.

              Note: "bless" existe encore sous une autre forme, il permet de faire des constructeurs custom.

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 1.

              Est-ce qu'on a maintenant une gestion des objets digne de ce nom par exemple ?

              Oui, y a-t-il enfin des destructeurs dans Ruby ?

              Théorie du pot-au-feu : « Tout milieu où existe une notion de hauteur (notamment les milieux économique, politique, professionnels) se comporte comme un pot-au-feu : les mauvaises graisses remontent. »

        • [^] # Re: Ca sert à quoi Perl6 ?

          Posté par . Évalué à 1.

          Le problème c'est que globalement nous sommes d'accord :)

          perl6 n'est pas révolutionnaire comme l'avait été perl4 ou 5

          Mais de par son historique et ce qu'il a déjà amené … respect

          Après si des jeux veulent perdre du temps à développer perl6 c'est eux que cela regarde

          Et donc même si cela n'apporte rien, c'est pas grave, il est difficile de faire une révolution à chaque version (sauf chez Microsoft ;-) )

          • [^] # Re: Ca sert à quoi Perl6 ?

            Posté par . Évalué à 3.

            Après si des jeux veulent perdre du temps à développer perl6 c'est eux que cela regarde

            Je ne pense pas que développer Perl6 soit une perte de temps : ça peut être une bonne base de ce qu'il faut faire ou ne pas faire pour un éventuel Perl7. D'ailleurs, d'un point de vue "marketting", n'aurait-on pas intéret à sortir sous le nom Perl7 la version stable et finie de Perl6 ?

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 3.

              IMHO d'un point de vue "marketting" je me méfie des dernières versions
              préférant les anciennes, par essence plus stables et plus connues

              La nouveauté en informatique et plus souvent signe de problèmes que de solutions.
              surtout que plus personne ne veut prendre en compte les tests.

              • [^] # Re: Ca sert à quoi Perl6 ?

                Posté par . Évalué à 1.

                La nouveauté en informatique et plus souvent signe de problèmes que de solutions.
                surtout que plus personne ne veut prendre en compte les tests.

                Dis pas ça, tu vas passer pour un réfractaire au changement (surtout si tu parles de systemd).

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par . Évalué à 1.

                  ETAT D'URGENCE ALERTE => Le largage de troll aussi poilu et visqueux n'est autorisé que le dredi

                  systemd la future base de registre de linux ?

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 0.

              Perl6 ou 7 ou 8, c'est pas trop le problème. Vu qu'on peut créer sa propre implémentation si on remplit les tests de la suite.

              Après vu que le parser est "presque" du Perl6 une réécriture est plus facile, tout comme ajouter des features ( Apostrophes dans les noms de variables par ex … ). Donc ce n'est pas tant une question de numéro de version mais plutôt de version de Perl6 adaptée à tel ou tel besoin spécifique.

              En ce qui concerne le marketing, avec leur logo, ils ont déjà tout pour attirer "la petite fille de sept ans" (dans le texte) …

            • [^] # Re: Ca sert à quoi Perl6 ?

              Posté par . Évalué à 5.

              D'ailleurs, d'un point de vue "marketting", n'aurait-on pas intéret à sortir sous le nom Perl7 la version stable et finie de Perl6 ?

              AMHA Larry Wall s'en fou.

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Ca sert à quoi Perl6 ?

                Posté par . Évalué à 0.

                Ben … si le but est d'avoir un langage qui s'utilise, il faut soigner aussi le marketting, même si ce n'est pas le marketting qui fait un bon langage. Mais Perl6 a une consonnance "vieux truc qui n'est pas encore fini depuis des dizaines d'années" comme Hurd par exemple. D'ailleurs ce ne serait pas la première fois qu'on verrait ce genre de pirouette. On a eu par exemple les premières version de KDE4 me semble-t-il qui n'étaient pas vraiment faites pour être utilisées.

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par . Évalué à 3.

                  J'ai pas dis que c'était inutile.

                  Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

                • [^] # Re: Ca sert à quoi Perl6 ?

                  Posté par . Évalué à 7.

                  bon vu qu'on est presque dredi :)

                  Mais Perl6 a une consonnance "vieux truc qui n'est pas encore fini depuis des dizaines d'années"

                  par contre perl7 est parfaitement abouti, nickel chrome, il y a de gros morceaux dedans et il lave plus blanc l'eau avant le linge

                  je crois que le marketting de microsoft a fait plus de ravage que je ne le pensais … la prochaine version est toujours mieux

                  vous pouvez moinssez c'est très bête et très méchant … pas pu tenir jusqu'à dredi

Suivre le flux des commentaires

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