Zig est vraiment pas mal, surtout dans son aspect de compilation ou il permet de cross-compiler du C ce qui n'est en général pas facile.. J'ai découvert Zig pour la première fois lorsque je l'ai vu mentionner dans la communauté Nim, un autre langage dont j'ai compris que Zig était issu.
Nim est un langage compilé qui utilise une syntaxe qui s'approche du Python, mais ce n'est pas là le mieux. Comme Zig, il a été précurseur pour l'exécution de code à la compilation et Nim est à la fois un interpréteur et un compilateur. A la différence de Zig, il possède par contre un système de macros très étendu qui permet de faire pratiquement n'importe quoi avec le langage. C'est comme du Lisp mais avec une syntaxe accessible. Et en fait, les macros sont des bouts de codes exécutés à la compilation et qui utilisent l'arbre syntaxique et peuvent le transformer presque dans n'importe quel sens.
Nim se place un peu plus haut niveau et gère les allocations et destructions mémoire. Nim v1 possédait un garbage collector classique mais avec Nim v2 on passe sur un comptage de référence moderne (ARC) avec des optimisations pour gérer le déplacement mémoire et d'autres cas. Il possède également une détection de cycles (ORC). Le gros avantage de la gestion ARC/ORC c'est que les allocations / destructions sont déterministes. Très utile pour de l'embarqué ou même lorsqu'on se soucie des performances mémoire d'un programme. Et de plus cela permet de basculer progressivement vers quelque chose qui ressemble au RAII même si la lib standard n'est pas adaptée à ça encore.
# Nim
Posté par Mildred (site web personnel) . En réponse à la dépêche De Zig et des zags. Évalué à 3.
Zig est vraiment pas mal, surtout dans son aspect de compilation ou il permet de cross-compiler du C ce qui n'est en général pas facile.. J'ai découvert Zig pour la première fois lorsque je l'ai vu mentionner dans la communauté Nim, un autre langage dont j'ai compris que Zig était issu.
Nim est un langage compilé qui utilise une syntaxe qui s'approche du Python, mais ce n'est pas là le mieux. Comme Zig, il a été précurseur pour l'exécution de code à la compilation et Nim est à la fois un interpréteur et un compilateur. A la différence de Zig, il possède par contre un système de macros très étendu qui permet de faire pratiquement n'importe quoi avec le langage. C'est comme du Lisp mais avec une syntaxe accessible. Et en fait, les macros sont des bouts de codes exécutés à la compilation et qui utilisent l'arbre syntaxique et peuvent le transformer presque dans n'importe quel sens.
Nim se place un peu plus haut niveau et gère les allocations et destructions mémoire. Nim v1 possédait un garbage collector classique mais avec Nim v2 on passe sur un comptage de référence moderne (ARC) avec des optimisations pour gérer le déplacement mémoire et d'autres cas. Il possède également une détection de cycles (ORC). Le gros avantage de la gestion ARC/ORC c'est que les allocations / destructions sont déterministes. Très utile pour de l'embarqué ou même lorsqu'on se soucie des performances mémoire d'un programme. Et de plus cela permet de basculer progressivement vers quelque chose qui ressemble au RAII même si la lib standard n'est pas adaptée à ça encore.