• [^] # Re: Je veux crier ma haine !

    Posté par . En réponse à la dépêche Pour tout savoir du Perl post‐moderne. Évalué à 7.

    "on a un script perl écrit il y a plusieurs années, mais personne n'ose y toucher, donc on corrige les bugs dans un script qui tourne juste après"

    Perso, il me semble que dans tous les langages dynamiques du style (Perl, Python, ...), si le code est maladroit ou n'a pas de tests, on n'ose pas y toucher.

    Tu comparerais à des langages fortement typés comme Go ou Rust et là je te dirais, oui, le code vite-fait et sans tests fait nettement moins peur (après, du code sans tests fait toujours un peu peur à moins que ce soit court). Mais Python ou Perl ou Ruby ou Tcl, pour moi c'est à peu près les mêmes vraies difficultés : tous ces langages offrent très peu de garanties à la compilation (Tcl quasiment aucune, Python un peu plus mais moins que Perl avec use warnings et use strict) et permettent d'écrire de façon trop intelligente, car ils sont très flexibles et ont beaucoup de fonctionnalités.

    Par exemple : systèmes OO très riches (sans l'extension Moose, Python va même plus loin par défaut que Perl dans les abstractions non évidentes comme les itérateurs etc.), du mutable dans tous les sens (Tcl s'en sort mieux que Perl et Python pour ça), plein de sucre syntaxique ad hoc (list comprehensions en Python, manipulation de chaînes en Perl), effets de bords pas évidents à détecter (OO), portée non lexicale (i.e pas par blocs) des variables en Python et Tcl, dépendances circulaires de modules, overload d'opérateurs (particulièrement présent en Python, beaucoup moins en Perl ou Tcl), différents types d'égalité (is vs ==, etc.), des booléens qui sont des entiers (True == 1) et, dans tous les cas, gare au typos dans les noms de fonctions ou variables (Perl détecte les typos dans les noms de variables, mais pas des fonctions, Python aucun des deux et Tcl ne détecte aucune sorte de typos, même dans les mots-clés du langage, car ce sont de simples fonctions). Et on pourrait continuer longtemps.

    Même si j'aime beaucoup les langages dynamiques (même le plus dynamique d'entre eux qui est Tcl), je trouve qu'ils demandent tous une grande discipline et que les différences de clarté entre les plus connus sont assez insignifiantes au final : les difficultés résident dans la nature de ces langages et leur flexibilité, pas dans leur utilisation des $ ou l'indentation qui font pourtant souvent plus parler d'elles.

    Bref, dans le doute et sans connaissances au préalable d'un projet, je préfère lire du Go :-)