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é.
Les exemples suivants sont valides sur la version 0.10.2 de Nim.
echo "Hello World!"
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.
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.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
Students learn several implementation techniques for modern functional and object-oriented programming languages. They put some of them into practice by developing key parts of a compiler and run time
The course introduces digital design and fabrication methods by combining the transfer of technical skills with theoretical knowledge and critical reflection. Topics include: scripting/programming for
Couvre la conception, la mise en œuvre et la vérification formelle des systèmes distribués, en se concentrant sur les systèmes et organisations distribués vérifiables.
Couvre l'héritage, le polymorphisme et le casting dans la programmation orientée objet, en mettant l'accent sur la factorisation du code et la manipulation générique d'objets.
A compiled language is a programming language whose implementations are typically compilers (translators that generate machine code from source code), and not interpreters (step-by-step executors of source code, where no pre-runtime translation takes place). The term is somewhat vague. In principle, any language can be implemented with a compiler or with an interpreter. A combination of both solutions is also common: a compiler can translate the source code into some intermediate form (often called p-code or bytecode), which is then passed to an interpreter which executes it.
CoffeeScript est un langage de programmation, qui se compile en JavaScript. Le langage ajoute du sucre syntaxique inspiré par Python, Ruby et Haskell afin d'améliorer la brièveté et la lisibilité du JavaScript, tout en ajoutant des fonctionnalités comme le filtrage par motif ou les listes en compréhension. Le résultat est compilé de façon prévisible en JavaScript, et les programmes peuvent être écrits avec moins de code (typiquement un tiers de lignes en moins) sans effet sur la vitesse d'exécution.
Julia est un langage de programmation de haut niveau, performant et dynamique pour le calcul scientifique, avec une syntaxe familière aux utilisateurs d'autres environnements de développement similaires (Matlab, R, Scilab, Python, etc.). Il fournit un compilateur sophistiqué, un système de types dynamiques avec polymorphisme paramétré, une exécution parallèle distribuée, des appels directs de fonctions C, Fortran et Python.
In this paper, the influence of tip clearance on the performance of small-scale turbopumps is studied numerically on extensive parameter ranges suitable for organic Rankine cycle applications. A novel and fully parameterized design model is developed and u ...
Technical University of Munich2021
,
Declarative variables of self-description have a long-standing tradition in matchmaking media. With the advent of online dating platforms and their brand positioning, the volume and semantics of variables vary greatly across apps. However, a variable lands ...
2021
A metaprogrammer should be able to reason about the semantics of the generated code.Multi-stage programming introduced an elegant and powerful solution to this problem.It follows a semantically driven approach to code generation, where semantics are fully ...