Notre implémentation de Prolog a montré que ce langage est utilisable
en vraie grandeur
(par exemple,
13000 lignes pour le compilateur
et les librairies de base).
Cependant,
il reste beaucoup à faire pour l'améliorer.
Premièrement,
nous n'avons exploré que les traits propres à
Prolog,
en nous contentant d'une implémentation simple,
mais raisonnable,
des traits communs avec Prolog.
Beaucoup de travail portant sur les traits Prolog
pourrait être importé en
Prolog,
en faisant toutefois attention que les invariants de
Prolog ne sont
pas ceux de Prolog.
En particulier,
beaucoup de travail a été fait en Prolog sur le thème de l'analyse statique
et globale de programme.
Ces travaux n'ont eu qu'un impact moyen sur les systèmes Prolog courants,
mais il existe un système de programmation logique,
appelé Mercury [Somogyi et al. 96],
qui est très pragmatique et où l'analyse statique et globale des programmes
est centrale.
Les propriétés d'intérêt pour le système Mercury sont
les modes*,
la directionnalité* des prédicats
et leur multiplicité*.
Cela permet entre autre au compilateur Mercury de calculer un ordonnancement
efficace des buts.
Le caractère pragmatique de Mercury vient de ce que ce calcul est rendu efficace
par des restrictions portant sur les programmes.
Dans notre implémentation de Prolog,
nous faisons bien sûr une analyse statique des programmes
(détection de combinateurs, allocation de registre, etc.),
mais elle n'est jamais globale car
elle ne prend jamais en compte les interactions entre prédicats.
Nous pourrions l'étendre à des propriétés globales en adoptant le même esprit
pragmatique de Mercury.
Deuxièmement,
même pour les traits propres à Prolog,
nous n'avons pas été aussi loin que nous l'aurions souhaité.
Par exemple,
il reste beaucoup à faire pour que l'usage de l'implication
soit aussi efficace que possible.
En particulier,
l'utilisation de l'implication pour structurer les programmes
Prolog comme on peut le faire à l'aide du let
en
ne pourra se faire que s'il n'y a pas de coût associé.
On pourrait aussi étudier
des propriétés spécifiques à Prolog comme le fait de savoir si
les arguments d'un prédicat sont passés en forme normale ou non.
Enfin,
quelques aspects ont été traités de manière conservatoire
faute d'une idée claire de ce qu'il fallait faire.
Dans certains cas,
des avancées théoriques sont intervenues pour faire avancer le problème,
et elles ont des conséquences sur l'implémentation.
C'est le cas du typage paramétrique.
L'implémentation de
Prolog à la lumière de l'approche pragmatique de Mercury
nous semble donc une tâche utile et intéressante.