Outils pour utilisateurs

Outils du site


formations:masters:ue:m2:transfo10

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
formations:masters:ue:m2:transfo10 [2023/04/21 09:17] – supprimée - modification externe (Unknown date) 127.0.0.1formations:masters:ue:m2:transfo10 [2025/01/29 10:46] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. admin
Ligne 1: Ligne 1:
 +~~NOTOC~~
 +
 +====== Transformation de Programmes ======
 +
 +===== Description =====
 +
 +Ce module s'intéresse à diverses phases de remaniement automatique
 +de code qui ont typiquement lieu au coeur d'un compilateur.
 +Ce cours s'est d'ailleurs intitulé "compilation avancée" pendant
 +quelques années. On ne se concentre pas ici sur l'étape amont d'un compilateur
 +(le "parsing") ni sur l'étape finale (la production d'assembleur) mais
 +plutôt sur les étapes intermédiaires ayant lieu sur l'AST (Abstract Syntax Tree,
 +alias Arbre de Syntaxe). 
 + 
 +
 +===== Syllabus =====
 +==== Sujets centraux ====
 +
 +  - Représentations intermédiaires, manipulations d'AST
 +  - Machine à pile, JVM (Java Virtual Machine), Bytecode
 +  - Récursivité terminale
 +  - Notion de continuations, style par continuation (CPS, Continuation-Passing-Style)
 +  - Forme normale "administrative" (ANF)
 +
 +==== Sujets potentiellement traités ====
 +
 +  - Notion de trampoline
 +  - call-cc (call-with-current-continuation) et les opérateurs de contrôle
 +
 +===== Pré-requis =====
 +
 +  - Avoir suivi au préalable un premier cours de compilation est fortement recommandé (par exemple [[..:m1:com7|celui de M1 ici-même]])
 +  - Avoir déjà une bonne pratique de la programmation fonctionnelle (voir par exemple [[..:..:..:licence:2024-2025:ue:l3:pf5|Programmation Fonctionnelle]] en L3 ou [[..:m1:pfa8|Programmation Fonctionnelle Avancée]] en M1).