Alors que la plupart des nouveaux langages s'efforcent d'ajouter des fonctionnalités permettant d'écrire plus succinctement, Zig va à contre-courant : l'objectif est de lire un bout de code et de savoir exactement ce que la machine va faire, sans qu'il y ait de comportement caché.
Il n'y a pas de distribution clandestine
Toute fonction nécessitant de la mémoire dynamique doit recevoir un allocateur en paramètre. Cela peut sembler fastidieux, mais en contrepartie, la signature de la fonction permet de savoir immédiatement si elle utilise un allocateur ou non — ce qui est très important pour les logiciels embarqués et le code du noyau.
Cela facilite également les tests de fuites de mémoire : il suffit de passer les données à un allocateur avec suivi, puis, à la fin du test, de vérifier s’il reste des résidus.
Il n'y a pas de flux de contrôle caché
Pas d'exception, pas de surchargement d'opérateurs, pas de constructeur implicite. Les erreurs sont renvoyées sous forme de valeurs et doivent impérativement être gérées. En lisant le code Zig, tous les endroits où il est possible de sauter vers une autre partie du code sont visibles.
Exécuter le code dès la compilation
Zig permet d'exécuter du code Zig standard dès la compilation, ce qui sert à générer des types, à calculer des tables de consultation et à choisir des branches en fonction de la plateforme. Au lieu d'apprendre un langage de macro spécifique, vous utilisez le langage lui-même.
Qui devrait y prêter attention ?
Zig n'a pas encore atteint la stabilité, la syntaxe varie d'une version à l'autre et l'écosystème des bibliothèques est encore limité. Il ne faut pas encore miser sur cette technologie pour des systèmes critiques.
Mais il y a une chose qui est immédiatement utilisable, même si vous n'écrivez pas la moindre ligne de code Zig : sa suite d'outils permet une compilation croisée très légère du C et du C++ sur de nombreuses plateformes ; de nombreux projets l'utilisent uniquement pour remplacer leur chaîne d'outils de compilation.
Thảo luận