Nim (langage)
Nim (anciennement nommé Nimrod) est un langage de programmation impératif, multi-paradigme et compilé imaginé et développé par Andreas Rumpf. Il est prévu pour être efficace, expressif et élégant. Il supporte la métaprogrammation, le fonctionnel, le procédural et l'orienté-objet.
Pour les articles homonymes, voir Nim.
Nim | ||
Date de première version | 2008 | |
---|---|---|
Auteur | Andreas Rumpf | |
Dernière version | 1.6.6 ()[1],[2] | |
Influencé par | Modula-3 (en) Object Pascal Ada C++ Python Lisp Oberon C# |
|
Écrit en | Nim | |
Systèmes d'exploitation | Windows, macOS, Linux, FreeBSD, NetBSD | |
Licence | MIT | |
Site web | https://nim-lang.org/ | |
Extension de fichier | nim et nims | |
Initialement, le compilateur Nim était écrit en Pascal. En 2008, une version du compilateur écrite en Nim a été réalisée. Le compilateur est open source et développé par un groupe de volontaires en plus d'Andreas Rumpf. Le compilateur génère un code C optimisé.
Exemples
Les exemples suivants sont valides sur la version 0.10.2 de Nim.
Hello world
echo "Hello World!"
Renverser une chaîne
proc reverse(s: string): string =
result = "" # variable « result » implicite
for i in countdown(high(s), 0):
result.add s[i]
var str1 = "Reverse This!"
echo "Reversed: ", reverse(str1)
Cet exemple présente quelques-unes des caractéristiques de Nim. L'une des plus exotiques est la variable implicite result
: chaque procédure en Nim qui possède un type de retour a une variable de retour nommée result
qui représente la variable qui sera retournée. Dans la boucle for
, la fonction countDown
est un itérateur.
Métaprogrammation
template genType(name, fieldname: expr, fieldtype: typedesc) =
type
name = object
fieldname: fieldtype
genType(Test, foo, int)
var x = Test(foo: 4566)
echo(x.foo) # 4566
C'est un exemple de métaprogrammation en Nim utilisant les templates. genType
est appelé à la compilation et le type Test
est créé.
Références
- Portail de la programmation informatique