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, la programmation fonctionnelle, procédurale et orientée objet. 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é. ExemplesLes exemples suivants sont valides sur la version 0.10.2 de Nim. echo "Hello World!"
Renverser une chaîneproc 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 Métaprogrammationimport std/strformat
template genType(TypeName, id: expr, fieldName: expr, fieldType: typedesc) =
type
TypeName = object
id: string
fieldName: fieldType
genType(Personne, nom, age, int)
var personne1 = Personne("Jean", age: 45)
echo fmt("{personne1.nom} a {personne1.age} ans.") # "Jean a 45 ans."
var personne2 = Personne("Rose", age: 46)
echo fmt("{personne2.nom} a {personne2.age} ans.") # "Rose a 46 ans."
C'est un exemple de métaprogrammation en Nim utilisant les modèles (templates). Références |