• [^] # Re: Ils sont partout

    Posté par . En réponse à la dépêche PHPStan est sorti en version 1.0. Évalué à 2. Dernière modification le 11 novembre 2021 à 13:27.

    Je n'ai pas encore assez pratiqué et pas assez réfléchi à la question pour pouvoir bien l'expliquer. Mais je vais tenter une formulation (partielle) :

    Pour quelqu'un qui vient du C/C++, c'est un peu comme si tu avais le compilateur avec le niveau max de warning + un analyseur statique d'activer à la compilation.
    Genre c'est pas un plus, c'est obligatoire de corrigé les erreurs remontées.

    Mais j'ai dit un peu, car en fait le langage est beaucoup moins permissif notamment niveau gestion mémoire (ex: il impose le paradigme RAII), mais du coup le compilateur est aussi capable de mieux analyser/suivre le code qui est écrit, et donc détecter s'il y a des erreurs.
    Bien sur il ne va pas dire si l’algorithme ne fait pas ce que le nom de la fonction dit. Mais par contre il est capable de dire si le programmeur essaie d'utiliser une variable avant qu'elle soit initialisée, après quel soit détruite, mais aussi si deux bouts de code essaient de modifier la même variable indépendamment.
    Bien sur pour du code synchrone il y a des outils pour permettre la synchro et le partage de variable/donnée. Mais il faut utiliser des types spécifiques et qui du coup explicite l'intention.

    J'aime aussi la séparation Safe/Non-safe qui permet d'expliciter et d'encadrer les parties ou la gestion mémoire est faite de façon moins stricte (nécessaire pour certain conteneurs/types de base).

    Et ce n'est que quelques exemples non exhaustifs.

    L'avant-propos et l'introduction de la doc officielle peut apporter d'autres éléments également :
    En anglais : https://doc.rust-lang.org/book/foreword.html
    Ou en Français : https://jimskapt.github.io/rust-book-fr/foreword.html