• [^] # Re: Y'a un truc qui me chiffonne

    Posté par (site web personnel, Mastodon) . En réponse au lien The Reverse Rewrite. Évalué à 6.

    Oui c'est un peu plus clair en lisant l'article référencé sur la définition de l'expressivité.

    Given two universal programming language that only differ by a set of programming constructs {c1, ... cn}, the relation holds if the additional constructs do not make the larger language more expressive than the smaller one. Here "more expressive" means that
    the translation of a program with occurrences of one of the constructs ci to the smaller language requires a global reorganization of the entire program.

    C'est lié à la notion de "sucre syntaxique": des constructions supplémentaires qui sont trivialement traduites en constructions plus simples, et dont la suppression en passant d'un langage à l'autre n'aboutit pas à une réorganisation de tout le programme.

    Avec cette définition, intuitivement, le C++ est plus expressif. Il a des pointeurs avec lesquels on peut faire de l'arithmétique , des accès hors des bornes, des accès à de la mémoire déjà libérée, par exemple.

    Donc avec cette définition, l'avantage du Rust serait qu'il est moins expressif: il rend impossible d'écrire certaines choses, ou au moins il faut considérablement refactoriser le code pour y parvenir. Mais avec cette définition, l'assembleur est probablement le langage le plus expressif: celui qui permet de tout faire. Pour moi ça pointe vers le fait que ce n'est pas vraiment la bonne notion ici.

    Alors, les gens qui parlent de l'expressivité du Rust, utilisent-ils le mauvais terme, ou bien ont-ils une autre définition de l'expressivité d'un langage?