Projet ANR-06-JCJC-0122 – PFW : Programmation fonctionnelle pour le Web
Programme : Programme "Jeunes chercheuses et jeunes chercheurs" (JCJC) 2006
Année de financement : 2006
Coordinateur du projet : CNRS DELEGATION REGIONALE PARIS B (CNRS DELEGATION REGIONALE PARIS B)
Partenaires : Centre national de la recherche scientifique; Centre national de la recherche scientifique
Montant : 153600.0 euros
Date de début : 2006
Durée : 48 mois
Résumé : Les sites Web étaient il y a quelques années composés essentiellement de pages statiques, mais de plus en plus, ces pages sont générées automatiquement par le serveur en fonction des requêtes du client et du contenu de bases de données. Récemment est apparue une troisième génération de sites, proposant une interactivité encore plus grande en utilisant des modifications dynamiques calculées côté client (Javascript, AJAX). Les langages traditionnellement utilisés pour programmer un site Web, par exemple PHP, Zope ou JSP, ne sont pas vraiment adaptés à ces nouvelles exigences des développeurs Web. Même lorsque le comportement dynamique est limité au côté serveur, des sites complexes deviennent vite très difficiles à développer et maintenir dans ces langages. Nous pensons que les concepts issus de la recherche théorique sur les langages de programmation peuvent permettre de résoudre ces problèmes. Nous nous sommes fixé comme objectif de définir une façon radicalement nouvelle de programmer des sites Web hautement interactifs proposant une plus grande souplesse et simplicité pour le programmeur, ainsi qu'une plus grande fiabilité. Notre première idée consiste à se départir du modèle de programmation traditionnel des sites page après page pour considérer au contraire un site dans sa globalité et rapprocher sa conception de celle d'une application traditionnelle. Il faut cependant prendre en compte des spécificités telles que la possibilité de revenir en arrière dans l'exécution du programme (bouton « back » des navigateurs) ou d'avoir plusieurs fils d'exécution simultanés (duplication d'une fenêtre). Ce sont des problèmes difficiles, souvent mal résolus dans les sites actuels. Le concept de « continuation » utilisé en programmation fonctionnelle permet de résoudre ce problème de manière très élégante et puissante. Le typage nous permettra en outre d'avoir un contrôle précis des liens et formulaires garantissant l'absence de liens morts et l'adéquation entre un formulaire et la page cible. Enfin ce style de programmation nous permettra d'avoir une gestion totalement transparente des sessions, sans que le programmeur n'ait à se préoccuper du passage et de la récupération des paramètres de session à chaque page. Le typage nous permettra également de résoudre un point important qui fait défaut dans les outils actuels : la génération de pages conformes aux standards. Le Web repose sur des standards édictés par le W3C, qui garantissent l'interopérabilité et l'accès universel aux informations. Aujourd'hui il est impossible de garantir la validité d'une page générée dynamiquement puisque les outils de validation ne peuvent prendre en compte que des pages statiques. Nous proposons de nous appuyer sur des travaux théoriques sur le typage de documents XML, qui nous permettrons de garantir la validité des pages grâce à une analyse statique du programme. Enfin, dans l'esprit de pouvoir programmer un site comme une application unique, il nous faudra proposer une solution permettant d'exécuter des portions de code du côté du client. Nous proposons de développer des techniques de compilation vers Javascript qui permettront de programmer le site entier sans sortir de notre langage. Des techniques inspirées des langages à plusieurs niveaux pourront être utilisées pour spécifier les parties de code devant être exécutées sur le client. Un intérêt majeur de cette approche est de permettre un contrôle statique du code client qui permettra de s'assurer qu'il interagit correctement avec le serveur. Afin de gérer au mieux les aspects concurrents, tout particulièrement au niveau du client (interactions avec l'utilisateur et communication asynchrone avec le serveur), nous pensons fournir des primitives avancées de concurrence et des mécanismes de communications de haut-niveau et dont la sûreté est garantie par typage. Ce projet prendra appui sur des travaux antérieurs des membres de l'équipe : XDuce, un langage de manipulation de données arborescentes XML, Oc