IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 1.6 de Nim, le langage doté d'un transcompilateur vers C, C++ est disponible,
Avec une reconstruction du compilateur en 12s alors que Rust fait 15min, gcc : 30min+ et Go : 90s

Le , par Bruno

34PARTAGES

10  1 
Nim est un langage de programmation « moderne » aussi performant que le C (souvent indiqué comme une référence à ce niveau) : de manière générale, il souhaite donner un maximum de puissance à l’utilisateur sans sacrifier la performance (comme Rust ou Julia). En ce qui concerne ses caractéristiques, son système de typage est statique et son style impératif, bien que le langage soit multiparadigme : il mélange métaprogrammation, fonctionnel, passage de messages, procédural et orienté objet, avec un ramasse-miettes. Il ne dispose pas d’un compilateur, mais d’un transcompilateur qui produit du code C, C++ ou Objective-C en sortie… ou encore en JavaScript, ce qui facilite l’intégration avec l’environnement extérieur. L’équipe de développement de Nim a annoncé le 19 octobre la version 1.6.0 du langage de programmation.

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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de imperio
Membre chevronné https://www.developpez.com
Le 20/10/2021 à 11:13
Citation Envoyé par Bruno Voir le message
... de manière générale, il souhaite donner un maximum de puissance à l’utilisateur sans sacrifier la performance (comme Rust ou Julia).
Ça commence fort. Rust se positionne en tant que remplaçant de C et C++ en terme de performance tout en apportant de meilleures garanties en terme de sécurité (mémoire). La comparaison avec Julia me semble donc déplacé quand on parle de performance.

Citation Envoyé par Bruno Voir le message
Nim est un langage de programmation pratique et compilé offrant des performances et une portabilité semblables à celles du C++
Portabilité semblable au C++ ? Je vois pas l'intérêt alors étant donné que la portabilité du C++ est à ch***...

Citation Envoyé par Bruno Voir le message
Pour certains analystes, il n’existe pas de meilleur langage de programmation
Rien que ça ? Hé bé...
5  0 
Avatar de Kulvar
Membre confirmé https://www.developpez.com
Le 21/10/2021 à 16:07
Que pensez-vous du langage Nim ? Quel est votre avis sur les améliorations apportées à ce langage ?

Je n'aime pas le fait qu'il utilise l'indentation à la place des {} pour les blocs. Et en plus les séquences d'espace sont imposés à la place de tabulations pour l'indentation. Double NON.

Êtes-vous pour ou contre la multiplicité des langages de programmation ?

De la concurrence entre langages, c'est un moteur d'innovation et d'amélioration.

Mais ultimement, en avoir des dizaines est peu utile.

Utilisez-vous un langage classé parmi les 50 derniers du top 100 du classement TIOBE ? Pourquoi ?

J'en sais rien, je me contrefiche de l'index TIOBE. C'est juste un concours de "popularité" et pas une représentation fidèle de la valeur qualitative des langages.
4  0 
Avatar de JPLAROCHE
Membre éclairé https://www.developpez.com
Le 20/10/2021 à 11:18
Bonjour,
voilà plus de deux ans que je me suis mis à programmer avec NIM-LANG je ne regrette pas.
j'ai pu descendre dans la machine et faire de l’hacking clavier et écran.
j'ai pu aussi me servir de GTK, POSTGRESQL pour faire des applications de gestion
j'ai pu utiliser les sorties PDF (gestion client)
j'ai aussi touché pas mal de truc que long trouve dans c/c++ system par exemple les communications avec msgq (message mémoire)
j'ai fait une translation complète de gestion d'application html et websocket de c++ -> nim couplé avec GTK donc lier à des lib et utilisant les entêtes C/C++ et traduit mon code c++ en nim
j'ai pour le deal fait un développement sur les nombres Decimaux (34 chiffres) et une personne est entrain de développer en natif cela m'a permis d'apprendre comment lier des lib développer en C/C++

Tout ça pour dire que la programmation est possible pour faire de la Gestion et j'ai vu que dans le domaine du jeu aussi ainsi que dans le domaine de l'image, beaucoup de chose au sujet du web.
le langage est simple logique et sécuritaire structurant , la compilation est très simple et il est possible de paramétrer à souhait.

L’éditeur visual studio ou VScodium prend en charge le langage

pour finir et comprendre que ce langage est puissant un éditeur moe sur GitHub vous montrera que l'on peut aller très loin.... il est écrit en NIM-LANG

NIM-lang fonctionne très bien sur : LINUX, WINDOWS, MAC

@bientôt
quelques misent en ligne personnelle
ps:
j'ai plus de 40 ans d'informatique et à la retraite je regrette de n'avoir pas eu la possibilité de l'utiliser dans les sociétés que j'ai travaillées.
3  0 
Avatar de Fagus
Membre éprouvé https://www.developpez.com
Le 12/11/2021 à 12:56
Citation Envoyé par JPLAROCHE Voir le message
Bonjour,
Je veux bien entendre certaine chose, mais dire qu'il n'y a pas de support ni de documentation ce n'est pas vrai
[...]
Quant aux "GUI" les choix sont permis GTK UIP wxWidgets ... ouvert à plusieurs cela permet peut-être à certain de mieux faire la transition.
[...]
Tu aurais pu signaler la prise en charge de javascript.
[...]
[/URL]
Bonjour,
Merci pour cette longue réponse.
Je ne nie pas les qualités ou les possibilités du langage, mais je regarde plus sous l'angle du projet à réaliser.

* Si c'est pour utiliser un SDK GUI classique, à vrai dire, je peux déjà utiliser ceux que tu cites dans un autre langage dont je suis à peu près sûr que le binding est fiable car testé par des légions de développeurs et bien documenté, ou dans un langage natif du SDK, ou avec un IDE RAD plus pratique. À la limite, je m'étais dit que comme nim produit des binaires petits, il peut servir pour écrire de petits utilitaires via un SDK léger, mais je me suis laisser décourager. J'avais testé https://github.com/yglukhov/nimx (celui d'un des principaux développeurs), mais sur une installation fraîche chez moi, la démo issue d'un git pull ne compile pas avec un message d'erreur incompréhensible jamais vu sur la toile. Cela dit, pour lancer un gros projet qui ne dépend pas de librairies externes, ce sera sans doute plus agréable à écrire qu'en c++ (c'est ce que tu sembles faire).

* Pour javascript c'est sans doute la même idée : on doit pouvoir y arriver, mais ce sera sans doute plus facile au néophyte et avec moins d’accrocs en Typescript vu que c'est le principal surensemble de js en production.

* Pour faire quelque chose qui tourne sur android, les auteurs de nim utilisent https://github.com/yglukhov/rod en production je crois. Mais je n'ai pas trouvé d'autre documentation que le code source...

Citation Envoyé par Rep.Movs
la syntaxe fait vieillote (rappelant Pascal/clipper)
Ce n'est pas forcément un défaut, la syntaxe de pascal avait été conçue pour être lisible. (à la limite je trouve ça mieux qu'en c quand un programmeur décide d'utiliser une syntaxe "créative" que seul les initiés peuvent comprendre ; ou que le c++ où des décennies d'améliorations et de corrections ont permis une grande variété de syntaxe, de surcharges et de styles).
2  0 
Avatar de JPLAROCHE
Membre éclairé https://www.developpez.com
Le 23/10/2021 à 15:11
Citation Envoyé par Fagus Voir le message
C'est un langage qui sur le papier est très prometteur.
  • Il fournit facilement des binaires rapides et légers (sur je ne sais plus quel benchmark publié sur developpez c'était du même ordre de grandeur que les meilleurs langages compilés).
  • Le langage est très peu verbeux. Il permet d'avoir du binaire memory safe beaucoup plus concisément qu'en rust.
  • la syntaxe est moderne, rappelant python
  • les bindings vers c et python sont automatiques.
  • cross-plateforme
  • gestionnaire de paquets moderne
  • langage générique, bien documenté, etc.


C'est tentant, mais les limites sont
  • Il n'y a pas de grosse fondation ou société derrière pour amorcer la pompe commerciale et attirer une grosse communauté
  • Ni de projet exceptionnel pour le promouvoir (genre Unreal engine, Godot, GUI de 1er plan,...)
  • Pas de support clair, ni de documentation pour la programmation embarqué. Des gens développent des jeux pro sous android mais ce n'est pas documenté et seuls des pionniers peuvent les suivre.
  • Il n'y a pas de niche où Nim excelle. Rust est le langage machine memory-safe du futur ; Go est le langage des services ; Python est le langage de script ; R Matlab sont dans la place académique, etc.
  • Petite communauté avec beaucoup de projets du type "j'espère que quelqu'un trouvera mon module utile ; pour la documentation devinez en lisant mon code"


J'aurais bien lancé des projets dans ce langage, mais c'est trop pionnier pour moi. Pour un jeu par ex, ce sera 1000 fois plus simple d'apprendre le Lua ou le Godoscript qui bien qu'inférieurs, sont ceux des moteurs déjà tout prêts.
Bonjour,
Je veux bien entendre certaine chose, mais dire qu'il n'y a pas de support ni de documentation ce n'est pas vrais. D’autre part le forum est très actif et on y trouve un vrai support et les bugs sur github ou les demandes de modification sont très suivis.

J’ai fait et mis du code sur github sur des sujets très précis et pour démontrer que cela est possible, en me bornant à n'utilisé que des instructions NIM, quant au lien avec des lib C/C++ inutile de présenter les lib mais de pouvoir les utiliser et de savoir le faire est important exemple GTK .

Le seul projet sur lequel je suis est de remettre au gout du jour les écrans de type 5250 ou 3270 l'écran noir du terminal les modules sont près et j'en suis au générateur de codes en gros un designeur screen ressemblant ou plutôt m'inspirant de celui d'IBM sur l'AS400 "SDA" dans mes tests un écran de type gestion de clients feras moins de 72ko compilé du 2D à plat "TUI" je m'inspire aussi de GLADE pour la simplicité et la cohérence vue PC quant la documentation je compte m'y atteler dès que mon générateur sera fonctionnel, mais je pensais que onMouse et offCursor était évident par exemple.

Je te trouve un peu sévère dans ta critique, des sociétés, il y en a et qui subventionne ......

Quant aux "GUI" les choix sont permis GTK UIP wxWidgets ... ouvert à plusieurs cela permet peut-être à certain de mieux faire la transition.

La partie WEB est très active puisque des forums et autre sont fait dans ce langage.

Par contre, venant du C/C++ l'ajout de la rigueur du pascal est un très gros point et la fiabilité de Rust (je ne dis pas que cela est meilleurs) quant à python, je ne connais pas assez, mais effectivement l'indentation y est très sévère question d'habitude et de lisibilité la documentation générer peut être très poussée et ne pas se contenter des descriptions de fonction, comme je l'ai pour fait le moment.

Tu aurais pu signaler la prise en charge de javascript.

Ce n'est que mon avis maintenant il est vrai que cela demande de l'investissement pour posséder un langage ou bien de si sentir à l'aise, Ça je veux bien te le concéder

Quant à la reconnaissance disons que le rythme de croisière ou les fonctions son stable et un très grand pas ont été fait depuis 2 ans et surtout cette année avec le compilateur
j'ai d'ailleurs publié un article (mis en Français) pour dire que NIM n'était pas un transpilateur... l'article montre et démontre la différence entre un transpilateur et un compilateur.
https://www.developpez.net/forums/d2119867/general-developpement/langages-programmation/nim-transpilateur/

@bientôt
ps j'ai 70 ans et plus de 45 d'informatique peut-être je suis vieux jeu mdrrrrrr
2  1 
Avatar de JPLAROCHE
Membre éclairé https://www.developpez.com
Le 25/10/2021 à 23:31
Bravo , l'équipe doit-être aux anges
1  0 
Avatar de JPLAROCHE
Membre éclairé https://www.developpez.com
Le 13/11/2021 à 4:16
Citation Envoyé par Fagus Voir le message
Bonjour,
Merci pour cette longue réponse.
Je ne nie pas les qualités ou les possibilités du langage, mais je regarde plus sous l'angle du projet à réaliser.

* Si c'est pour utiliser un SDK GUI classique....... J'avais testé https://github.com/yglukhov/nimx ....
.
bonjour et merci d'avoir pris le temps de répondre.

Hélas beaucoup de petit projet ont été mis à disposition.... pour moi, c'était une façon de tester ce que certain ont déposés... et je trouve que peut-être ce n'est pas la bonne façon de valoriser NIM.

outre GTK il y a un projet qui fonctionne pas mal https://github.com/nim-lang/ui perso j'ai testé.... mais pour moi, c'était une approche à compléter. Je préfère, GTK avec glade j'ai fait un petit truc ou tu peux mettre le script généré par Glade dans ton source l'utiliser comme en c /c++ le build. (nim_outil) ainsi diminuer considérablement ta définition screen et avoir un designer.

Arrivant de gros system , j'ai refait en nim pure le zoned (tel que le fait l'OS400 y compris les dates decimal char[] ...) je me suis remis sur postgresql et me suis fait un wraper qui s'appuie sur pgsql étant dans la gestion d'entreprise (au passage, je voudrai dire que la gestion ce n'est pas uniquement faire des commandes.... mais que l'on y rencontre des problèmes intéressants et mettent en œuvre des solutions très élaboré)
et je me suis attaqué à refaire un TUI en pure nim actuellement je suis sur un designer qui permettra de générer du code ( en gros compiler 550ko) il génère des panels formulaire complet, combo, menu, tableau encours. Je m'appuie sur les 2 modules termKey (le hack clavier écran) et termCurs (voir ncurse ou pdcurs ) en utf8

Le tout combiné je pense rendre lisible comme on lit un journal et en même temps régler certain problème de fond.
L'idéal serait de remonter encore d'un niveau par exemple déclarer une table et générer automatiquement les entrées et sorties (j'ai fait cela en C/C++ et langage natif postgresql autre que psql) mais en pure nim
ce que j'ai fait en nim c'est l'analyseur de table avec la possibilité de générer du code pour faire des requêtes

bon ce n'est pas un RAD comme l'IDE de pascal ou U++ ou ec

ps: si tu testes GTK il fonctionne aussi bien avec gtk3/4 ce qui pour moi est un tour de force....

pour travailler avec GTK et la doc officielle de GTK et t'y retrouvé avec GINTRO(gtk nim) les fonctions sont respectées et plus cohérente c'est plus proche de GTK++
une astuce si tu travailles avec vscodium éditeur libre de visual-studio légal sous linux

Code bash : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
 
fdBlanc='\033[47;1m'
fcNoir='\033[30m'
 
f_dsply(){
    echo -en '\033[0;0m'
    echo  -e $1
    echo -en '\033[0;0m'
}
 
f_read() {
    echo -en '\033[0;0m'
    echo -en $fdBlanc$fcNoir
    read
    echo -en '\033[0;0m'
}
f_clear() {
reset > /dev/null
    echo -en '\033[1;1H'
    echo -en '\033]11;#000000\007'
    echo -en '\033]10;#FFFFFF\007'
}
 
requete="?"
 
 
 
 
 
while [ "$requete" == "?" ]; do
  f_dsply 'veuilez donnez le critère de recherhe:'
  f_read
  requete=$REPLY
  if [  -z $requete  ]; then
    f_dsply 'erreur de saisie';
    read -s -n 1
    f_clear
    requete="?"
  fi
 
 
done
requete=$REPLY
grep -B2 --color=auto $requete ~/.nimble/pkgs/gintro-0.9.5/gintro/*
 
exit 0
1  0 
Avatar de Fagus
Membre éprouvé https://www.developpez.com
Le 22/10/2021 à 19:38
C'est un langage qui sur le papier est très prometteur.
  • Il fournit facilement des binaires rapides et légers (sur je ne sais plus quel benchmark publié sur developpez c'était du même ordre de grandeur que les meilleurs langages compilés).
  • Le langage est très peu verbeux. Il permet d'avoir du binaire memory safe beaucoup plus concisément qu'en rust.
  • la syntaxe est moderne, rappelant python
  • les bindings vers c et python sont automatiques.
  • cross-plateforme
  • gestionnaire de paquets moderne
  • langage générique, bien documenté, etc.


C'est tentant, mais les limites sont
  • Il n'y a pas de grosse fondation ou société derrière pour amorcer la pompe commerciale et attirer une grosse communauté
  • Ni de projet exceptionnel pour le promouvoir (genre Unreal engine, Godot, GUI de 1er plan,...)
  • Pas de support clair, ni de documentation pour la programmation embarqué. Des gens développent des jeux pro sous android mais ce n'est pas documenté et seuls des pionniers peuvent les suivre.
  • Il n'y a pas de niche où Nim excelle. Rust est le langage machine memory-safe du futur ; Go est le langage des services ; Python est le langage de script ; R Matlab sont dans la place académique, etc.
  • Petite communauté avec beaucoup de projets du type "j'espère que quelqu'un trouvera mon module utile ; pour la documentation devinez en lisant mon code"


J'aurais bien lancé des projets dans ce langage, mais c'est trop pionnier pour moi. Pour un jeu par ex, ce sera 1000 fois plus simple d'apprendre le Lua ou le Godoscript qui bien qu'inférieurs, sont ceux des moteurs déjà tout prêts.
0  0 
Avatar de Rep.Movs
Membre régulier https://www.developpez.com
Le 08/11/2021 à 10:29
C'est un beau travail, mais:
  • les performances annoncées sont celles du transpilateur
  • la syntaxe fait vieillote (rappelant Pascal/clipper)
  • n'a pas l'air de faire grand-chose que d'autres déjà existants ne fasse pas
  • Il y a de la généricité, mais pas de classe???


Bref, pas de quoi sauter au plafond.

Et je suis pour la multiplicité des langages, s'ils apportent quelque chose ou s'ils correspondent à un environnement. Des concurrents de SQL plus "logiques" et plus "modernes" serait bien, des concurrents à Pascal/C/Ada, on n'en n'a plus vraiment besoin, sauf s'ils permettent de manipuler des structures particulières de données ou s'ils simplifient la gestion mémoire/la gestion de concurrence de façon significative.

Là j'ai l'impression de voir les articles des années 90 sur des "nouveaux" langages qui finalement n'ont jamais percé.

Par ailleurs, générer par transpilation, sauf à avoir une véritable environnement de dev, est une complication énorme pour le débogage.

Des langages comme Eiffel apportaient des notions intéressantes qui font partie des librairies de dev permettant de vérifier "dynamiquement" si une fonction n'est pas bugguée.

Quand à la saisie mode python... ça paraît être une bonne idée, mais c'est tellement dépendant de l'EDI que c'en est parfois un enfer.

Bref, encore un langage créé par des gens qui ne voulaient pas apprendre un autre langage/un autre méthode, on créé un n-ième langage de zéro, ont appris et complété avec ce qui manquaient, et accouchent d'un langage tout aussi compliqué et avec autant d'avantages et de défaut que les autres.
0  1