Traduction automatique de code Pharo vers Python

Résumé

Ce stage propose de travailler sur la correspondance et la traduction entre deux langages orienté objets et dynamiquement typés. Le cas d'étude s'effectue sur la recherche d'une correspondance entre Pharo/Smalltalk et Python, et de fournir un traducteur automatique de l'un vers l'autre.

Mots-clés

transpilation, programmation orienté-objet, Pharo, Python, AST, transformation de programmes, transformations de modèles

Équipe

RMoD

Encadrants

Vincent Aranega

Présentation détaillée

Contacter les auteurs du sujet

Si vous êtes intéressés, contactez l'encadrant par mail.

Pré-requis

Pour ce stage, une bonne compréhension des langages de programmation orienté-objet est nécessaire puisqu'il est proposé de trouver une correspondance entre deux langages.

Une compréhension du langage Pharo/Smalltalk est recommandé, mais pas obligatoire, l'apprentissage peut se faire lors du stage.

Une connaissance du langage Python est par contre nécessaire.

Contexte

Les langages de programmation orienté-objets dynamiquement typés sont largement diffusés pour divers usages et à travers divers communautés. Certains langages et leur support (compilateur ou machine virtuelle) viennent directement installé par défaut sur de nombreux systèmes utilisateurs ou serveurs, avec un ensemble d'outils. Afin de bénéficier de certains outils uniquement disponible dans un certains langage, il est donc intéressant de pouvoir déployer l'équivalent d'un programme écrit dans un langage vers une machine virtuelle supportant un autre langage. Dans le cadre du langage Pharo (code Smalltalk), cette capacité serait très intéressante pour pouvoir déployer rapidement du code prototypé en Pharo sur une machine virtuelle Python. Actuellement, l'environnement Pharo est capable de générer du code Python grace au projet Python3Generator et de manipuler des objets Python directement en Pharo par le projet PyBridge. Dans ce stage nous aimerions aller plus loin et -- avec l'aide de ces deux projets -- explorer comment il est possible de traduire du Pharo en Python pour pouvoir faire tourner des application standalone Pharo sur une machine virtuelle Python, ansi que les avantages d'utiliser Python comme langage pivot pour d'autres application (compilation vers un langage de plus bas niveau par exemple).

Problématique

Le besoin d'établir une traduction entre deux langages (transpilation), mêmes si les deux langages supportent le même paradigme orienté-objet dynamique lève plusieurs questions, surtout entre Pharo et Python :

Pharo est un système qui ne manipule pas de fichier de sources pour décrire un programme, mais un système d'image embarquant à la fois la description du langage ainsi que le programme utilisateur à traduire. Cela implique aussi des questions techniques qu'il est nécessaire de résoudre :

Ce travail ouvre aussi de nouvelles possibilités qui sont intéressantes à explorer :

Travail à effectuer

Lors de ce stage, il est demandé de :

Bibliographie