Projet de recherche doctoral numero :4411

Description

Date depot: 1 janvier 1900
Titre: Paradigmes pour réconcilier généricité et performance
Directeur de thèse: Thierry GERAUD (LRE)
Directeur de thèse: Didier VERNA (LRE)
Domaine scientifique: Sciences et technologies de l'information et de la communication
Thématique CNRS : Non defini

Resumé: Le but d'une approche logicielle générique est de fournir un très haut niveau d'abstraction, par exemple, en séparant la forme générale d'un algorithme des détails spécifiques de ses implémentations potentielles. L'approche orientée objet traditionnelle pose vite deux inconvénients principaux : l'encombrement du code (prolifération des classes et des méthodes), et une dégradation des performances (dispatch dynamique). Il existe aujourd'hui un certain nombre de paradigmes alternatifs à l'approche orientée objet classique permettant d'offrir un haut niveau de généricité sans pour autant sacrifier les performances ou la maintenabilité du code. Certains, comme la méta-programmation, sont bien connus, d'autres, comme la programmation orientée contexte sont plus récent et moins maîtrisés. Dans ce cadre, le but de cette thèse est double : 1. offrir une analyse comparative des paradigmes de programmation touchant de près ou de loin aux problématiques de généricité et/ou de performance, afin d'avoir une vision plus claire de leurs avantages et inconvénients respectifs, 2. envisager un système mélangeant les paradigmes jugés les plus appropriés, afin d'étudier les modalités de leurs interactions. Afin de garantir la validité du travail sur le plan applicatif, la thèse prendra appui sur une application logicielle concrète et non-jouet : une bibliothèque de traitement d'image écrite en Common Lisp (Ansi, 1994). Le choix de Common Lisp est motivé principalement par le fait qu'aujourd'hui encore, il s'agit probablement du langage le plus « multi-paradigme » existant. Sur le plan de la généricité (haut niveau), Common Lisp offre différentes formes de typage, de scoping et d'évaluation. Il dispose d'une couche orientée objet plus expressive que les approches classiques de type C++/Java (Verna, 2008, 2010, 2012). Le caractère dynamique de la couche objet rend par ailleurs disponible certains paradigmes très récents et mal connus tels la programmation orientée contexte (Costanza and Hirschfeld, 2005) ou le dispatch par filtre / prédicats (Costanza et al., 2008; Ucko, 2001) D'autre part, c'est un langage réflexif (offrant à la fois introspection et intercession) et dont la réflexivité est aussi bien structurelle au niveau applicatif, que comportementale au niveau langage (Maes, 1987; Smith, 1984) : Le MOP, « protocole méta-objet » (Paepcke, 1993; Kiczales et al., 1991), et les reader-macros sont autant d'outils permettant au programmeur de modifier jusqu'à la syntaxe et la sémantique du langage lui-même, le rendant particulièrement bien adapté à la conception générique de DSLs (Domain Specific Languages, Verna (2012)). Le système de macros de Lisp reste aujourd'hui encore le système de méta-programmation le plus expressif qui soit (Graham, 1993; Hoyte, 2008). Tout ceci est rendu possible par l'homoïconicité du langage (McIlroy, 1960; Kay, 1969), une propriété quasi inexistence dans les langages plus récents, mais qui rend la manipulation d'expressions d'ordre supérieur simple, directe et immédiate. Sur le plan des performances (bas niveau), Common Lisp dispose de compilateurs (classiques ou « Just in Time ») natifs performants, offre également un typage statique optionnel plutôt que d'imposer le tout-dynamique, fourni des alternatives destructives (update-in-place) à toutes les opération fonctionnelles pures etc. Tous ces points (et la liste continue) ont un impact direct et immédiat sur les performances (Verna, 2006, 2009). Au final, Common Lisp est l'un des rares langage de programmation à être à la fois haut et bas niveau. C'est ce qui le rend idéal pour une recherche fondamentale visant à réconcilier performances et généricité / expressivité.

Doctorant.e: Newton Jim