title: Nice (langage)
text: # Nice (langage)
  
  Nice est un langage de programmation orientée objet basé sur la plateforme d'exécution Java (JRE) dont la syntaxe s'inspire fortement de celle de Java et qui offre un support de divers autres concepts de programmation, comme la programmation fonctionnelle.
  
  Ce langage permet d'ajouter des méthodes à des classes dans d'autres sources que celui de la classe (multiméthodes).
  
  Il évite d'avoir à écrire plusieurs versions de méthodes avec des paramètres différents, en offrant des valeurs par défaut et en sélectionnant l'implémentation à utiliser selon la liste de ces arguments.
  
  Le compilateur de Nice est assez sophistiqué et permet de détecter pendant la compilation des erreurs qui apparaissent classiquement lors de l'exécution (valeur de pointeur nulle, transtypage, ...).
  
  Les programmes sources sont compilés en bytecode Java et peuvent donc interagir avec des bibliothèques écrites en Java.
  
  Nice offre un certain support des assertions (Design by Contract) tel que définies par Eiffel, et incorpore d'autres fonctions de programmation comme les fonctions anonymes, etc.
  
  Nice prétend inclure certaines fonctionnalité propres à la Programmation orientée aspect au travers du support des multiméthodes, mais cette approche n'offre en réalité pas le même gain en termes de réduction des dépendances du système que celui offert par la POA, puisque les multiméthodes sont liées statiquement par un appel explicite.
  
  