Room 206 (2nd floor, badged access)
1 December 2025 - 14h00
Apprendre la programmation orientée objet en Crystal
by Sylvain BOULME from Verimag
invited by Sylvain BOULME
1 December 2025 - 14h00
Apprendre la programmation orientée objet en Crystal
by Sylvain BOULME from Verimag
invited by Sylvain BOULME
Résumé : Au second semestre 2025-2026, un nouveau cours optionnel en Ensimag 1A sur les paradigmes de programmation va proposer 10h de cours/TP pour découvrir le paradigme orienté objet à travers le langage Crystal. Ce séminaire correspond au cours d'introduction de 1h pour présenter Crystal et des aspects sémantiques de la programmation orientée objet.
Crystal est langage OO avec un design très pur et des choix parfois très originaux.
- Tout est objet, y compris entiers, tableaux et types/classes (qui peuvent par exemple avoir des méthodes new pour créer d'autres objets).
- La hiérarchie des types est un vrai demi-treillis, avec un minimum NoReturn, un maximum Object et une union binaire qui est associative, commutative, idempotente, et avec NoReturn comme élément neutre. Les types ont donc une interprétation naturelle comme ensembles d'objets avec le sous-typage comme relation d'inclusion.
- Le langage mélange typage dynamique et typage statique fort.
- Le typage statique est flot de données: le type statique d'une variable peut changer en passant dans certaines branches de if-then-else ou après certaines affectations. Ça évite par exemple d'avoir à caster dynamiquement après un instanceof comme en Java.
- Le typage statique est non-compositionnel: la garantie de typage fort n'est donnée que sur un programme complet. Ça résulte du fait que les profils statiques des méthodes ne sont pas des contrats (vérifiés sur la définition), mais plutôt des sortes de gardes pour le multiple dispatch: autrement dit, des restrictions sur les contextes d'appels.
Le typage statique flot de données permet en fait de compiler le multiple dispatch plus efficacement. Au delà de la POO, Crystal est aussi un support convivial pour introduire l'analyse statique flot de données auprès des étudiants. Enfin, le typage non-compositionnel ayant de gros inconvénients (débogage compliqué, temps de compilation très long, pas de bon serveur LSP), je discuterai de la possibilité de remettre en cause ce choix de conception...