Brevet FR2578990A1 — publié le 19860919

METHODE DE TRAITEMENT DES CALCULS La prése,-e invention concerne un procédé d'exécu- tion de calculs, et en particulier, un procédé d'exécution de calculs dans lequel une exécution de calculs associée à un effet secondaire d'un programme est retardée aussi longtemps que possible de façon qu'une telle exécution soit facile à annuler. Dans le procédé classique d'exécution de calculs uti- lisant un langage de programmation logique, par exemple Prolog, il a été prévu une fonction de retour en arrière comme décrit dans le texte "Programming in Prolog" de Wo F. Clocksin et C.S. Mellish, en particulier dans le para- graphe 6.4, à savoir quand l'exécution de toutes les clau- ses d'un sous-objectif rencontré sur la voie d'un objectif final s'est révélée défectueuse, le processus est ramené en arrière pour exécuter des clauses qui n'ont pas été exécutées pour le sous-programme précédent. Cependant, on n'a pas encore considéré jusqu'à quel point au moment ou un retour en arrière se produit après l'exécution d'un traitement d'entrée/sortie ou une manipulation de base de données, un effet secondaire résultant de l'exécution, tel qu'une action de modification d'une fonction de programme, par exemple, par suite d'une opération d'écriture effectuée dans une mémoire globale devait être éliminé. C'est donc un objet de la présente invention de pro- poser un procédé d'exécution de calculs ayant une fonction pour retarder une exécution réelle de prédicat incorporé accompagné d'un effet secondaire jusqu'à un moment o un retour en arrière ne peut plus se produire, en minimisant ainsi la détérioration d'une fonction d'inférence utilisant un retour en arrière spécifi- quement caractéristique du langage de programma- tion logique (machine) tel que Prolog, provoqué par l'utilisation du prédicat incorporé accompagné d'un - 2 - effet secondaire non restaurable & l'apparition du retour en arrière. Dans ce but, la présente invention propose un procédé de calcul dans une machine orientée vers le langage comprenant une unité incorporée de prédicats et une unité de traitement des informations comprenant les pas de prévision d'une file d'attente d'exécution différée; mettant en file d'attente une formule atomique spécifiquedans la file d'attente d'exécution différée; sortant de file d'attente et exécutant la formule atomique mise en file d'attente; et annulant l'opération de mise en file d'attente lorsque le retour en arrière intervient. La présente invention est détaillée dans la description détaillée qui va suivre considérée en liaison avec le dessin annexé dans]equel: la figure 1 est un schéma illustrant un exemple de programme Prolog de l'art antérieur; la figure 2 est un schéma d'une configuration de système illustrant un mode de réalisation d'une machine Prolog de l'art antérieur; la figure 3 est un schéma illustrant le format général d'un ensemble de clauses ayant le même nom de clause dans leur partie entête à l'intérieur d'un programme Prolog; la figure 4 est un schéma illustrant un organigramme de traitement dans lequel une formule atomique d'une clause du Prolog est calculée selon le procédé de l'art antérieur tel qu'il est représenté sur la figure 2; la figure 5 est un schéma illustrant un exemple de programme Prolog utilisant une fonction de la présente invention; et la figure 6 est un schéma de configuration de système illustrant un mode de réalisation de la présente invention. - 3 - On va maintenant décrire des modes de réalisation de la présente invention en se référant au dessin annexé. La figure 1 est un schezma représentant un exemple simple de programe PLrolog eans lequel leS règles de syntaxes sent oonf au Prolog DEC10o Dans ce programme, un mot "envoyer" est supposr être un prédicat accompagné d'un effet secondaire, qui est un objet & traiter selon la présente invention. D'une façon générale, un prédicat accompagné d'un effet secondaire peut être connu d'avance, par suite de la nécessité de stocker la variable d'état correspondante dans une mémoire globale pendant une longue période de temps, par exemple. La figure 2 est un schéma illustrant un exemple de système de traitementselon l'art antérieur pour le traitement d'un programme Prolog. Unterminal entrée/sortie 1 est adapté pour une opération d'entrée par l'opérateur et pour la visualisation de données délivrées par le système et est commandée par une unité de traitement en entrée /sortie 2. L'exécution du programme est en fait effectuée par une unité de calcul 3, qui échange des informations avec une unité de programme 4 contrôlant des programmes rédigés par l'utilisateur et avec une unité de prédicats incorporée 5 commandant des programmes prépares du côté système. La figure 3 est un schéma illustrant un format général d'un ensemble de clauses ayant chacune le même nom de prédicat, p dans cet exemple, du côté gauche de " -", plus précisément, dans la partie entête de chaque clause à l'intérieur d'un programme Prolog. La figure 4 est un organigramme d'un traitement dans le cas o un seul élément, par exemple qkl sélectionné parmi la liste des formules atomiques placées du côté droit de ":-" de chaque clause représentée sur la figure 3 est exécuté par le système -4- de traitement de la figure 2. La portion traitement sera désignée ci-dessous par SG. La portion SG comprend deux types d'entrées à savoir, une formule atomique à soumettre à un calcul et des informations indiquant laquelle parmi lejeu des clauses ayant le même prédicat dans sa partie entête est le premier article à exécuter (figure 3). Cette dernière correspond à k sur la figure 4 et une valeur modifiée pendant un traitement est renvoyée & la place de k à la fin du traitement. Cette portion SG est exécutée de façon récurrente dans le bloc 21 de la figure 4. En se référant maintenant à la figure 4, on va décrire un organigramme de traitement dans un cas o le programme de la figure 1 est exécuté en employant le système de traitement d'exécution de la figure 2. Supposons ici ?-p(b) en entrée. L'unité de calcul 3 placee a SG commence alors l'exécution de la portion SG/(p(b), 0). La première ligne de la figure i est effectuée avec k=l. Il en résulte d'abord X=b, puis le premier article q(Y) du côté droit de la première ligne est exécuté, ce qui conduit au résultat Y=a. Ensuite, le second article r(Y) de la même ligne est traité pour atteindre le résultat de Z=a; puis, envoyer (a, c) accompagné d'un effet latéral est exécuté. Quand une tentative est faite pour exécuter S (X, Y), l'exécution de S(b, a) échoue, ce qui provoque donc un retouren arrière. Dans le bloc 23, la valeur de L est décrémentée d'une unité. Le traitement de retour au pas 21 est répété jusqu'& ce que la valeur de 1 passe de 3 & 1. Quand une tentative est faite pour exécuter à nouveau q(Y) dans cet état, la ligne 3 de la figure 1 est exécutée par suite de t(1) =l ce qui conduit à Y=b. Ensuite, r(Y) est exécuté à nouveau, envoyer (b, c) est effectué et l'exécution de S(X, Y) est réussie, ce gui termine le traitement. Dans cet exemple, il existe un problème tel qu'à l'apparition du retour en arrière, l'effet secondaire dû au fait d'envoyer (a, c) déj& exécuté n'a pas été annuleo La figure 5 est un schéma dun prograimse mis en oeuvre en perfectionnant le programme de la figure 1, dans lequel son; incorporés des prédicats intégrés, une mise en file d'attente et un retrait de fle d'attente, selon la présente invention, en supprimant ainsi le problème exposé ci-desus.S La figure 6 est un schéma de configuration illustrant un mode de réalisation de la présente invention dans lequel une file d'ex&cution différée 6 est ajoutée au système classique de la figure 2. Le procédé d'utilisation de la file dexécution diffrée 6 va maintenant est décrit ci-dessous comme traitement supplémentaire de l 'organigramme de traitement de la tech- nique selon l'art antérieur représenté sur la figure 4. (1) Immédiatement avant l'exécution du bloc 20, le nom de prédicat d'une formule atomique qk, à exécuter en suivant est vérifié pour déterminer s'il est ou non mis en file d'attente. Si tel est le cas, l'argument est mis en file d'attente dans la file d'attente d'exécution différée 6. (2) Immédiatement après l'exécution du bloc 20, le est vérifié pour déterminer s'il est ou non sorti de file d'attente. Si tel est le cas (sortie de file d'attente), les formules atomiques placées dans la file d'attente d'exécution différée 6 sont sorties de la file d'attente et exécutées dans l'ordre de leur mise en file d'attente. (3) Quand un traitement de retour en arrière est lancé dans le bloc 23, la formule atomique mise en file d'attente dans la file d'attente d'exécution différée 6 par la mise en file d'attente sujette à annulation d'exécution est retirée. En conséquence, si le programme de la figure 5 est 257899C - 6 - exécuté dans la configuration du système de la figure 6, l'instruction envoyée (a, c) n'est pas effectuée immédiatement à la première exécution de r(Y). Par contre, l'instruction envoyée (a, c) est d'abord enregistrée dans la file d'attente d'exécution différée 6 et puis retirée par le' traitement de retour en arrière provoqué par un défaut d'exécution de s(X, Y). A la seconde exécution de r(Y), l'opération envoyée (b, c) est mise en file d'attente; et lorsque la sortie de lo file d'attente est exécutée, l'opération envoyée (b, c) est sortie de la file d'attente d'exécution différée 6 et effectuée. La méthode d'exécution des calculs décrite ci-dessus peut conduire au même effet que l'annulation qui doit être effectuée après une exécution d'un prédicat accompagné d'un effet secondaire. Les termes "mise en file d'attente" et "sortie de file d'attente" tels qu'ils viennent d'être décrits peuvent être effectivement utilisés comme des macro-instructions superviseurs du système d'exploitation traitant de tels prédicats. Selon la présente invention, le traitement des calculs des portions d'un programme accompagné d'un effet secondaire peut être différé par mise en file d'attente des portions du programme dans la file d'attente d'exécution différée, et par conséquent, l'annulation du traitement d'annulation d'un effet secondaire n'est plus nécessaire quand un retour en arrière est exécuté dans une programmation logique en langage machine, ce qui facilite l'utilisation de la fonction d'inférence avec des opérations de retour en arrière caractérisant la programmation logique en langage machine; de plus, les traitements qui ne sont pas nécessaires sont éliminés, d'o une augmentation du rendement du traitement. - 7 - De plus, la présente invention propose un système qui résout simultanément deux problèmes contradictoires tels que l'effet secondaire et le retour en arrière qui sont susceptibles de se produire dans un système réalisé en combinant le langage de programmation logique de l'art antérieur avec un langage orienté objet, ce qui conduit & une nouvelle architecture d'ordinateur. REVENDICATIONS 1. Procédé d'exécution de calculs d'une machine orientée vers le langage comprenant une unité incorporée de prédicats et une unité de traitement des informations ainsi qu'une file d'attente d'exécution différée, comprenant les pas suivants: mise en file d'attente d'une formule atomique particulière dans une file d'attente d'exécution différée; sortie de file d'attente et exécution de la formule atomique mise en file d'attente dans ladite file d'attente d'exécution différée; et annulation de l'opération mise en file d'attente. 2. Procédé d'exécution de calculs selon la revendication 1, dans laquelle ladite formule atomique particulière est un prédicat accompagné d'un effet secondaire qui ne peut pas facilement être ramené à son état initial lorsqu'un retour en arrière se produit. 3. Procédé d'exécution de calculs selon la revendication 2, comprenant en outre un pas de retardement de l'exécution de la formule atomique particulière jusqu'à un moment o le retour en arrière ne peut plus se produire. 4. Procédé d'exécution de calculs selon la revendication 3, dans laquelle ledit moment comprend le moment o un objectif donné est atteint et o une commande de sortie de file d'attente est explicitement indiquée dans un programme. 5. Système d'exécution de calculs dans une machine orientée vers le langage en utilisant un langage de programmation logique et un langage orienté vers les objets, comprenant une unité (2) de traitement des entrées/sorties, une unité (5) incorporée de prédicats pour la gestion ou un programme system, une unité (4) de programme pour gérer un programme utilisateur, 257899 C -9- une unité (3) de traitement des informations óouplée avec lesdites unités pour exécuter un programme, comprenant: des moyens de file d'attente d'exéoution différée (6) couplés avec ladite unité de traitement des informations pour assurer une exécution retardée à un prédicat donne ayant un effet secondaire qui est difficile à ramener & son état initial lorsquIun retour en arrière est exécuté ou déclench; des moyens de mise en file d'attente pour déterminer si le nom d'un prédicat exécuté est mis en file d'attente et mettre en file d'attente sa formule atomique d'argument dans lesdits moyens (6) de file d'attente d'exécution différée 1orsquîil s'agit de mise en file d'attente, avant l'exécution dudit prédicat p des moyens de sortie de file d'attente pour déterminer si le nom dudit prédicat est sorti de file d'attente et sortir de la file d'attente et ex4cuter les formules atomiques mises en file d'attente dans lesdits moyens de file d'attente d'exécution différée quand il s'agit de sortie de file d'attente dans l'ordre de leur mise en file d'attente avant l'exécution dudit prédicat; et des moyens d'annulation de miSe en file d'attente pour supprimer une formule atomique mise en file d'attente dans lesdits moyens de file d'attente d'exécution différée par une mise en file d'attente soumise à annulation d'exécution au début d'un traitement de retour en arrière.