Best viewed in 24pt and full-screen
next up previous contents
Next: Autres systèmes Prolog Up: Implémentation Previous: Le rôle de la

Un système ouvert

Un autre point important de notre implémentation de tex2html_wrap_inline56836Prolog est que nous avons voulu en faire un système ouvert vers son environnement de programmation et ouvert vers d'autres langages de programmation. La réponse commune à ces deux objectifs a été d'utiliser le langage C comme machine ciblegif. On hérite ainsi de l'intégration et de l'ouverture de C au prix d'un effort raisonnable. Le compilateur de tex2html_wrap_inline52896 produit donc des fichiers exécutables qui obéissent aux conventions d'appel et de retour du système hôte. Ils n'ont pas besoin d'un environnement spécifique pour être exécutés. Ils acceptent les paramètres que peuvent accepter les programmes C, sont connectés aux mêmes ports d'entrée-sortie standard (Unix) et produisent le même type de comptes rendus d'exécution.

Le schéma d'exécution est fondé sur le modèle des continuations* d'échec (c'est-à-dire la pile de retour-arrière*) et de succès (la résolvante*) [Nicholson et Foo 89] qu'il a fallu adapter à la gestion dynamique du programme et de la signature [Brisset 92, Ridoux 92]. Un des intérêts de ce modèle est de permettre l'implémentation de primitives de contrôle de la recherche et de gestion d'exceptions par capture de continuation [Brisset et Ridoux 93].

Le système est disponible sous le nom de tex2html_wrap_inline52896 [Brisset et al. ] et il est distribué par tex2html_wrap_inline52556 (File Transfert Protocol) sous licence tex2html_wrap_inline55846 (Free Software Foundation). Il comporte un compilateur, un environnement de trace, et des outils de profilage des exécutions. Le système permet la compilation séparée, l'appel de procédure C depuis un programme tex2html_wrap_inline56836Prolog et l'appel de prédicats tex2html_wrap_inline56836Prolog depuis un programme C. Il présente quelques dispositifs communément offerts dans les systèmes Prolog (par exemple, freeze) et d'autres moins communs (par exemple, la capture des continuations*). Nous verrons dans la section «Applications»* -- que ces capacités sont vraiment utilisées. Dans ce système, nous nous sommes particulièrement intéressés aux traits spécifiques de tex2html_wrap_inline56836Prolog et avons adopté des techniques simples et éprouvées pour la partie Prolog. En particulier, l'indexation des clauses y est traitée de manière assez rudimentaire, de sorte qu'un programme bien choisi permettrait de montrer des écarts de temps de calcul arbitraires par rapport à un système Prolog moderne qui implémente une indexation des clauses plus performante. Cependant, la comparaison de programmes «naturels»gif montre un rapport de temps de calcul de 5 à 10 avec ces mêmes systèmes. Cela fait de tex2html_wrap_inline52896 le plus rapide des systèmes tex2html_wrap_inline56836Prolog et même un système Prolog (typé) raisonnable.


next up previous contents
Next: Autres systèmes Prolog Up: Implémentation Previous: Le rôle de la

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