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. 

21 novembre 2017

Inclusi.f.ve




  • En écriture inclusive il ne faut plus écrire
     - Tout le monde était convaincu.
    mais
     - Toutes et tous étaient con.ne.vaincu.es.

Le Canard Enchaîné, 2017-10-18.
  • Tant que verge sera féminin et vagin masculin, j'aurai du mal à trouver un lien entre le genre des mots et la nécessaire égalité homme/femme.

  • Doit-on dire la Prix Goncourt ou la Prix Femina pour les écrivaines récompensées et le médaille Fields pour un homme ?
  • Plutôt que de compliquer, simplifions : supprimons l'accord en genre et en nombre des adjectifs et des participes passés, comme par exemple en Anglais.
  • Il n'y a pas ces problèmes en Turc, puisque c'est une langue sans genres et donc un pays où les droits des femmes sont exemplaires. Ah non ? ça ne va pas de pair ? Alors pourquoi on veut le faire ?

  • - Mon dieu, cette catharsis des conservateurs dans les commentaires!
    - Vous vouliez écrire "Mon Dieu.Déesse, cette catharsis de conservat.eur.rice.s"
     
  • Il y a quelque années on écrivait parfois avec des parenthèses comme « Cher(e)s adhèrent(e)s » mais les féministes ont décidé que mettre le féminin entre parenthèse était encore un signe de machisme.  Donc on va le mettre entre deux poings

  • Cette prétendue égalité entre homme et femme au travers de l’écriture masque un besoin de rendre tout égal, n'importe quoi et n'importe comment. Ce besoin répond à la nécessité de l'amalgame permettant d'éradiquer toute échelle de valeur : bien et mal, beau et laid, intéressant et stupide. Tout doit être égal et tout le monde doit se fondre dans cette égalité. Tout le monde doit avoir un avis sur tout sans aller contre celui de l'autre.
"li" est l'adjectif neutre pour ne pas utiliser "la" ou "le".