Paradigmes de Programmation 2025-2026

Modalités du cours

Organisation

Pour chaque paradigme:

À la fin du cours, 3h de conclusion et d’ouverture

Évaluation

L’évaluation est découpée en deux parties de valeurs égales :

Supports de cours

Programmation fonctionnelle avec Haskell

Programmation déclarative avec Prolog

Programmation impérative avec Ada

Programmation Orientée Objet avec Crystal

Mode d’emploi (déroulant) pour déboguer les erreurs statiques de type données par crystal

Supposons que crystal sudoku_benchs.cr affiche l’erreur statique suivante:

    Showing last frame. Use --error-trace for full trace.

    In abstract_logic.cr:144:3

     144 | def initialize(grid : Grid)
           ^-------
    Error: can't instantiate abstract class Logic

Contrairement à ce que suggère le message --error-trace n’ajoutera pas d’info ici, car sur crystal seul, ça n’affiche des infos que sur les erreurs d’exécution. Pour avoir plus de contexte sur l’erreur de typage statique, il faut utiliser crystal build sudoku_benchs.cr --error-trace. Là, on obtient:

    In sudoku_benchs.cr:512:7

     512 | Bench.run(Logic, default_timeout) # erreur statique
                 ^--
    Error: instantiating 'Bench.run(Logic.class, Time::Span)'


    In sudoku_benchs.cr:423:31

     423 | logic = -> (g : Grid) { c.new(g) }
                                     ^--
    Error: instantiating 'Logic.new(Grid)'


    In abstract_logic.cr:144:3

     144 | def initialize(grid : Grid)
           ^-------
    Error: can't instantiate abstract class Logic
On a ainsi la suite des appels qui conduisent à cette erreur de typage.
Sortie attendue de sudoku_benchs sur HiddenSingle Tout est résolu, sauf le dernier. Si besoin, augmentez un peu les timeout:
## test of HiddenSingle ##
### SUCCESS
###> 0 undo !
###> in 00:00:00.000568106 seconds
### SUCCESS
###> 12 undos
###> in 00:00:00.001464878 seconds
### SUCCESS
###> 10985 undos
###> in 00:00:00.257073541 seconds
### SUCCESS
###> 0 undo !
###> in 00:00:00.001953073 seconds
### SUCCESS
###> 1291 undos
###> in 00:00:00.168365268 seconds
### SUCCESS
###> 0 undo !
###> in 00:00:00.007798979 seconds
### SUCCESS
###> 0 undo !
###> in 00:00:00.005854863 seconds
### SUCCESS
###> 12381 undos
###> in 00:00:01.519422760 seconds
### SUCCESS
###> 0 undo !
###> in 00:00:00.008071290 seconds
### KILLED by timeout
###> 15861 undos
###> in 00:00:04.000052506 seconds

Programmation par événements avec Tcl/Tk

Enchaînement des séances

Consignes pour les restitutions

Objectif : faire un retour sur ce que vous avez compris et retenez du paradigme
Il ne faut pas faire une présentation du paradigme (que vous avez déjà eu lors du cours d’introduction à ce paradigme).
Voici quelques exemples de points que vous pouvez mettre en avant :

Modalités :

Conseil pour les supports pdf :