software.wikisort.org - Langage_de_programmation

Search / Calendar

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.

Nim

Date de première version 2008
Auteur Andreas Rumpf
Dernière version 1.6.8 ()[1]
Influencé par Modula-3 (en)
Object Pascal
Ada
C++
Python
Lisp
Oberon
C#
Écrit en Nim
Systèmes d'exploitation Microsoft 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


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



На других языках


- [fr] Nim (langage)

[ru] Nim

Nim (ранее — Nimrod) — язык программирования со статической типизацией, поддерживающий процедурный, объектно-ориентированный, функциональный и обобщённый стили программирования.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии