[Perl] Appel à contribution: Article linux mag pour la sortie de Perl7

Marc Chantreux eiro at phear.org
Ven 26 Juin 11:03:46 CEST 2020


salut Stéphane,

Je n'utilise plus perl que

* pour contribuer à un projet existant
* quand le choix se réduit aux langages dynamiques du millénaire dernier
  (donc en face: php, ruby, python, lua, ...)

mais perl n'est pas prêt de quitter nos SI (et c'est toujours mieux que
d'avoir à se tapper du python, js ou php) alors autant soutenir son évolution.

> - beaucoup de codes scientifiques utilisent python (bioperl c'est bien, mais
> en pratique j'ai de plus en plus besoin de biopython)

ne faisant pas de bio, je te crois sur parole.

> - perl c'est bien mais le golf et le TiMTOWDI ce n'est pas facile à lire ou
> à faire

ah... moi je trouve au contraire que l'expressivité de perl permet
d'écrire et lire des choses assez naturellement.

il y a quelques années, j'ai du me tapper pas mal de python/js avec un
peu de ruby et c'est vraiment ma pire experience de développeur
(pourtant je lis les PEP à la recherche de tout ce qui peut rendre mon
code python plus aggréable à lire mais même avec les "nouveautés"
(python devient un langage "acceptable" à mes yeux à partir de 3.5)),
ca reste fastidieux à lire et a écrire.

du coup j'ai rapidement utilisé des transpileurs:

* livescript (https://livescript.net/) pour js
* et hy (https://github.com/hylang/hy) pour python

par contre si il faut charger perl, je dirais que sa richesse est devenu
un défaut parce que se mettre d'accord sur le coding style peut être
vraiment problématique. je cite la lisp curse
(http://winestockwebdesign.com/Essays/Lisp_Curse.html) dans l'article
parce que je trouve que tout s'applique à perl.

> - c'est de ma faute, je comprends un peu mieux la programmation qu'avant
> (enfin c'est toujours moche et très incomplet)

et donc le fait de mieux comprendre la programmation t'as fais aimé la
verbosité et la rigidité de python? c'est une question de gout au final:
python, par exemple, n'a toujours pas de block anonymes, n'aura jamais
de $_, les applications partielles me perdent dans un tas immonde de
parentheses, la syntaxe des list comprehension est illisible quand tu
les imbriques ...

> - et surtout, SURTOUT ...
> Python est passé en UTF-8 par défaut pour python 3 (ENFIN).

alors là ... si il y a bien *un langage dynamique qui a un support
d'unicode qui déboite, c'est bien Perl! les grapheme boundaries
dans les regexp par exemple, j'ai pas cherché récement mais à l'époque
ou c'est sorti, y'avait que Raku pour mettre tout le monde d'accord.

> Ce qui m'a désolé dans l'annonce de perl 7
> (https://www.perl.com/article/announcing-perl-7/), c'est que le code va
> ENCORE conserver
> |use utf8; |

je ne connais pas les raisons de ce choix. maintenant ca fait des années
que mon perl est utf8 par defaut parceque je commence tous mes
scripts/modules par (selon le contexte).

    use Sympatic;

ou

    use Eirotic;

ou même de temps en temps

    use Modern::Perl;

> |Bref, déçu (mais bon, pas sûr de rebasculer de python vers perl ...)|

je ne tente pas de te convraincre: moi aussi j'ai une liste de griefs longue
comme le bras contre Perl5 (surtout après avoir joué avec des langages
comme haskell, raku, common lisp et crystal) et ca restera une question
de gout.

pour ma part je suis en train de banir les langages dynamiques de mes
pratiques pour des raisons écologiques.

> |(et j'avais dit que je posterai pas en HTML, las ...). J'ai regardé le
> texte et vu quelques coquilles :
> - |antousiame -> enthousiasme

oh punaise ... elle est belle celle-ci :)

merci pour tes corrections que je vais appliquer.


> - parmis -> parmi (invariable)
> - nombreuses fonctionalités inspirée Perl6 -> nombreuses fonctionNalités inspiréeS DE Perl6
> - Des lors -> Dès lors
> - se retrouve les développeurs -> se retrouveNT les développeurs
> - est capable de sortir -> sont capableS de sortir
> - Ls dépreciations  -> LEs dépreciations
> - fonctionalités -> fonctionNalités (plusieurs endroits, faire rechercher/remplacer)

> - un système permettant une approche fonctionnelle de la consommation des générateurs
  -> un peu "cryptique" ?

et bien là encore c'est une affaire de gout et pour le coup même dans
les mondes python et js, les programmeurs commencent (*enfin*) a utiliser
les map, filter et autres.

map et filter permettent de bosser sur des listes, dans le cas de
perlude, apply et filter permet de faire la même sur des streams.

    my @top5_zsh_users =
        take 5,
        filter { /zsh/   },
        apply  { chomp; (split /:/)[6] }
        sub    { <> // () };

est à mes yeux bien plus lisible et extensible qu'un

    my $count = 0;
    my $line;
    my @top5_zsh_users;

    while ( $count++ < 5 && defined ($line = <>) ) {
        chomp;
        my ($shell) = (split /:/)[6];
        if ( $shell =~ /zsh/ ) {
            push @top5_zsh_users, $line
        }
    }

tu peux faire un

    my @top5_zsh_users = (
        grep /zsh$/,
        map { chomp; (split /:/)[6] } <>
    )[0..4]

mais tu auras consommé toute l'entrée.

> J'aurai peut-être dû faire un commit :-)

à ta guise :)

> Voila pour ma modeste contribution :-)

un grand merci!

> Bonne soirée à tous (et merci encore pour l'aide par le passé),

Tiens oui c'est vrai! rejoindre cette liste a été la meilleure chose qui
me soit arrivée dans ma vie de programmeur et je me souviens qu'au tout
début, je passais quelques heures à comprendre les réponses (je partais
de loin).

Sur cette liste je n'ai pas appris Perl: j'ai appris unix, la culture,
la philosophie dont perl tire sa puissance ... je dois beaucoup à des
gens qui ont disparu de cette liste il y a bien longtemps ...
les Book, Cognominal, Eric Cholet, ...

marc


Plus d'informations sur la liste de diffusion Perl