• [^] # Re: Ca me fait penser un peu à ce que j'ai vécu à un moment avec Python .....

    Posté par . En réponse au lien When Zig is safer and faster than Rust. Évalué à 4.

    Tout celà pour dire que bien souvent un langage donné va permettre de faire des choses dans un certain contexte [...]

    Je répond a ce paragraphe, pas juste a cette citation.
    Je n'ai également aucune connaissance sur Rust ou Zig... en tout cas, je ne considère pas le fait d'avoir entendu parler de ces langages et de leurs objectifs comme une connaissance (et encore moins une compétence!).
    Bref, maintenant que j'ai explicité mon contexte personnel, commençons.

    Pour commencer, l'article originel ne dit pas que Zig est plus sûr que Rust: il dit que Zig est plus sûr que les sections unsafe de Rust, notamment grâce à la présence d'outils plus développés.
    Vu que Zig est, de ce que j'ai lu, (sans jamais prêter trop d'attention) comparable à un fork du C, il ne serait pas étonnant qu'en effet, les outils C y soient adaptés, par exemple coccinelle qui n'est pas utilisable en C++, non plus (et celui-la vraiment, j'aimerai bien: je connais quelques jeux codés en C++ qui bénéficieraient d'un bon gros refactoring, et l'outil sert justement à ça).
    Zig et Rust ont beau être «de la même génération» il n'empêche que l'un est un héritier (Zig) tandis que l'autre est un langage construit de zéro (si l'on exclue les décennies d'expériences, bien sûr).
    En gros, la ou C++ et Zig sont des évolutions du C, Rust est un langage nouveau, qui n'a pas été conçu pour tourner sur du bare-metal, contrairement au C. C'est à dire, je crois savoir que Rust à été conçu pour améliorer les perfs et la maintenance de Firefox au 21ème siècle, alors que C aurait lui été conçu dès le départ (c'est à dire fin du 20ème, il y a plus de 50ans) pour construire un système d'exploitation.
    Il y a donc (à ma connaissance) 2 grosses variables à prendre en compte:

    1. le but. Créer un OS, ça implique créer un kernel, quoiqu'en dise GNU. Et un kernel, c'est quand même pas mal de code "pas sécurisé" (d'autres diraient "bas niveau", ce qui me semble un peu moins... mesquin. A défaut de meilleur mot. Je suis claqué, désolé.). Le C possède la capacité intrinsèque d'intégrer de l'assembleur, par exemple, et il arrive que ça soit utile (c'est un peu comme goto... on évite, mais rester dogmatique a parfois des effets pires);
    2. l'âge du capitaine. C, le "capitaine" de Zig, a 50 ans, et un éco-système qui a été développé pendant ces 50 ans, également. Zig, de ce que j'ai lu reste plus «dans les clous» que C++, il me semble donc très possible qu'il bénéficie encore plus de tout cet écosystème que C++. Je ne sais pas à quel point Rust est compatible avec, mais je doute que la compatibilité soit élevée.

    Bon, en lisant un peu, je me dis que des utilisateurs de lisp pourraient ne pas être d'accord avec l'auteur par contre:

    Here are two monstrosities I found in the code:

    // The way to make these readable is to create a variable for each dereference,
    // but that's annoying so in some places I got lazy.
    // ew
    (*(*closure.as_ptr()).upvalues.as_ptr().offset(i as isize)) = upvalue;
    // ewwwwww
    let name = (*(*(*ptr.cast::<ObjBoundMethod>().as_ptr()).method.as_ptr())
     .function
     .as_ptr()).name;
    

    J'imagine que l'abus de parenthèses ne gêne pas tout le monde? :)

    Bon, je m'arrête à la lecture du 1er tier, je pense que, globalement, l'article est intéressant (je m'arrête parce que je suis rincé, je finirai peut-être plus tard, en plus ce message est déjà bien assez long), et soulève des points intéressants, notamment le fait que des langages «pas sûrs» soient plus appropriés pour du code bas niveau.
    Ca semble enfoncer une porte ouverte, mais je reconnaît que cette évidence m'avait un peu échappé... et du coup les questions qui me viennent, c'est: que penser, spécifiquement, de Redox et du fait que Linux accepte l'usage de Rust dans certaines sections du projet (les pilotes, bien que j'imagine qu'ils doivent utiliser le principe du sablier pour être appelables par le noyau)?

    PS: il faut vraiment que je prenne plus le temps d'écrire sans anglicisme, l'exercice m'est étonnamment difficile...