Aujourd'hui, pour créer une page web un peu complexe, il faut maîtriser plusieurs langages qui vont du HTML à JavaScript. Mais un chercheur de l'Institut de Technologie du Massachusetts (MIT) a rassemblé différentes technologies web dans un langage unique qui pourrait permettre de rationaliser le développement, d'accélérer les performances et de mieux sécuriser les sites web. Avec ce langage appelé Ur/web, les développeurs peuvent écrire des pages qui sont comme si c'était des programmes autonomes. Ur/web intègre les technologies web les plus courantes, évitant ainsi au développeur de travailler avec chaque langage séparément. « Je pense que ce langage à un grand potentiel applicatif et qu'il permettra de réduire les coûts de développement web dans de nombreux contextes différents », a déclaré l'auteur de Ur/Web, Adam Chlipala, professeur adjoint en informatique au MIT. « Il apporte au Web les avantages et les solutions bien comprises de certains logiciels d'ingénierie ». Le chercheur du MIT présentera son travail le mois prochain lors du Symposium sur les Principes des Langages de Programmation organisé par la Computing Machinery Association. 



Pour développer un site Web, il est nécessaire de comprendre différents langages, mais aussi la façon dont ils interagissent. Le HTML (Hypertext Markup Language) permet la mise en forme basique de la page web, mais il y a toute une série de technologies additionnelles qu'il faut aussi déployer : par exemple, le CSS (Cascading Style Sheets), qui permet de modifier l'apparence d'une page Web ; le XML (Extensible Markup Language) qui permet de structurer les données pour ajouter des capacités de traitement et de hiérarchisation. Ou encore le JavaScript qui sert de base à la logique métier et aux interactions avec l'utilisateur. Et si les données sont stockées dans une base de données, le développeur devra aussi connaître le langage SQL (Structured Query Language). Ur/web regroupe toutes les fonctionnalités de ces outils de développement web en un seul langage, et il est compilé en code machine exécutable. « Parce que le code Ur/web est compilé, il peut-être beaucoup plus efficace à exécuter que le code de langages couramment utilisés pour leveloppement web », a déclaré Adam Chipala. « Dans Ur/web, tout est basé sur les transactions : toute requête est traitée en continu comme si c'était une fonction unique », a expliqué le chercheur 



Encore difficile à appréhender pour les habitués du langage orienté objet 



« Le langage est optimisé pour exécuter de nombreuses requêtes en parallèle, sur des serveurs réels. Mais le programmeur peut faire croire que les requêtes sont une seule et même transaction et la retranscrire en un modèle de concurrence plus simple ». Les développeurs n'ont donc pas besoin de connaître tous les langages, mais ce n'est pas le seul avantage de Ur/web. L'approche descendante du nouveau langage ajoute des verrous qui pourraient augmenter la sécurité des sites web. En effet, le langage interdit les interactions entre différents éléments d'une page. Par exemple, le code embarqué pour diffuser des publicités en ligne ne peut pas interférer avec celui d'un widget de calendrier installé ailleurs sur la page. En outre, comme les langages de programmation traditionnels de type C et Java - mais contrairement à des langages web comme JavaScript - le langage Ur/web est fortement typé. Cela signifie que toutes les variables et les fonctions doivent être conformes à un type de données prédéfini, ce qui limite la capacité d'un attaquant à envoyer des données malveillantes via une page de formulaire web. Ur/web prend également en charge l'encadrement des variables, c'est-à-dire qu'il est capable de limiter la réponse d'une variable à l'intérieur d'un programme. 



Mais le langage Ur/web a aussi des inconvénients. « La phase d'apprentissage pour le développeur web moyen peut être assez raide », a reconnu Adam Chlipala. Ur/web est un langage de programmation fonctionnel : il traite les programmes comme une série de fonctions. En termes de traitement, il peut être plus efficace, mais il est plus difficile à apprendre pour un programmeur plus habitué aux langages orientés objet ou procéduraux. Adam Chlipala compare Ur/web à Haskell, un langage de programmation fonctionnel, considéré par de nombreux programmeurs comme ésotérique, mais toujours apprécié par une communauté fidèle qui vante son efficacité de traitement. Ces dernières années, plusieurs chercheurs du MIT comme Adam Chipala, ont cherché à repousser les frontières des langages de programmation. Par exemple, un autre chercheur de l'Institut travaille sur un langage appelé Sketch, capable d'ajouter automatiquement des portions de code à un programme en développement. Le MIT travaille aussi sur un programme surnommé Stack, qui doit permettre d'identifier des portions de code habituellement rejetées par les compilateurs, mais qui pourraient néanmoins avoir une utilité.