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
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.