Présentation des Pôles


Le Groupe De Recherche Programmation (GDR 690 du CNRS) est structuré en six thèmes qui sont les suivants :

Preuves et spécifications algébriques

Les spécifications formelles et les preuves sont une des clés de la programmation. En effet, les exigences de sûreté et de qualité demandent des logiciels dont les propriétés auront été prouvées correctes par rapport à leurs spécifications formelles. L'équipe COQ se propose de construire un système intégré de programmes certifiés fondé sur les outils perfectionnés de la théorie des types. Le groupe CQFD vise à faire coopérer des chercheurs issus de communautés différentes sur le thème de la preuve. Le groupe SAGACE s'intéresse plus particulièrement aux spécifications selon trois axes : les fondements théoriques, leur impact sur le cycle de vie, les expériences de spécifications algébriques et de développement de logiciel en vraie grandeur. Le groupe ADER étudie le processus de développement et de transformation de spécification et cherche à mettre en commun la richesse d'expérience des membres du groupe.

Interfaces et Environnements

Les progrès récents de l'informatique dans la dernière décennie ont en particulier bouleversé la façon dont l'utilisateur aborde l'ordinateur. Le thème Interfaces et Environnements regroupe dans le GDR des propositions très variées. ISIS insiste sur l'interactivité et propose d'étudier les modèles (modèles d'architecture logicielle, modèles formels) et de fournir des outils de développement. Centaur+FNC2 étudie les aspects sémantiques des interfaces interactifs en proposant d'intégrer deux outils complémentaires à savoir Centaur (environnement interactif graphique) et FNC2 (analyse statique par attributs sémantiques). MC2 est une équipe constituée de mathématiciens et d'informaticiens (pour la plupart nouveaux venus dans la communauté du GDR) qui propose des interfaces permettant de manipuler des objets mathématiques, notamment par des interfaces graphiques et en échangeant ces objets souvent complexes à travers un réseau. CISé se propose d'aborder les problèmes d'interface à travers le concept de contrainte sous trois angles : la spécification formelle, les mécanisme de bas niveau et les langages de programmation de haut niveau.

Programmation parallèle et distribuée

Le but de l'équipe CSCD est d'aborder la méga-programmation c'est-à-dire d'étudier et d'implanter un nouveau langage pour la programmation d'applications parallèles et distribuées de calcul symbolique. Ce langage étend Lisp en une sorte de glu capable d'orchestrer les calculs de multiples utilisateurs s'exécutant sur de larges réseaux hétérogènes de stations de travail. L'équipe 8 1/2 étudie un modèle de calcul efficace et expressif pour le développement de grandes simulations digitales sur les nouvelles architectures massivement parallèles. Les deux groupes du thème approchent la programmation distribuée par la notion d'acteur et d'objet. Pour OPAL il s'agit d'étudier les acteurs et notamment les vérifications de propriétés formelles (vivacité, interblocage, parallélisation automatique) et les transformations qui préservent ces propriétés. SOPAD vise à travers le concept d'objet à améliorer l'exploitation des architectures parallèles.

Programmation fonctionnelle

L'équipe ML réunit des équipes et des chercheurs qui ont contribué dans le précédent GDR à la conception et la réalisation des langages Caml, Caml Light et LCS, et aux études théoriques liées à leur typage, leur sémantique, leurs modèles d'évaluation et leurs extensions. L'effort porte sur la réalisation d'environnement, la compilation efficace et l'étude d'extensions (objets, parallélisme et surcharge). L'équipe TAF vise aussi à l'efficacité de la traduction des programmes fonctionnels grâce à une technique à base de transformations.
De même qu'un type décrit ce que calcule une expression, un effet décrit comment ce calcul est effectué. Les systèmes combinant types et effets ouvrent une voie nouvelle pour l'analyse statique, dans un cadre unifié, du comportement des programmes écrits dans des langages qui intègrent plusieurs styles différents, impératif ou fonctionnel. Ils permettent également d'effectuer ces analyses en présence de compilation séparée. L'objectif essentiel de l'équipe TEACUP est d'améliorer et d'étendre les analyses à base de systèmes d'effets déjà effectuées, par exemple pour la parallélisation automatique, l'analyse de flot de contrôle, l'optimisation de la gestion-mémoire ou la détection d'erreurs, et d'en suggérer de nouvelles, comme l'évaluation partielle. Un second objectif est de valider, par des expérimentations, la pertinence des optimisations suggérées par ces analyses. L'équipe OLAF étudie comment intégrer les styles de programmation fonctionnel et objet. Dans ce but, il souhaite s'appuyer sur les systèmes de types pour comprendre l'essence des techniques de programmation objet et analyser les langages permettant la définition de fonctions polymorphes et de types abstraits de données (qui peuvent servir à typer les langages à objets).

Programmation par objets

Nés avec les années 70, expérimentés intensément dans les années 80, les langages à objets sont sortis des laboratoires et devraient atteindre leur pleine maturité d'ici la fin de ce siècle. En particulier, ils ont déjà démontré combien ils pouvaient apporter en ce qui concerne l'amélioration de la qualité du logiciel et du processus de production.
Aujourd'hui, la sémantique et les techniques d'implémentation de langages comme Smalltalk, CLOS, Objective-C ou Eiffel sont stabilisées - certains de ces langages sont même en voie de normalisation - et permettent leur mise en oeuvre quasi industrielle. Cependant le succès des langages à objets a contraint les concepteurs à en figer trop tôt certains traits. Certains résultats de recherches n'ont pas (encore) été intégrés dans les langages les plus utilisés industriellement (comme la gestion optimale des méta-classes), certains sujets ont été peu ou incomplètement traités (comme la sémantique de l'héritage multiple, le mécanisme de délégation ou encore les spécifications formelles de programmes à objets), de nouveaux besoins apparaissent nés de nouvelles applications (comme la gestion de points de vues). Malgré leurs utilisations multiples, les langages à objets sont encore en evolution.
Par ailleurs - en l'absence d'un modèle objet universel - les modèles et les langages à objets proposés sont souvent très différents. A tel point, qu'une application développée dans l'un de ces langages est encore très difficilement portable dans un autre langage. Ainsi, il apparaît qu'il est beaucoup plus facile de traduire une grosse application de Pascal en ADA, que de traduire une grosse application de Smalltalk en Eiffel par exemple. L'avenir de la technologie des composants réutilisables, réside dans la définition de bibliothèques de composants logiciels réellement partageables et interchangeables, indépendament du langage avec lequel ils ont été développés. Le vrai succès des langages à objets passera certainement par l'inter-operabilite.

Contraintes et programmation logique

L'objectif de l'équipe DEMOTHEO est la conception, l'étude et la réalisation d'outils permettant d'intégrer dans un même environnement le développement de programmes et les preuves de certaines de leurs propriétés en exploitant la complémentarité entre déduction automatique et logiques pour la programmation : un programme est un ensemble de formules d'un système logique et l'exécution est un processus de déduction efficace.
Le langage lambda-Prolog est un langage de programmation logique typé, avec contraintes intégrant un calcul fonctionnel, l'équipe qui porte ce nom dans le nouveau GDR vise à étendre ce langage pour essayer de pallier les difficultés qu'un langage aussi général peut impliquer. Le thème de l'analyse statique des programmes est un thème riche et relativement nouveau et très dynamique en France, le groupe GASP vise à canaliser cette force. Le groupe SCALP souhaite éclaircir les concepts lié à la programmation logique par règles tant du point de vue de la sémantique, de la syntaxe, des types de logiques sous-jacentes et des primitives de raisonnement que des applications concrètes pour la construction de traducteurs et d'outils d'aide à la conception et à la correction des programmes.
Cette page est extraite du serveur du GDR Programmation, où vous trouverez une présentation plus détaillée.