- Présentation de l'organisation du cours, de ses objectifs et de sa méthodologie.
- Introduction au langage Racket qui sert de support aux exemples et aux interpréteurs.
Un paradigme de programmation oriente la manière dont un développeur conçoit un programme. Par exemple, en programmation orientée objet, un programme est vu comme un ensemble d'objets qui interagissent en s'envoyant des messages. En programmation fonctionnelle, un programme sera plutôt défini par l'évaluation d'une fonction sans état. Chaque paradigme va ainsi promouvoir, ou à l'inverse interdire, un certain nombre de techniques.
Ce cours s'intéresse à la compréhension de différents concepts sous-jacents aux paradigmes de programmation. Leur analyse permet d'appréhender les avantages et les inconvénients de chaque style de programmation. Ces concepts sont introduits tout au long du cours au travers d'exemples et de cas d'étude. Chacun d'entre eux est par la suite mis en avant dans un langage minimal pour lequel un interpréteur est réalisé.
Le cours se base 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. Les langages définis dans le cours ont une syntaxe du LISP afin de faciliter l'écriture d'interpréteurs. Ceux-ci sont en effet écrit dans une variante du langage Racket à l'aide du logiciel DrRacket. La maîtrise de ce langage n'est pas un prérequis au cours, la syntaxe et les structures utilisées sont introduites quand cela s'avère nécessaire. Vous pouvez vous référez au livre Premiers cours de programmation avec Scheme pour une introduction à Racket.