Accueil🇫🇷Chercher

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é.

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

import 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). genType est appelĂ© Ă  la compilation et le type Personne est crĂ©Ă© et dĂ©fini en tant qu'objet contenant deux champs (un champ nom, utilisĂ© comme identifiant de type chaĂ®ne implicite, et un second champ age de type dynamique); ce type d'objet est alors utilisĂ© pour dĂ©clarer une variable nommĂ©e personne1 et y stocker une nouvelle instance de ce type, avant d'en afficher le contenu, et Ă  nouveau pour dĂ©clarer une seconde variable.

Références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.