
L'équipe de développement a annoncé avoir reçu plus de 100 000 dollars en bitcoins :
« Plus tôt cette année, nous avons eu le privilège de recevoir 1,868 BTC (~ 117 000 USD au moment de la rédaction) à notre adresse de portefeuille Bitcoin de longue date. Nous voulions profiter de cette occasion pour remercier pour ce don et bien d'autres à travers nos nombreux efforts de collecte de fonds. Mais pour décrire également les mesures que nous avons prises pour sécuriser nos fonds et annoncer que l'ancienne adresse de portefeuille Bitcoin est désormais obsolète.
« Le portefeuille Bitcoin que nous utilisons a été créé en 2011. Nous avons reçu quelques petits dons ici et là, avec le recul, nous aurions dû sécuriser ces fonds beaucoup plus tôt[1], mais le don récent relativement important a stimulé nous en action. Essentiellement, nous avons transféré les fonds vers des portefeuilles matériels appartenant à l'équipe de développement principale. De cette façon, nous avons considérablement réduit le risque de vol des fonds.
« Cela signifie que nous avons une nouvelle adresse de don Bitcoin :
- bc1qzgw3vsppsa9gu53qyecyu063jfajmjpye3r2h4
« C'est là que la majorité des fonds ont été envoyés et où tous les nouveaux dons BTC doivent également être envoyés.
« Nous avons maintenant aussi une adresse Ethereum :
- 0xC1d472B409c1bdCd8C0E45515D18F08a55fE9fa8
« Pour terminer, nous voudrions également demander que si quelqu'un souhaite nous envoyer un don important à notre adresse Bitcoin ou Ethereum, veuillez commencer par nous envoyer un petit montant et nous contacter au sujet de vos intentions. C'est juste pour nous assurer que nous pouvons confirmer que les fonds sont arrivés dans nos portefeuilles en toute sécurité. Si la crypto n'est pas votre truc, assurez-vous de consulter notre page de dons pour d'autres moyens de soutenir le développement de Nim.
« Merci encore pour tout votre soutien au fil des ans. Vos contributions, à la fois monétaires et sous la forme de demandes de tirage et de renforcement de la communauté, ont contribué à faire de Nim ce qu'il est aujourd'hui ».
Pourquoi utiliser Nim alors que des langages comme Python, Rust, Julia et bien d’autres existent ?
Un seul langage pour tous : du script shell au frontend et backend web, au calcul scientifique, au deep learning, au client blockchain, au gamedev, à l'embarqué. Nim est un langage de programmation pratique et compilé offrant des performances et une portabilité semblables à celles du C++, une syntaxe semblable à celle du Python, une flexibilité semblable à celle du Lisp, une forte interopérabilité avec le C, le C++, le JS et le Python, et une métaprogrammation de premier ordre.
Le bout de code echo "hello world" génère un binaire de 73K (ou 5K avec des options supplémentaires, optimisé pour les dispositifs embarqués (Go : 2MB, Rust : 377K, C++ : 56K). Avec un temps de compilation rapide : une reconstruction complète du compilateur prend ~12s (Rust : 15min, gcc : 30min+, clang : 1hr+, Go : 90s). Pas besoin de makefiles, cmake, configure ou d'autres scripts de compilation, grâce à l'évaluation des fonctions au moment de la compilation (CTFE) et au suivi des dépendances.
L’utilisateur peut cibler n'importe quelle plateforme avec un compilateur C : Android et iOS, systèmes embarqués, microcontrôleurs, WASM, Nintendo Switch, Game Boy Advance. L'interopérabilité sans frais généraux permet de réutiliser du code en C, C++ (y compris les templates, C++ STL), JS, Objective-C, Python (via nimpy).
Enfin, les macros permettent de manipuler/générer du code au moment de la compilation au lieu de compter sur les générateurs de code, ce qui permet d'écrire des DSL et des extensions de langage dans le code utilisateur. Parmi les exemples typiques, citons l'implémentation de chaînes f de type Python, le chaînage optionnel, les générateurs de lignes de commande, les applications monopages de type React, la sérialisation protobuf et les générateurs de liaisons.
Le langage Nim est classé dans le top 100 des langages les plus populaires sur le baromètre TIOBE, à la position 81. L’existence des langages comme Nim soulève la question sur la multiplicité des langages de programmation et leur nécessité. En effet, Nim est en concurrence avec des langages qu’on retrouve dans le top 100 de TIOBE comme F#, CIL, ECMAScript, Eiffel, Elm, Haxe, Icon, Inform, Io, JScript, Korn shell, Lingo, M4, ML, MQL4, Nim, NXT-G, Occam, OpenCL, OpenEdge ABL, Oz, PostScript, Q, Racket, REBOL, REXX, Ring, RPG, S-PLUS, Simulink, SPSS, Vala/Genie, Verilog, Xojo et bien d’autres.
La volonté de l’équipe de développement de Nim serait de voir le langage classé dans le top 10 avec des langages comme, Python, C, Java, C++, C#, Visual Basic.
De manière générale, la syntaxe rappelle Python (pour la délimitation des blocs) et Scala (pour les types et certaines syntaxes raccourcies), avec des types, mais aussi le renvoi implicite d’une variable (ce qui contribue à raccourcir le code… avec un peu d’habitude) :
Code Nim : | Sélectionner tout |
1 2 3 4 5 6 7 | proc reverse(s: string): string = result = "" for i in countdown(high(s), 0): result.add s[i] var str1 = "Reverse This!" echo "Reversed: ", reverse(str1) |
La métaprogrammation est poussée plus loin qu’en C++ : elle permet de générer n’importe quel type de code à la compilation, en travaillant directement au niveau de l’AST du compilateur. Par exemple, la fonction suivante génère des fonctions dont le nom dépend des arguments. (Bien évidemment, ce système peut être utilisé dans des cas plus complexes.)
Code Nim : | Sélectionner tout |
1 2 3 4 5 6 7 8 | import macros template abcProc(n: expr): stmt = proc n() = echo astToStr(n) abcProc(A) abcProc(B) abcProc(C) |
L’un des concepts principaux derrière le langage concerne les aspects parallèles : chaque fil d’exécution peut communiquer avec les autres à l’aide de messages asynchrones, des canaux. Le collecteur de mémoire peut donc fonctionner indépendamment pour chaque fil d’exécution : même en mettant l'un d'entre eux en pause, l’application peut toujours fonctionner ; ce système est donc adapté aux applications qui ne sont pas strictement temps réel, comme les jeux (mais contrairement à une bonne partie de l’électronique).
Quelques langages avec lesquels Nim est en concurrence
Python
Python est un langage de programmation interprété, multi-paradigme et multi-plateformes. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par récupérateur de mémoire et d'un système de gestion d'exceptions ; il ressemble ainsi à Perl, Ruby, Scheme, Smalltalk et Tcl. Python a réussi à se hisser à la première place dans le classement TIOBE dans l'édition d'octobre...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.