Nim a fait sa première entrée dans l'index TIOBE en 2017 à la position 129, l'année dernière, il est entré dans le top-100, et il a réussi à se hisser dans le top-50 pendant 2 mois. « Nous espérons que la version 1.6 renforcera cette tendance, en s'appuyant sur les principaux atouts de Nim : un langage de programmation système pratique et compilé offrant des performances et une syntaxe de type Python, une flexibilité de type Lisp, et une métaprogrammation de premier ordre », a déclaré l’équipe de développement de Nim.
Voici, ci-dessous, les améliorations apportées par Nim 1.6 :
- nouvelles fonctionnalités du langage (iterable[T], définis par l'utilisateur, importations privées, effets stricts, opérateurs de type point, arguments de bloc avec paramètres optionnels) ;
- nouvelles fonctionnalités du compilateur (nim --eval:cmd, extensions nimscript personnalisées, messages du compilateur personnalisables) ;
- améliorations majeures de --gc:arc et --gc:orc ;
- correction et performance de l'analyse et du rendu des entiers et des flottants dans tous les backends ;
- améliorations significatives des messages d'erreur, montrant un contexte utile
- la logique de génération de documentation et la documentation, en particulier runnableExamples, fonctionnent maintenant dans plus de contextes ;
- les backends JS, VM et nimscript sont plus cohérents avec le backend C, permettant à plus de modules de fonctionner avec ces backends, y compris les imports de std/prelude ;
- la suite de tests est maintenant standardisée pour tester les modules stdlib sur chaque backend majeur (C, JS, VM) ;
- support pour Apple silicon/M1, 32-bit RISC-V, armv8l, CROSSOS, support amélioré pour le backend NodeJS ;
- améliorations majeures aux modules system, math, random, json, jsonutils, os, typetraits, wrapnils, lists, hashes incluant des améliorations de performance
- dépréciation d'un certain nombre de fonctionnalités sujettes aux erreurs ou redondantes.
Pourquoi utiliser Nim alors que des langages comme Python, Rust, Julia et bien d’autres existent ?
Nim
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.
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, 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.
D’après le baromètre TIOBE, le langage Nim est classé parmi le top 100 des langages les plus utilisés, à 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. Pour certains analystes, il n’existe pas de meilleur langage de programmation, mais chaque nouveau langage essaie d'améliorer les tares qu'il identifie dans un ou plusieurs langages précédents, ajoute de nouvelles méthodes et fonctionnalités pour en faire un langage nouveau.
Source : Nim
Et vous ?
Que pensez-vous du langage Nim ? Quel est votre avis sur les améliorations apportées à ce langage ?
Êtes-vous pour ou contre la multiplicité des langages de programmation ?
Utilisez-vous un langage classé parmi les 50 derniers du top 100 du classement TIOBE ? Pourquoi ?
Voir aussi :
Python et C++ sont les langages qui ont connu la plus forte croissance de popularité sur l'année 2020, selon les statistiques de l'index TIOBE
Python devient le langage de programmation le plus populaire sur TIOBE dans l'édition d'octobre et détrône C, une première en plus de 20 ans
La première version finale de Nim, le langage doté d'un transcompilateur vers C, C++, JavaScript est disponible, avec des ajouts
La version 1.4.0 du langage de programmation Nim est disponible avec les fonctions strictes, ainsi que plusieurs ajouts et modifications dans la bibliothèque standard