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

    Posté par . En réponse au lien The Reverse Rewrite. Évalué à 2.

    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.

    Ben plutôt pas. Prend une feature présente en C++ et pas en asm, les template par exemple, les traduire en asm nécessite une transformation complexe, la compilation carrément, avec un programme qui n'a rien à voir et qui a perdu la généricité. Dans l'autre sens si tu comptes qu'on peut utiliser de l'asm (c'est tricher mais ...) dans un programme C++ ... C++ est strictement plus expressif que l'asm.

    Dans un autre sens simuler une machine ASM en C++ permet de réutiliser le programme asm sans trop trop d'efforts, et là on a pas spécifié la relation entre le langage et l'implémentation ou la machine.

    To avoid restrictive assumptions about the set of programming languages, the
    Gefinition only requires that the semantics observe the termination behavior of
    programs.

    Il y a une nécessité de terminaison, et on peut quand même donc supposer que la correction des programmes est un critère. Pour un accès hors borne, par exemple, on a un comportement non défini y compris en asm, donc on ne peut plus supposer que le programme termine ... pour moi donc si le programme en Rust ne compile pas il n'y a pas perte d'expressivité par rapport à l'assembleur.