Best viewed in 24pt and full-screen
next up previous contents
Next: Transformations de grammaires et Up: Prospective Previous: Prospective

Implémentation

Notre implémentation de tex2html_wrap_inline56836Prolog a montré que ce langage est utilisable en vraie grandeur (par exemple, 13000 lignes pour le compilateur tex2html_wrap_inline52896 et les librairies de base). Cependant, il reste beaucoup à faire pour l'améliorer. Premièrement, nous n'avons exploré que les traits propres à tex2html_wrap_inline56836Prolog, 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 tex2html_wrap_inline56836Prolog, en faisant toutefois attention que les invariants de tex2html_wrap_inline56836Prolog 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 tex2html_wrap_inline56836Prolog, 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 à tex2html_wrap_inline56836Prolog, 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 tex2html_wrap_inline56836Prolog comme on peut le faire à l'aide du let en tex2html_wrap_inline54612 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 à tex2html_wrap_inline56836Prolog 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 tex2html_wrap_inline53106Prolog à la lumière de l'approche pragmatique de Mercury nous semble donc une tâche utile et intéressante.


next up previous contents
Next: Transformations de grammaires et Up: Prospective Previous: Prospective

Olivier Ridoux
Mon Apr 27 11:10:23 MET DST 1998