26 août 2018

Perl 6 n’est pas le successeur de Perl 5.

Perl 6 n’est pas le successeur de Perl 5. Qu’on se le dise !

UPDATE nov/2019: Le nom  Perl 6  est abandonné, le nouveau langage s’appelle maintenant  Raku.

Habituellement quand on incrémente le numéro de version c’est qu’il y a d’importantes nouveautés  mais la compatibilité ascendante est préservée. C’est le cas pour tous les langages honnêtes que je connais  C, C++, Java, JavaScript, Python, Pascal, PHP, Fortran, Cobol etc…

Mais le code source Perl 5 ne s’exécute pas sous Perl 6. Un seul exemple :
if(a==0){ ... }
 ne marche pas en Perl 6 à cause de l’absence d’espace entre if et la parenthèse ouvrante.

Quelques autres exemples :
  • En Perl 6 on écrit %liste<key> = 0; mais en  Perl 5 on écrit $liste{key} = 0; Notez bien les deux différences.
  • En Perl 6 l’opérateur de correspondance est ~~ en Perl 5 c’est =~
  • En Perl 6 l’operateur de concaténation est le tilde (~) en Perl 5 c’est le point (.)
  • L’operateur << devient +<
  • for devient loop, eval devient try.
  • ect ect ect La liste des differences est très longue.
En fait il y a autant de ressemblances entre C++ et Java qu’entre Perl 5 et Perl 6 : On reconnaît des points communs de syntaxe, on distingue certains concepts communs mais ce n’est pas la même chose.

Alors pourquoi pas un autre nom que Perl 6 ?

Je pense que les langages étant tellement nombreux actuellement, qu’un nouveau nom passerait totalement inaperçu. Il est très difficile de se faire une place entre le C# de Microsoft, le Go de Google, le Swift d’Apple sans oublier les vénérables PHP, Python, Java, C/C++. En gardant le nom Perl ils espèrent garder l’attention de la communauté Perl 5 et essayer de la convertir à Perl 6. Pour le moment ça ne marche pas. (à mon avis ça ne marchera jamais), il y a même des tensions entre les deux communautés. Il y a même des tensions à l’intérieur de Perl 6 entre Parrot (une des machine virtuelle supportant Perl 6) et Rakudo (le compilateur Perl 6 le plus connu).

Le plus stupide dans cette dénomination c'est que Perl 5 ne peut pas passer à la version suivante car il y aurait confusion entre le Perl 6/dromadaire et le Perl 6/papillon.
Perl 6/papillon, va rester à la version 6 pour toujours ?

J’ai commencé à apprendre tout en utilisant de manière professionnelle Perl 5, et exclusivement Perl 5. Eh bien je pense que connaître Perl 5 n’est pas un avantage décisif dans l’apprentissage de Perl 6. J’ai beaucoup perdu de temps en cherchant des ponts entre les deux soi-disant versions de Perl. En fait j’aurais gagné beaucoup de temps si j’étais parti dans l’optique d’apprendre un nouveau langage (un de plus !)

Note : Les performances ne sont pas (encore) au rendez-vous. On nous répète que le langage est jeune mais que ça va venir, qu'il y a des optimisation possibles. Mais on nous répète cela depuis 2015...

Packages

Si vous trouvez que votre distribution n'est pas assez réactive aux mises à jour de Rakudo (ou que Rakudo fait trop souvent des mises à jour ...), vous pouvez ajouter le repository raduko-pkg et bénéficier des mises à jour au fil de l'eau.


A suivre le blog de Jonathan Worthington, l’architecte de Rakudo (le compilateur Perl 6) et de MoarVM (la machine virtuelle de Perl 6)

Parodies




Software Collections - SCLs

UPDATE 2020:
SCL n'est utilisé que pour RHEL/CentOS 5/6/7
Depuis la version 8 SCL est remplacé par les 'Modules Stream'. Un Stream étant une sorte de  dépôt virtuel dans le dépôt principal.

11 avril 2018

Watch GIT


Voici un truc pour apprendre comment fonctionne GIT en interne.
git

Ouvrez une première console et exécutez la commande :

cd ~
watch -n 1 --color  tree -F -C -a repo
- tree affiche le contenu du repertoire repo (qui n'existe pas encore)
- watch execute tree toute les secondes.


Dans une deuxième console tapez les commandes:

cd ~
mkdir repo
cd repo
git init 
rm –rf .git/hooks
etc…

Vous avez pigez le truc! 
- Dans la première console vous visualisez l’activité du répertoire repo et de ses sous répertoires.
- Dans la deuxième console vous tapez des commandes git et observez dans la première console ce qui se passe dans repo/.git

On peut utiliser watch pour aussi visualiser en continue le résultat de git log et ainsi voir les branches se créer, fusionner, le déplacement de HEAD etc…

Watch est un formidable outil pédagogique pour analyser et comprendre le fonctionnement de GIT.

Démo avec l’arborescence de .git :



Démo avec l'historique de git :


Pour ce dernier exemple la commande watch est :

watch -n 1 --color git log --graph --pretty=format:\'%Cred%h%Creset -%C\(bold yellow\)%d%C\(white\) %s\' --abbrev-commit --all

Les escapes avec le \ sont nécessaires à cause de watch.