Spelling suggestions: "subject:"transformation fonctionnelspostopératoires"" "subject:"transformation fonctionnellequadratique""
1 |
Dérivation de programmes impératifs à partir de spécifications algébriquesGuerte, Yves 28 October 1996 (has links) (PDF)
Ce document présente une méthode de dérivation automatique des spécifications algébriques vers un langage impératif. Par langage impératif nous désignons un langage de programmation ``traditionnel'' avec déclarations des variables (état) et dont les programmes sont des suites d'instructions qui modifient l'état. L'instruction caractéristique est l'affectation destructrice d'une valeur à une variable. Une spécification algébrique est composée de sortes, de constructeurs qui définissent l'ensemble des valeurs atteignables (que l'on peut dénoter), et d'opérateurs axiomatisés par des équations conditionnelles orientées. Nous définissons un lien d'implémentation entre les objets du domaine abstrait des spécifications algébriques et ceux du domaine concret des programmes impératifs. Ce lien permet de paramétrer la dérivation d'une spécification. L'implémentation des opérateurs respecte le choix de la forme de dérivation et celui de la bibliothèque importée. Elle résout les conflits d'accès aux variables et minimise les coûts en recopies de valeurs engendrées par le passage du fonctionnel à l'impératif. De manière analogue au lien d'implémentation entre une spécification algébrique et un programme impératif, nous définissons un lien d'implémentation dite abstraite entre les sortes et constructeurs de deux spécifications algébriques. Nous proposons pour les constructeurs, soit d'effectuer une dérivation systématique en un type de donnée impératif, soit de calculer les liens d'implémentation abstraite potentiels vers les sortes dont les implémentations des constructeurs sont réutilisables. Une méthode de transformation de la spécification algébrique est enfin proposée, qui favorise les modifications ``en-place'' de données, dans une variante de la méthode de dérivation précédente.
|
Page generated in 0.1774 seconds