• [^] # Re: Les avantages de C++ ne sont pas bien différentes avec Rust

    Posté par . En réponse à la dépêche Faut‐il continuer à apprendre le C++ ?. Évalué à 3. Dernière modification le 15 août 2018 à 12:23.

    Plus sérieusement, je ne viens pas sur LinuxFR en demandant des arguments pour qu'on me réponde "ouais mais de toutes façons on ne fait pas ce qu'on veut".

    Que veux-tu que je te dise ? Oui, tu as raison sur certains points mais je ne peux pas changer le monde d'un claquement de doigts pour appliquer tes remarques. Après il faut quand même faire attention : tu trouves que C++ est pourri comparé à Rust, mais peut-être que si tu connaissais mieux Haskell/OCaml ou autre, tu apprécierais beaucoup moins Rust.

    Maintenant, si tu veux des réponses "pertinentes" à tes questions, essayons...

    un langage bien plus simple

    Heu... non. Le C++ est plus "complexe" que "compliqué" mais c'est le prix à payer pour assurer la compatibilité ascendante (coucou Python3). C++ et Rust sont juste très différents. Pour moi, Rust est quasiment un langage fonctionnel et il y a plein de concepts qui ne le rendent pas spécialement simple : ownership/borrowing, lifetime, trait, macro, generics, la notion de fermeture des Box, la notion de monade des Result...

    une meilleur gestion des bibliothèques tierces

    Les langages ont plus de 20 ans de décalage donc forcément. Cela dit, ça évolue côté C++ : déjà un cmake + apt-get install est souvent suffisant, et sinon il existe des outils comme conan, meson, bazel, nix...

    une manière plus élégante de déployer le code, un système de dépendance moins archaïque

    Oui mais non. Déployer un binaire du langage avec des dépendances du langage ça n'a rien de compliqué. Mais dans la vraie vie, ton déploiement va concerner aussi d'autres langages, des data, des services genre base de données... Et si je peux me permettre un troll : regarde du côté de Nix et tu verras que "cargo" c'est proche de "docker".

    une analyse statique du code permettant de déceler plus rapidement des erreurs

    Je ne vois pas trop à quoi tu fais référence. Il y a aussi des analyseurs statiques et des linters pour C++. D'ailleurs clang/llvm a apporté un peu de fraicheur à niveau il me semble.

    une gestion plus pratique (et sûre) de la mémoire

    Cette remarque classique est surtout valable pour du C++98. Aujourd'hui avec le RAII et les pointeurs intelligent, ce n'est plus tellement le cas.

    une compilation qui dure pas des plombes

    Si tu n'abuses pas des templates la compilation n'est pas si longue, surtout en incrémental. Je ne connais pas bien les macros de Rust mais j'imagine que ça doit avoir le même effet.

    une documentation fournie lisible et maintenue

    C'est pas faux. Cela dit, une autre interprétation est que Rust est obligé d'avoir cette doc car il n'est pas normalisé, ce qui a aussi des inconvénients.