La concision dans n'importe quel langage peut se révéler illisible. Je ne connais pas zsh (je ne le pratique pas du tout), donc en effet la ligne que tu fournis m'est hermétique. Pourtant, avant de me dire que franchement, quel est l'idiot qui a écrit la ligne ainsi, je me poserais la question de ce que la ligne fait, et oui, je passerais le temps à essayer de comprendre avant d'émettre une opinion.
Évidemment, en Perl je peux me passer d'utiliser use warnings; use strict;, de même qu'en C je peux écrire un truc du genre
/* Returns a value <0 if p1<p2, >0 if p1>p2, and 0 if p1=p1.*/intintcmp(constvoid*p1,constvoid*p2){return*(int*)p1<*(int*)p2?-1:*(int*)p1>*(int*)p2?1:0;}
... qui, malgré l'alignement, est franchement difficile à lire. Ou bien, je peux écrire la même fonction ainsi :
/* Returns a value <0 if p1<p2, >0 if p1>p2, and 0 if p1=p1.*/intintcmp(constvoid*p1,constvoid*p2){inti1=*(int*)p1,i2=*(int*)p2;returni1<i2?-1:i1>i2?1:0;}
... Qui est déjà plus lisible.
Bien entendu, pour faire encore plus lisible, il serait sans doute mieux d'écrire ceci :
/* Returns a value <0 if p1<p2, >0 if p1>p2, and 0 if p1=p1.*/intintcmp(constvoid*p1,constvoid*p2){inti1=*(int*)p1,i2=*(int*)p2,retval;if(i1<i2)retval=-1;elseif(i1>i2)retval=1;elseretval=0;}
Mais au final, la version qui pour moi est la plus lisible et efficace est celle-ci :
/* Returns a value <0 if p1<p2, >0 if p1>p2, and 0 if p1=p1.*/intintcmp(constvoid*p1,constvoid*p2){return*(int*)i1-*(*int*)i2;}
... Et ça vient, entre autres, de la concision de l'écriture (moins de choses à lire = moins de choses à comprendre).
Évidemment je suis d'accord avec toi pour dire que la concision juste pour la concision est une mauvaise chose1. Je n'ai aucun problème avec la critique d'un langage (il y a plein de choses à critiquer en Perl, en C, en bash, sans doute en zsh etc.). Mais ta phrase impliquait une généralité sur Perl (et zsh, mais je n'ai pas répondu car je ne connais pas ce shell), ce qui m'a effectivement fait réagir.
[1] et le code que j'ai écris en C comme en Perl dans mon message précédent n'a pas été écrit pour faire « plus joli » ou pour forcer le trait que Perl est lisible : je code à peu près comme ça en Perl.
[^] # Re: Ca traduit bien un état d'esprit de la part des développeurs de systemd
Posté par lasher . En réponse au journal Systemd vs Linux, quand l'intransigeance d'un développeur tourne au ridicule.... Évalué à 2.
La concision dans n'importe quel langage peut se révéler illisible. Je ne connais pas zsh (je ne le pratique pas du tout), donc en effet la ligne que tu fournis m'est hermétique. Pourtant, avant de me dire que franchement, quel est l'idiot qui a écrit la ligne ainsi, je me poserais la question de ce que la ligne fait, et oui, je passerais le temps à essayer de comprendre avant d'émettre une opinion.
Évidemment, en Perl je peux me passer d'utiliser
use warnings; use strict;, de même qu'en C je peux écrire un truc du genre... qui, malgré l'alignement, est franchement difficile à lire. Ou bien, je peux écrire la même fonction ainsi :
... Qui est déjà plus lisible.
Bien entendu, pour faire encore plus lisible, il serait sans doute mieux d'écrire ceci :
Mais au final, la version qui pour moi est la plus lisible et efficace est celle-ci :
... Et ça vient, entre autres, de la concision de l'écriture (moins de choses à lire = moins de choses à comprendre).
Évidemment je suis d'accord avec toi pour dire que la concision juste pour la concision est une mauvaise chose1. Je n'ai aucun problème avec la critique d'un langage (il y a plein de choses à critiquer en Perl, en C, en bash, sans doute en zsh etc.). Mais ta phrase impliquait une généralité sur Perl (et zsh, mais je n'ai pas répondu car je ne connais pas ce shell), ce qui m'a effectivement fait réagir.
[1] et le code que j'ai écris en C comme en Perl dans mon message précédent n'a pas été écrit pour faire « plus joli » ou pour forcer le trait que Perl est lisible : je code à peu près comme ça en Perl.