Pure

Max Marie
2 min readMay 14, 2017

--

Pure est un langage de programmation fonctionnelle open-source et gratuit. Ce langage a été créé en 2008 et il s’agit du successeur du langage Q, les deux ayant été inventé par Albert Gräf à l’Université Johannes Gutenberg de Mayence en Allemagne. C’est un langage doté de puissantes fonctionnalités, et pourtant il a été construit à partir de rien : sa bibliothèque de modules à été écrite en Pure ! Ce langage est utilisé par exemple dans le domaine de l’intelligence artificielle, du calcul formel ou encore du traitement multimédia temps réel.

Pour présenter ce langage il est nécessaire tout d’abord de définir la programmation fonctionnelle. Celle-ci considère le calcul en tant qu’évaluation de fonctions mathématiques. Elle suit le paradigme déclaratif ne comprenant aucun état interne, contrairement au paradigme impératif qui modifie des états suite à différentes instructions. Le concept de boucle n’existe pas en mathématiques donc on utilise plutôt le principe de récursivité. De plus, il existe dans ce type de programmation des fonctions d’ordre supérieur qui peuvent prendre en arguments d’autres fonctions.

Les langages de programmation fonctionnelle peuvent être purs ou impurs: contrairement au langages impurs, les langages purs interdisent la programmation impérative, qui est celle que l’on connait avec le C et le Java par exemple. Comme son nom l’indique, Pure est un langage pur, ce qui signifie qu’il n’autorise pas l’affectation afin d’éviter ce que l’on appelle des « effets de bords ». Ainsi, une fonction ne peut pas modifier un autre état que sa valeur de retour. Cela implique entre autre que, quel que soit le moment où l’on appelle une fonction, pour des arguments identiques elle renverra toujours le même résultat. Or ces effets de bords peuvent être la source de beaucoup de complications pour le programmeur et de bugs, ainsi évités par ce langage.

Pure est basé sur la réécriture de terme. Cela signifie qu’il transforme des objets en suivant de règles bien précises. Quand on parle de réécriture de terme, ces objets en question sont des expressions construites à partir de constantes et d’opérateurs mathématiques. Il supporte donc le calcul formel, soit des algorithmes opérants sur des objets mathématiques à l’aide de représentations finies et exactes. Voici un exemple de réécriture de terme en Pure, et plus précisément d’un développement et d’une factorisation :

expand = reduce with
(a+b)*c = a*c+b*c;
a*(b+c) = a*b+a*c;
end;

factor = reduce with
a*c+b*c = (a+b)*c;
a*b+a*c = a*(b+c);
end;

expand ((a+b)*2); // yields a*2+b*2
factor (a*2+b*2); // yields (a+b)*2

Ce langage permet également l’utilisation de macros ainsi que de l’arithmétique multiprécision qui est la manipulation de nombres de tailles arbitraires, et compile grâce à LLVM (« Low Level Virtual Machine ») qui est un compilateur conçu pour l’optimisation du code à la compilation. De plus Pure propose de puissants outils pour manipuler les matrices et les vecteurs, similaires à ceux de Matlab.

Il est principalement destiné aux applications mathématiques ainsi qu’aux sciences numériques, mais peut aussi être utilisé dans d’autres domaines grâce à certaines librairies de C qu’il peut intégrer.

--

--