Jobs/M2 2018 DV RTE

From LRDE

Revision as of 10:41, 26 September 2019 by Didier Verna (talk | contribs)
Typage de Séquences Hétérogènes dans les Langages Dynamiques
Reference id

M2 2018 DV RTE

Dates

5 - 6 months in 2018

Research field

Dynamic Languages

Related project

Climb

Advisor

Didier Verna

General presentation of the field

Les langages de programmation généraux fournissent tous un certain nombre de types natifs tels les entiers, flottants, chaînes de caractères etc., des agrégats niveau utilisateur comme les structures ou les classes des languages oritentés-objet, et finalement des types de séquences tels les listes, vecteurs ou tableaux multi-dimensionnels.

Dans un langage dynamiquement typé, il est possible de manipuler des séquences hétérogènes, c'est-à-dire dont les éléments sont potentiellement de types différents. Par exemple, la liste (1.5 "foobar" t) est une séquence hétérogène contenant un entier, une chaîne de caractères et un symbole. Partant de là, la question du typage de ces séquences se pose: si une séquence suit un motif particulier de type pour ses éléments, comment exprimer le type de toutes les séquences suivant ce même motif ?

Une réponse possible à cette question consiste à utiliser un formalisme proche des expressions rationnelles, que nous appelons « expressions rationnelles de types ». Par exemple, le type (int . string+ . symbol) pourrait représenter l'ensemble de toutes les séquences commençant par un entier, contenant ensuite une ou plusieurs chaînes de caractères, et terminées par un symbole.

Un tel système a été implémenté pour le langage Common Lisp. Ce système contient un moteur (une machine à états) permettant de détermniner si une séquence est conforme à un type hétérogène, et s'intègre dans le mécanisme de typage du langage afin d'en produire une extension déclarative.

Prerequisites

Le candidat devra au minimum être familier avec les notions d'expression rationnelle et d'automate, et devra également avoir une petite expérience de programmation dans un ou plusieurs langages dynamiques tel que JavaScript, Python, Ruby, Lisp etc.

Objectives

L'objectif de ce stage est d'évaluer l'applicabilité de la notion d'expression rationnelle de type à d'autres langages dynamiques que Lisp. Ce travail comporte deux angles distincts. D'une part, l'implémentation d'un moteur similaire à celui déjà écrit pour Lisp, et qui ne repose que sur de l'introspection dynamique de type. Ceci ne doit pas poser de problème. D'autre part, et c'est la partie la plus expérimentale, l'étude de l'insertion de ce moteur dans le système de typage existant pour le ou les langages choisis. Cette dernière partie dépendra des capacités constatés dans les langages en question, et nous permettra de déterminer à quel point leurs systèmes de typage sont extensibles.

Ce travail donnera certainement lieu à de la publication académique.

Benefit for the candidate

Les intérêts pour le stagiaire sont:

- découvrir Lisp, le cas échéant,

- travailler sur un ou plusieurs langages dynamiques,

- étudier l'expressivité de leurs systèmes de typage.

References

https://www.lrde.epita.fr/wiki/Publications/newton.16.els https://www.lrde.epita.fr/wiki/Publications/newton.17.els https://www.lrde.epita.fr/wiki/Publications/newton.18.meta

Place LRDE: How to get to us
Compensation

1000€ gross/month

Future work opportunities

Continuation en thèse envisageable.

Contact

<didier at lrde . epita . fr> <didier at lrde . epita . fr>