Objectifs
Présentation de concepts de programmation avancée et de leur mise en oeuvre à travers différents paradigmes.
Programme
Un premier objectif de cet enseignement est de présenter les spécificités des principaux modèles de programmation afin de donner les moyens, étant donné un problème, de choisir l’approche la mieux adaptée. Un second objectif est de permettre d’assimiler plusieurs techniques de programmation modulaire. Les principaux thèmes traités sont les suivants :
- Réutilisabilité du code : règles de lisibilité, factorisation du code, masquage d’implémentation.
- Organisation des données (principalement la gestion de la mémoire, et les aspects de portabilité) et du contrôle (tests, appels de fonction, réécritures).
- Constructions impératives : échappements structurés, sauts (dépilements de contexte, continuations), exceptions, application à la gestion des erreurs.
- Modèles à objets : concepts de base (objets, classes, instanciation, envoi de message, héritage), mécanismes de liaison, implémentations.
- Programmation fonctionnelle : paradigme fonctionnel, lambda-calcul, stratégies d’évaluation, liaisons dynamiques, macros, évaluation retardée, langages à équations et à expressions symboliques.
- Programmation logique : aspect déclaratif (termes, unification, résolution, espaces de recherche), aspect procédural (structures de contrôle, programmation déterministe, cut, négation, contraintes).
Bibliographie
- Méthodologie de la programmation en langage C, J.-P. Braquelaire, [Masson]
- Structure et interprétation des programmes informatiques, H. Abelson et G.J.&J. Sussman, [InterÉditions]
- Programmer avec Scheme, de la pratique à la théorie, J. Chazarin, [International Thomson Publishing]
Annales d’examen