Journal : Écrire du code Perl maintenable.
Posté par j_kerviel () le 27 juillet 2010Certes, la légende[1] veut qu'un code Perl, c'est illisible parce que c'est écrit en Perl. Contrairement à Python qui permet toujours de faire du code propre.
Or il est tout à fait possible de faire du code propre en Perl et du code dégueulasse en Python (même si c'est plus facile de faire du code sale en Perl qu'en Python, il faut avouer).
Mais en fin de compte, le langage est ce qu'on en fait. On ne peux pas espérer que le langage supplée à nos faiblesses.
Faire une page en php hébergée chez un fai, c'est à la portée du premier venu. Faire du code propre, performant, élégant, maintenable, etc., c'est un métier et c'est une pratique qui se perfectionne tout au long de sa vie.
J'en viens au sujet de ce journal. Comment faire du code maintenable en Perl ?
Chromium, l'auteur de Modern Perl: The Book[2] a publié une liste de conseils et de ressources nécessaires (oseré-je dire indispensable) pour toute personne dont l'objectif est de faire du code maintenable en Perl.
En vrac, on y retrouve perltidy et perl::ciritic (que je mentionnais dans le journal sus-cité), des conseils classiques (utiliser strict, warnings, CPAN, des benchmarks, documenter, etc.), écrire du code sécure, utiliser une version récente de Perl etc.
En espérant que ça soit utile à quelqu'un. N'hésitez pas à diffuser cette liste (ou le nom du livre) autour de vous.
[1] Encore une fois évoquée récemment (normal, c'était un trolldi) :http://linuxfr.org/comments/1146943.html#1146943
[2] Le brouillon du livre vient de sortir. N'hésitez pas à lui faire part de vos retours, je suis sûr qu'il en sera très content. (cf les sections 2 et 3 du README). Voir aussi
> Lire le journal (28 commentaires, moyenne: 2,6).
[+] Osé-je ?
...
(oseré-je dire indispensable)
...
En vrac, on y retrouve perltidy et perl::ciritic (que je mentionnais dans le journal sus-cité),
Les codes Perl c'est comme les pets, on ne supporte que les siens (et encore). (dixit vieuxshell)
-
[^]Re: Osé-je ?
Posté par Pierre Tramo (page perso, ) le 27/07/2010 à 12:19. (lien). Évalué à 1.Je pense qu'il voulait plutôt dire oserais-je.
-
[+] [^]Re: Osé-je ?
Posté par ptifeth (page perso, ) le 27/07/2010 à 13:07. (lien). Évalué à -1.Ou simplement «Oseré-je», si ça se trouve.
-
[+] [^]Re: Osé-je ?
Posté par Le Cancre Las () le 27/07/2010 à 13:15. (lien). Évalué à -1.Oserai-je alors
--
Les codes Perl c'est comme les pets, on ne supporte que les siens (et encore). (dixit vieuxshell)-
[^]Re: Osé-je ?
Posté par ptifeth (page perso, ) le 27/07/2010 à 13:20. (lien). Évalué à 0.Passé simple du verbe oserer ?
-
[^]Re: Osé-je ?
Posté par Le Cancre Las () le 27/07/2010 à 13:25. (lien). Évalué à 4.Non futur de l'indicatif du verbe oser, mode interrogatif.
Le passé simple ca correspondrait plutôt à "Osai-je?"
http://www.aidenet.eu/vparleje.htm--
Les codes Perl c'est comme les pets, on ne supporte que les siens (et encore). (dixit vieuxshell)-
[^]Re: Osé-je ?
Posté par ptifeth (page perso, ) le 27/07/2010 à 13:50. (lien). Évalué à 2.Pour le verbe oserer c'est "oserai-je". Et la forme interrogative est "oseré-je ?". Je me disais bien que tu confondais avec le verbe oser.
-
[^]Re: Osé-je ?
Posté par Le Cancre Las () le 27/07/2010 à 14:03. (lien). Évalué à 2.Enen effetet !
--
Les codes Perl c'est comme les pets, on ne supporte que les siens (et encore). (dixit vieuxshell)
-
-
-
[^]Re: Osé-je ?
Posté par Le Cancre Las () le 27/07/2010 à 13:34. (lien). Évalué à 5.Mais bon, je suis indulgent. J'arrive facilement à comprendre que des amateurs de Perl se mélangent les pinceaux avec la conjugaison française, ils consacrent déjà toute leur énergie à trouver la syntaxe correcte du moindre truc qu'ils veulent exprimer dans leur langage favori.
Faudra juste ajouter le Bled à leur bibliothèque. :O)--
Les codes Perl c'est comme les pets, on ne supporte que les siens (et encore). (dixit vieuxshell)-
[^]Re: Osé-je ?
Posté par totof2000 () le 27/07/2010 à 15:29. (lien). Évalué à 2.Toi t'as rien compris ....
ls consacrent déjà toute leur énergie à trouver la syntaxe correcte du moindre truc qu'ils veulent exprimer dans leur langage favori.
La syntaxe et la grammaire Perl sont très facile : il y a plusieurs façons de faire : tu trouves toujours une syntaxe qui est logique et compréhensible pour toi (mais pas forcément pour les autres). Et plus tu perles, et plus ça devient facile. C'est le retour au Francais avec ses règles rigides et ses exceptions qui est difficile (ya pas de variables implicites en francais).
-
-
[^]Re: Osé-je ?
Posté par Le Cancre Las () le 27/07/2010 à 14:00. (lien). Évalué à 4.Comme je prend la relève en ces temps de farniente, j'oubliais.
Non seulement un bon journal sans troll orthographique, ça ne se fait pas sur DLFP, mais la coutume exige aussi un petit aparté sur la licence.
Ce bouquin est sous une licence non libre.
Même s'il semble que la volonté de l'ouvrir un peu plus y soit. (les promesses ...)
C'est dommage pour ceux qui voudraient entamer la traduction de cet ouvrage de référence: ils devront demander la permission à son auteur.
For now, this draft work is licensed under a Creative Commons
Attribution-Noncommercial-No Derivative Works 3.0 United States License. For
more details, see:
http://creativecommons.org/licenses/by-nc-nd/3.0/us/
Please feel free to point people to this repository. Suggestions and
contributions are welcome. Please do not redistribute with modifications
(forking with Git is fine, but I request that you send me patches or pull
requests).
This book will be available under a less restrictive license when it comes out
in print from Onyx Neon Press:
http://www.onyxneon.com/
On a fait le tour.
Vous pouvez à présent zapper ce thread.--
Les codes Perl c'est comme les pets, on ne supporte que les siens (et encore). (dixit vieuxshell)-
[^]Re: Osé-je ?
Posté par baud123 (Jabber id, page perso, ) le 27/07/2010 à 22:14. (lien). Évalué à 3.Vous pouvez à présent zapper ce thread.
euh bin, non, faut lire le journal jusqu'au bout... et justement c'est là que ça coince :
[..] Voir aussi
et là, suspens insoutenable, le clavier semble s'être blo
-
[^]Re: Osé-je ?
Posté par Axioplase ıɥs∀ (page perso, ) le 28/07/2010 à 02:46. (lien). Évalué à 2.>> C'est dommage pour ceux qui voudraient entamer la traduction de cet ouvrage de référence: ils devront demander la permission à son auteur.
Demander l'autorisation ?! Trop dur !
Rien ne t'empêche d'entamer la traduction si tu la gardes pour toi et toi seul.
Ensuite, tu peux demander à l'auteur le droit ou non de la diffuser.--
Je ne suis pas toujours de mon avis.
-
-
-
-
-
[^]Eh si, c’est correct !
Posté par Arthur Accroc () le 28/07/2010 à 00:43. (lien). Évalué à 3.Je pense qu'il voulait plutôt dire oserais-je.
Pas forcément : « osé-je ? » (prononcé généralement et éventuellement écrit « osè-je ? ») est tout-à-fait correct, bien que peu usité (surtout à l’oral).
Bon après, on se pose généralement moins de questions sur son propre présent que sur celui des autres (et les verbes avec lesquels c’est le plus courant ne sont pas du premier groupe : « ai-je ? », « suis-je ? », « puis-je ? »…).
Voir :
http://www.leconjugueur.com/frformeinterrogative.php
http://forum.wordreference.com/showthread.php?t=380886
http://fr.wiktionary.org/wiki/Utilisateur:B%C3%A9otien_lambd(...)
-
Je dirais même plus
Hello,
Tout à fait d'accord avec toi, Perl, c'est la tronçonneuse suisse, son maniement par des personnes peu heu... formées, voilà, peut conduire à des catastrophes.
Dans le même rayon que le livre dont tu parles, il y a le très bon (à mon goût) "De l'art de programmer en Perl", par Damian Conway, éditions O'Reilly, qui, comme son nom l'indique, est disponible en français. Depuis que je l'ai lu, mon code est beau, maintenable, mes cheveux repoussent et j'ai gagné au loto.
Il couvre globalement les mêmes sujets que Modern Perl: The book, mais pour suivre l'adage Perl qui dit que "There's more than one way to do it", on pourra désormais dire aussi "There's more than one way to read it".
-
[^]Re: Je dirais même plus
Posté par kowalsky () le 27/07/2010 à 12:29. (lien). Évalué à 3.Dans le même rayon que le livre dont tu parles, il y a le très bon (à mon goût) "De l'art de programmer en Perl"
Après l'avoir lu, on écrit plus proprement en Perl mais aussi dans les autres langages. C'est un livre à posséder !
ps : Sauf le français dans mon cas...
-
[^]Re: Je dirais même plus
Posté par j_kerviel () le 27/07/2010 à 13:57. (lien). Évalué à 4.Dans le même rayon que le livre dont tu parles, il y a le très bon (à mon goût) "De l'art de programmer en Perl", par Damian Conway
Effectivement.
D'ailleurs Perl-Critic est en grande partie basée sur ce livre :
Most Policy modules are based on Damian Conway's book Perl Best Practices.( http://search.cpan.org/~elliotjs/Perl-Critic-1.108/lib/Perl/(...) )
[...]
The Policy modules distributed with Perl::Critic have been grouped into categories according to the table of contents in Damian Conway's book Perl Best Practices.
[...]
Damian Conway's own Perl::Critic configuration is also included in this distribution as examples/perlcriticrc-conway.
Et plus que le"There's more than one way to read it"dont tu parles (et qui ne m'évoque pas grand chose), je préfère leSome Ways Are Better Than Othersqui pourrait être la suite deThere Is More Than One Way To Do It
-
[^]Re: Je dirais même plus
du code degeu en python...
c'est pas super dur de faire du code degeu en python, suffit d'appliquer les recettes classiques ( des fonctions de milliers de lignes, des variables pas clairs, du copier coller, mélanger les structures ), ou de passer sur les trucs un peu spécifique au language ( grandement inspiré de Java à ce niveau ) :
- try/except sur tout. Une riche idée ça, un try/except générique avec un message. Sauf que si tu as une erreur de syntaxe, tu l'as dans l'os pour piger d'ou il vient, en fonction de la clause except
- des imports *, ou une hierarchie à rallonge, ça peut rendre les choses amusantes
Des tas de méthodes sont dispo sur http://freeworld.thc.org/root/phun/unmaintain.html
-
[^]Re: du code degeu en python...
Posté par Florian Birée (Jabber id, page perso, ) le 27/07/2010 à 14:08. (lien). Évalué à 2.En Python les erreurs de syntaxe sont générées lors de l'ouverture du fichier, et ne sont pas donc pas prise en compte par le bloc try/except (heureusement !).
Sinon, pour les autres exceptions, ça reste vrai... mais qui fait encore des try/except sans préciser les exceptions à catcher ?-
[^]Re: du code degeu en python...
Posté par Zarmakuizz (page perso, ) le 28/07/2010 à 01:06. (lien). Évalué à 3.C'est ce qu'on enseigne aux pieds des gorets roumains, comme on enseigne aux développeurs indiens à pondre 10 lignes de codes au lieu d'une quand il faut faire une requête SQL.
--
Z comme Zenitram, la licence libre qui empêche toute obligation de contribuer upstream. Envoyé depuis mon Ubuntu.
-
-
[^]Re: du code degeu en python...
Posté par gaaaaaAab () le 27/07/2010 à 14:35. (lien). Évalué à 3.redéfinir les fonctions __ par défaut, ça peut peut être bien rock'n'roll aussi
genre modifier les data dans un __str__ =)-
[^]Re: du code degeu en python...
Posté par Florian Birée (Jabber id, page perso, ) le 27/07/2010 à 15:11. (lien). Évalué à 2.Par contre, j'ai toujours été très déçu par le fait qu'on ne puisse pas redéfinir les __add__ et autres méthodes du même genre dans la classe int de base...
...on peut toujours hériter de la classe int (en nommant la classe fille int ;-) ), mais ça ne change pas le comportement des constantes entière. Dommage.
-
Justification
J'avais juste écris ça pour faire sortir les mongueurs :p je connais juste perl de réputation.
Mais en tout cas tu m'as donné envie de regarder perl de plus près.
Écrire du code Perl maintenable.
Y en a qui ont essayé, ils ont eu des problèmes.
-
[^]Re: Écrire du code Perl maintenable.
-
[^]Re: Écrire du code Perl maintenable.
Posté par lasher () le 27/07/2010 à 22:29. (lien). Évalué à 3.C'est vrai qu'écrire un truc du genre
bool f(unsigned n) { return (n>0 && 0 == (n & (n-1))); }[1]
c'est tellement plus clair (et là je fais exprès de prendre une fonction dont l'écriture cryptique peut se justifier...).
[1] Ou bien, pour les javaïstes:
public class IsPow2 {
public static boolean isPowTwo(int n) { return (n>0 && 0 == (n&(n-1))); }
}
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.