Amphithéâtre Guillaume Budé, Site Marcelin Berthelot
En libre accès, dans la limite des places disponibles
-

Résumé

La programmation déclarative s'attache à décrire les résultats attendus du programme sans pour autant expliciter l'enchaînement des étapes de calcul élémentaires qui produisent ces résultats, au contraire de la programmation impérative classique. Avons-nous encore besoin de structures de contrôle dans les programmes déclaratifs ? Le troisième cours a tenté de répondre à cette question en prenant l'exemple de trois paradigmes de programmation déclarative : la programmation réactive synchrone (Lustre), la programmation purement fonctionnelle (Haskell, Scheme pur), et la programmation logique (Prolog). Les sémantiques des programmes écrits dans ces langages reposent sur des principes élégants mais qui ne suffisent pas pour garantir la terminaison et le coût (en temps, en espace) des exécutions d'un programme ; d'où l'importance, même dans un langage déclaratif, de donner aux programmeurs les moyens de contrôler la manière dont leurs programmes sont évalués. Nous avons mentionné trois de ces moyens : ajouter des opérations ad hoc comme la coupure en Prolog, spécifier les stratégies d'évaluation utilisées (comme l'appel par valeur en Scheme et l'appel par nécessité en Haskell), ou encoder la stratégie désirée dans le programme lui-même (par exemple en ajoutant des suspensions dans un programme Scheme).