Nouvelles sur Perl 6

Le , par djibril, Responsable Perl et Outils
Je me disais que ça serait bien d'avoir un topic qui regrouperait toutes les infos dispo sur Perl 6...

Tout ce que j'en sais, c'est qu'il tournera sur une machine virtuelle, Parrot. Je ne connais pas sa date prévue de sortie, ni même les nouvelles fonctionalités qui devraient être intégrées...

Et sur Internet je ne trouve pas de document concret qui contiennent ce genre d'infos. Vous en connaissez vous ?

Liens: http://rakudo.org
http://www.programmersheaven.com/2/Perl6-FAQ


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Jedai Jedai - Expert éminent https://www.developpez.com
le 03/06/2006 à 16:44
Je suis le développement de Perl6 d'assez près, et je suis près à rédiger une petite FAQ dès que j'ai le temps...

Commençons déjà par tes questions :

  • La date de sortie ?
    Quand il sera près ! Ok, ça manque d'originalité... Disons que de façon réaliste on peut s'attendre à une version alpha pour le premier trimestre de 2007, et une sortie finale avant la fin 2007. Il y a pas mal d'agitation actuellement dans la communauté Perl6/Pugs/Parrot et ces dates sont relativement probables.
  • Les nouvelles fonctionnalités ?
    Plein de choses, il s'agit en fait d'une refonte en profondeur du langage. Quatres points marquants devrait être :
    1. la fin du changement de sigil ($, @, %, &) selon le contexte (on écrira maintenant @machin[0] pour le premier élément de @machin) qui devrait bien simplifier l'emploi des références ($machin[0] est le premier élément de $machin si $machin est une référence sur un tableau)
    2. les listes d'arguments pour les fonctions (on pourra toujours utiliser @_ mais ce ne sera plus la "bonne" façon de faire), avec support pour les arguments nommés et pas mal de choses liées au point suivant :
    3. Perl devient typé, au moins partiellement, et utilisera ces indications de type pour optimiser le stockage et le code, ainsi que pour choisir la bonne fonction en cas de plusieurs fonctions avec le même nom mais des listes d'arguments différents. Le système de type devrait être très puissant et permettre de faire des choses très avancées simplement (comme d'avoir un type entier restreint à un certain intervalle).
    4. Un système d'objet standard beaucoup plus proche des systèmes classiques (on passe d'ailleurs de la flèche au point pour l'invocation des méthodes), mais avec le support des "Traits", une approche récente pour éviter les problèmes du multihéritage tout en en gardant la puissance (ça a l'air très prometteur )
    5. Les regex évoluent pour devenir les rules qu'on peut regrouper en grammar complètes. Pour y avoir jeter un coup d'oeil je peux vous dire que ça promet : en gros on aura la puissance d'un vrai parser intégré au langage, mais avec une syntaxe simplissime. Les regexps actuelles devront être un tout petit peu modifiées, mais à peine, ça pourra d'ailleurs être fait automatiquement (cf la question suivante)

    Et plein d'autres petites choses (ou grandes...).
    Un point important c'est que Perl6 contrairement à Perl [12345] aura une spécification, c'est à dire un ensemble de RFC qui disent comment fonctionne telle ou telle chose. Pour avoir plus de détails sur les nouveautés, vous pouvez consulter les documents de référence : les Apocalypses (Révélations en grec) de Larry Wall , les Exegeses plus concises et explicatives, les Synopsis qui seront les documents de design de Perl6 et qui sont sans doutes les plus à jour. (faites votre choix selon le style qui vous plait le plus, certains des documents sont plus littéraires et d'autres plus techniques. Et rassurez vous, ils sont divisés en parties ce qui vous permettra de vous renseigner sur les points qui vous intéressent le plus).
  • Mes programmes Perl5 fonctionneront-ils sous Perl6 ?
    Probablement non, il y a trop de changements syntaxiques profonds pour ça (rien que les Sigils...) mais il y aura un traducteur de Perl5 à Perl6 qui devrait faire le plus gros du boulot, pourvu que vous n'ayez pas employé de constructions trop obscures... Un étudiant est actuellement en train de travailler dessus à l'occasion du SOC (il se base sur le travail de Larry Wall lui-même qui a récemment passé un certain temps à étendre le parser de Perl actuel pour pouvoir lui faire sortir à la demande un arbre comprenant des détails comme les espaces, qui sont important pour faire un traducteur comme celui-ci).
  • Où est-ce que je peux voir la bête en action ?
    Vu qu'il n'est pas fini, tu ne peux pas encore, néanmoins il existe un projet appelé Pugs qui est une implémentation d'une bonne partie de Perl6 en Haskell (donc c'est assez lent, mais c'est normal pour une démo).
  • J'ai entendu parler de Parrot, c'est quoi ?
    Parrot est une VM (une machine virtuelle, oui comme pour Java ou .NET), elle est spécifiquement destiné au support des langages dits dynamiques (Python, Ruby, Perl évidemment !) et sera la plateforme principale pour Perl6. Son développement n'est pas fini mais elle est déjà très intéressante.


--
Jedaï
Avatar de Woufeil Woufeil - Membre chevronné https://www.developpez.com
le 03/06/2006 à 18:53
Ah ouais quand même, ça fait de sacrés améliorations ça...

Vu comme ça j'ai l'impression que Perl va être un peu dénaturé tout de même... Notemment pour le typage et les sigils.
Pour l'orientéisme objet, j'étais au courant, je pense qu'un peu plus d'encapsulation ne peut pas faire de mal.
Pour les sous progs, rien à dire, c'est pas plus mal comme ça. Il faut avouer qu'avant c'était un peu galère de faire certains trucs.

Question très importante pour moi, les données vont être typées, soit. Mais est ce qu'on pourra toujours faire des tableaux de scalaires ? Je veux dire par là un tableau dont le premier élément est un entier, le second une string, le troisième une référence à un tableau...
C'était pour moi l'un des plus grands avantages de Perl, ces structures de données totalement hétérogènes. Et c'est encore plus vrai pour les tables de hachages.

A part ça, bah ça sera juste des habiudes à erdre et d'autres à prendre quoi.

Merci de ta réponse Jedai, et je pense que ça serait effectivement une bonne idée que tu nous fasse une petite question dans la FAQ sur le sujet

A propos de la FAQ d'ailleurs, il va falloir tout recommencer en gros, je vois ça d'ici

€dit : oh, j'oubliais, le seul lien vraiment intéréssant que j'ai trouvé : la FAQ Perl 6 !
Avatar de Jedai Jedai - Expert éminent https://www.developpez.com
le 04/06/2006 à 0:27
Citation Envoyé par Woufeil
Question très importante pour moi, les données vont être typées, soit. Mais est ce qu'on pourra toujours faire des tableaux de scalaires ? Je veux dire par là un tableau dont le premier élément est un entier, le second une string, le troisième une référence à un tableau...
C'était pour moi l'un des plus grands avantages de Perl, ces structures de données totalement hétérogènes. Et c'est encore plus vrai pour les tables de hachages.

Perl6 va être typé ?! Mais comment vais je faire avec ma liste de <chaîne de caractères ou tableau ou nombre> ?

Pas de panique, Perl6 sera optionnellement typé, c'est-à-dire que si vous voulez typer vos variables, Perl6 utilisera ces indications de type pour optimiser stockage et code et effectuera les vérifications nécessaires (le plus possible à la compilation, sinon à l'exécution) pour assurer la cohérence du système de type. Mais si vous ne voulez pas typer vos variables, Perl fera de son mieux pour vous accomoder, et utilisera le type le plus général pour cette variable (avec peut-être un peu d'inférence de type). Vous pouvez donc tout à fait avoir votre tableau ou table de hachage hétérogène si vous le voulez !
(NB : Le système de type de Perl6 est très puissant et par exemple vous pouvez aussi spécifier qu'une variable est de type "Int|String" (soit "any(Int, String)" ) autrement dit soit un entier, soit une chaîne de caractère, ce qui prend tout son sens lorsque vous utilisez ceci dans une signature de fonction )

Par ailleurs ton lien est intéressant, mais bien sûr j'imagine que pas mal de gens auront du mal à comprendre ce que signifient certains items de la liste de nouveautés... N'hésitez pas à poser des questions et à consulter les documents que j'ai cité plus haut et qui rentrent dans le détail.

--
Jedaï
Avatar de Woufeil Woufeil - Membre chevronné https://www.developpez.com
le 04/06/2006 à 0:40
Ah, encore une question (ouais, je sais, je pourrais faire un tir groupé, mais c'est tellement plus marrant comme ça ).

Comment ça va se passer pour tous les modules du CPAN ? Ils seront tous traduits en Perl 6 et mis en ligne sur le site officiel ?
Je demande ça car l'une des plus grandes forces de Perl c'est justement les multiples extensions qui existent, ça serait bête de perdre ça je trouve...
Avatar de Jedai Jedai - Expert éminent https://www.developpez.com
le 04/06/2006 à 0:53
Comment ça va se passer pour tous les modules du CPAN ? Ils seront tous traduits en Perl 6 et mis en ligne sur le site officiel ?

Tu auras une solution mixte : les plus gros modules, ceux sur lesquels se porte l'attention de la communauté seront traduits en Perl6 pour profiter de tous ses avantages (exemple DBI est en passe d'être réécrit en Perl6 à l'occasion du SoC) et de la rapidité de Parrot, mais pour ceux qui ne seront pas traduits, il sera toujours possible de les utiliser en les appelant en mode compatibilité Perl5 (tu auras une syntaxe du type "use p5 Mon::Module;", il faut regarder du côté de Pugs qui fait ça dès aujourd'hui je crois) dans tes applis Perl6. Evidemment à terme l'idée est que tous les modules se retrouveront en Perl6.

--
Jedaï
Avatar de 2Eurocents 2Eurocents - Membre expert https://www.developpez.com
le 04/06/2006 à 15:22
Citation Envoyé par Jedai
  • Un système d'objet standard beaucoup plus proche des systèmes classiques (on passe d'ailleurs de la flèche au point pour l'invocation des méthodes), mais avec le support des "Traits", une approche récente pour éviter les problèmes du multihéritage tout en en gardant la puissance (ça a l'air très prometteur )

Ca, c'est le point qui m'inquiète un peu ... pourvu qu'on ne change rien d'important à l'équivalence "Objet" <==> "Table de Hachage".

Ce n'est surement pas une pratique propre, c'est impossible à modéliser avec les méthodes de conception classiques, mais j'aimais énormément "croiser" mes objets et donner, en "live" à certain des méthodes prises dans d'autres. Je trouvais que l'altération dynamique des méthodes, et pas seulement des attributs, était un aboutissement intéressant en POO.

Maintenant, c'est vrai que je n'ai jamais rien produit de critique en me basant la dessus, mais c'était une expérience de programmation intéressante.
Avatar de Woufeil Woufeil - Membre chevronné https://www.developpez.com
le 04/06/2006 à 15:29
Citation Envoyé par 2Eurocents
Ca, c'est le point qui m'inquiète un peu ... pourvu qu'on ne change rien d'important à l'équivalence "Objet" <==> "Table de Hachage".

Sur ce point je pense que tu peux malheureusement commencer à faire ton deuil...
Je m'explique les données vont dans la v6 de Perl être fortement encaspulées. A moins qu'on ne créé une table de hachage particulière ou certaines clées ne sont pas accessibles et d'autre si (dur dur je trouve), ça ne sera plus des tables de hachage.

Moi ce que je trouvais marrant dans l'actuelle version des objets en Perl, c'était la génération des accesseurs en bouclant autour d'une fermeture. Très puissant je trouve, plus besoin de se casser le cul à faire 50 méthodes accesseurs.
Avatar de Jedai Jedai - Expert éminent https://www.developpez.com
le 04/06/2006 à 18:22
Citation Envoyé par Woufeil
Sur ce point je pense que tu peux malheureusement commencer à faire ton deuil...
Je m'explique les données vont dans la v6 de Perl être fortement encaspulées. A moins qu'on ne créé une table de hachage particulière ou certaines clées ne sont pas accessibles et d'autre si (dur dur je trouve), ça ne sera plus des tables de hachage.

Moi ce que je trouvais marrant dans l'actuelle version des objets en Perl, c'était la génération des accesseurs en bouclant autour d'une fermeture. Très puissant je trouve, plus besoin de se casser le cul à faire 50 méthodes accesseurs.

Que deviennent mes objets de Perl5 avec mon bless() ?
Le système de Perl 5 avec le bless() sera toujours accessible pour les bidouilleurs qui ont besoin d'objets très spéciaux, mais le nouveau modèle est très puissant et très simple à utiliser.
Pour tous les détails vous pouvez lire ce synopsis mais sachez que les méthodes prendront maintenant implicitement leur argument self et ont droit à un traitement de faveur avec le mot clé method qui remplace sub dans leur cas. Pour ce qui est des attributs, ne vous inquiétez pas, vous n'aurez pas besoin comme en Java de faire d'innombrables accesseurs et modificateurs (en Java c'est souvent l'IDE qui s'en charge, mais ça fait toujours du code inutile...), vous pourrez directement dans leur déclaration leur donner par défaut un accesseur ou un accesseur et un modificateur (ou les déclarer privé).

--
Jedaï
Avatar de Jedai Jedai - Expert éminent https://www.developpez.com
le 04/06/2006 à 18:30
Continuation de la réponse précédente...

Citation Envoyé par 2Eurocents
Ce n'est surement pas une pratique propre, c'est impossible à modéliser avec les méthodes de conception classiques, mais j'aimais énormément "croiser" mes objets et donner, en "live" à certain des méthodes prises dans d'autres. Je trouvais que l'altération dynamique des méthodes, et pas seulement des attributs, était un aboutissement intéressant en POO.

Les classes de Perl6 se rapprochent un peu de celles de Smalltalk, et elles sont donc dynamiques, autrement dit tu peux leur rajouter une ou des méthodes à la volée tant qu'elles ne sont pas finalisées.

--
Jedaï
Avatar de scaleo scaleo - Membre actif https://www.developpez.com
le 07/06/2006 à 17:11
J'ai des modules pour mon usage perso, perl6 veut il dire que je doit tout réécrire ? . Ou peut on trouver de la doc complète sur Perl 6 et surtout des exemples de code ?

merci
Offres d'emploi IT
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Chef projet big data - pse flotte H/F
Safran - Ile de France - Évry (91090)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Perl : djibril -