And Perl (6)

CAME FORTH



COMMENT EN ARRIVE-T-ON, EN 2014,

À FAIRE DU PERL (6) ?


  • La vibrante communauté Perl ?
  • La destinée ?
  • ... Ou juste le hasard ?

There is more than one way to arrive to Perl

Et aussi :

Comment en arrive-t-on à faire un talk ?

(ou : Stéphane Payrard est un tyran)



Perl, dans l'esprit des gens


  • En 2014, la communauté Perl est moins représentée dans l'Open Source
  • "Si vous aimez <nom>, faites quelque chose d'incroyable avec, afin que les gens ne puissent plus s'en passer !" - Tout le monde
  • Mais comment est-ce que Perl est vu de l'extérieur ?

"Perl est un langage du passé"

Les mauvais côtés ...

  • Peu de choses "innovantes" (hipster) sont faites avec Perl
  • La tendance change vite, le JS est la coqueluche du moment
    (j'en viens !)
  • Les gens ne connaissent que Perl via le  "code golfing" :
  •  <>;map($s-=(-1)**$_/(2*$_-1),1..$_),$s=!print$s,$/for<>
Cependant ...
  • On voit passer les nouvelles versions de Perl
  • Les gens sont parfois au courant de l'attente de Perl 6, mais connaissent aussi l'histoire de Python 2 et 3
    (plus discutée)

Ce qui nous ramène au point principal ...


Alors que tous (ou presque) les gros langages compilent en JavaScript, Perl n'a pas de backend JavaScript ("complet")

Plusieurs projets cependant :

  • Rakudo-JS (@pmurias), malheureusement à l'abandon
  • Perlito (@fglock), plus avancé
(malheureusement pas au point côté Perl 6 !)

 (c'est un exercice très certainement compliqué !)

Pourquoi est-ce que ça m'intéresse ?


  • Parce que j'en viens !
  • Je travaille sur CoffeeScript
    (inspiré énormément de Python et Ruby, sémantiquement JS)
  • Qui a eu un fork, Coco, créé par un Perlist (et amateur de P6)
    Exemple :

 Parens(Chain fun<<<{+wrapper, @void} [call]; true)compile o
  • Qui a, à nouveau, été fork par un haskeller
    Nom : LiveScript, sur lequel je travaille aussi


Un langage qui prend donc de Ruby, Python, Haskell, F#, Perl...

Mais Comment on en arrive à PERL ?

  • À travailler sur un langage possédant tant de constructions, on se demande d'où certaines viennent
  • Et donc, on fini par se rendre compte que certaines (très bonnes) idées viennent de Perl (6 et 5)


N'ayant pas la moindre idée de ce qui se passe "là-bas", je commence par Perl 6.

Le début de l'aventure ...

Mes questions au départ n'étaient pas "is perl 6 ready", mais "que fait donc l'opérateur [\&&] ?" après un peu de recherche ...

  • Arrivé sur perl6.org "oh, ça sent le site en Perl ..."
  • Peu de documentation
  • (Très) peu de "beginner material" pour commencer
  • Heureusement, le "Perl 6 Advent Calendar" est là

Le Perl 6 Advent Calendar est probablement la meilleure manière de s'approcher de Perl 6, de l'apprendre, voir ce dont le langage est capable ... Et mesurer le mastodonte au nombre de  features décrites.

L'aventure pour qui ?


Pourquoi ne pas en profiter pour faire découvrir les trucs "cool" (hipsters?) aux autres ?


Pourquoi ne pas utiliser ces exemples pour inciter les gens à utiliser le langage ?

Qu'est-ce que ça donne ? (basique)

Regardons ce que ça donne ... (certaines exemples sont tirés de l'advent calendar)

  • Les jonctions : 

 my $i = 1; if $i == 1 | 2 { say "C'est correct !" }

 my @array = (1, 2, 3); if any(@array) > 2 { say "On en tient un !"; }
  • Les multi méthodes :
 multi fib (0)  { 0 }
 multi fib (1)  { 1 }
 multi fib ($n) { fib($n - 1) + fib($n - 2) } 

  • L'autogénération de --help avec sub MAIN
  • Les séquences

 say 1, 2, 4 ... 32;
Réaction habituelle : "mais; ça devine avec 3, 6, 9 ?"
Réponse : oui - et pas que !
 say (1, 1, *+* ... *)[^15] # on peut passer des listes à Array.[]

Et en allant un peu plus loin ?

  • Démonstration de l'expressivité de Perl 6

 sub postfix:<!>($N) { [*] 2..$N; }
  • Découverte  des grammaires avec JSON::Tiny
  • Les listes de paramètres avec l'extraction (pseudo pattern matching), typing (enforcé, si possible, à la compilation), arguments optionnels, arguments nommés, etc...

"Perl 6 is many things to many people" : le calendrier dispose d'articles pouvant faire découvrir Perl 6 aux gens de tous horizons

à nous de jouer !






Des questions ?


road2p6

By Vendethiel

road2p6

  • 1,200