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 2021, une première en plus de 20 ans. Paul Jansen, PDG de TIOBE Software, en a profité pour féliciter le père de Python :
« Pour la première fois depuis plus de 20 ans, nous avons un nouveau chef de file : le langage de programmation Python. L'hégémonie de longue date de Java et C est terminée. Python, qui a commencé comme un simple langage de script, comme alternative à Perl, est devenu mature. Sa facilité d'apprentissage, son énorme quantité de bibliothèques et son utilisation répandue dans toutes sortes de domaines en ont fait le langage de programmation le plus populaire d'aujourd'hui. Félicitations Guido van Rossum ! Proficiat ! »
Rust
Rust est un langage de programmation open source qui permet de créer des logiciels fiables et efficaces. Développé par Mozilla Research, la première version du langage est parue en 2010 et il jouit aujourd'hui d'une grande popularité dans toute l'industrie. Pour beaucoup, Rust remplacera à la longue le langage C dans la programmation système. Selon ses partisans, il devrait permettre d'éliminer les bogues de mémoire présents dans le code écrit en C et C++. Poussé par une grande communauté, Rust est entré en 2020 dans le top 20 de l'indice de popularité Tiobe pour la première fois.
Go et Julia
Go (Golang) est un langage de programmation open source permettant de construire des logiciels simples, rapides et fiables. Classé actuellement parmi les 20 langages les plus populaires de l’index TIOBE, ce langage connaît une forte adoption dans la communauté des développeurs. Et pour cause, ses auteurs lui concèdent une facilité d’apprentissage. En 2018, un sondage a révélé que le nombre de développeurs qui utilisent Go dans le cadre de leurs activités quotidiennes a atteint 50 % (contre 44 % en 2016).
TypeScript
TypeScript est un langage de programmation libre et open source et un surensemble de JavaScript développé par Microsoft. Il a pour but d'améliorer et de sécuriser la production de code JavaScript. TypeScript inclut un bon ensemble de fonctionnalités de programmation orientée objet (POO), qui sont bonnes pour maintenir un code robuste et propre ; cela améliore la qualité et la maintenabilité du code. Ces caractéristiques rendent le code TypeScript très propre et organisé. TypeScript prend en charge les interfaces, les génériques, l'héritage et les modificateurs d'accès aux méthodes.
Source : Nim
Et vous ?
Connaissez-vous ce langage de programmation ? Qu'en pensez-vous ?
Êtes-vous pour ou contre la multiplicité des langages de programmation ciblant les mêmes secteurs ? Dans quelle mesure ?
Quels langages de programmation utilisez-vous en entreprises et / ou pour vos projets personnel ?
Pour ou contre l'utilisation de framework ?
Si vous êtes pour, à quel moment préconisez-vous leur emploi (lorsqu'on maîtrise suffisamment le langage de programmation, lorsqu'on débute, lorsqu'on en connait les bases, etc.) ?
Seriez-vous intéressé par un framework Nim ?
Avez-vous déjà entendu parlé de framework écrit en Nim comme Prologue (framework web) ?