Paradigmes et interprétation
L3 6 ECTS 24h cours + 6h TD + 24h TP S6 OPT
Description
Ce cours s’intéresse à la compréhension de différents concepts qui sont à la base de nombreux paradigmes de programmation. Ces concepts sont introduits au fur et à mesure sur des langages de programmation “jouets”, dans lesquels on se focalise sur un aspect essentiel, sans chercher à étudier un vrai langage. Pour bien comprendre en profondeur ces paradigmes, on programme ensuite des interpréteurs pour les langages jouets étudiés en utilisant de vrais langages (Java, Typescript, Racket, Rust, etc).
Compétences développées
Ce cours développe l’abilité à se familiariser rapidement avec de nouveaux langages, à la fois sur le plan théorique, en comprenant les paradigmes de programmation qui les sous-tendent, et en pratique, en travaillant sur des projets à réalisés dans des langages qui n’ont pas forcément été étudiés dans d’autres cours et qu’il faut apprendre “à la volée”.
Modalités de contrôle des connaissances
Le cours est en trois partie, avec trois enseignants différents. Chaque partie donne lieu à une note de contrôle continu spécifiée par l’enseignant (partiel, TP noté, projet, rapport, etc). Chaque
- note de contrôle continu de partie 1: 1/6
- note de partie 2: 1/6
- note de partie 3: 1/6
- note de contrôle terminal : 1/2
Contenu
Partie 1 : paradigmes logiques et impératifs
- Evaluation d’expression arithmétique, notion d’espace de noms
- Paradigmes de gestion mémoire: gestion explicite, ramasse-miette, et discipline d’ownership
- Paradigme logique: introduction à Prolog. Interpréteur Datalog.
- Unification, interpréteur Prolog.
Partie 2 : paradigme fonctionnel
- Introduction à Racket.
- Expressions arithmétiques et fonctions.
- Ordre supérieur
- Récursivité et paresse
Partie 3 : paradigme objet, typage
- Objets et classes.
- Typage
- Sous-typage.
- Typage et classes
Ressources
- La partie 1 peut être complétée par les références suivantes
- Logique pour l’informatique Jaume Mathieu, Journault Matthieu, Lesot Marie-Jeanne, Manoury Pascal, Mounier Isabelle. En particulier chapitres 7 et 8
- Des logiques pour raisonner sur des programmes Xavier Leroy, cours au collège de France
- page officielle du langage Rust
- Tau-prolog
- Les parties 2 et 3 se basent sur le livre Programming languages : Application and Interpretation, également disponible au format pdf, et s’inspire des cours de Shriram Krishnamurthi et de Matthew Flatt, ainsi que de l’ancien cours de Julien Provillard.