đ” Tout dĂ©veloppeur connaĂźt les principes SOLID. Peu connaissent lâauteur du troisiĂšme : le Principe de Substitution de Barbara Liskov. Cette grande dame inventa le premier langage de programmation supportant lâabstraction. Autant dire quâelle a pavĂ© la voie aux langages de haut-niveau modernes.
đŠ Son article de 1974 « Programming with abstract data types » est devenu un classique. Elle y dĂ©taille un paradigme de programmation, hĂ©ritier de la programmation structurĂ©e de Dijkstra, dans lequel le dĂ©veloppeur nâutilise pas directement les types fournis par le systĂšme. Ceux-ci sont encapsulĂ©s dans des types de plus haut-niveau, ne laissant filtrer que les dĂ©tails pertinents du niveau prĂ©cĂ©dent.
đ° Ces types sont dĂ©finis par les opĂ©rations que lâon peut rĂ©aliser sur eux (et non pas sur les donnĂ©es quâils contiennent !). Elle ne parle pas dâobjet ou dâinterface, concepts encore balbutiants Ă lâĂ©poque (Alan Kay travaille encore sur Smalltalk), mais lâidĂ©e est dĂ©cidĂ©ment dans lâair du temps.
3ïžâŁ Son paradigme prĂ©sente trois Ă©normes avantages, dĂ©jĂ identifiĂ©s dans le papier :
âïž ProtĂ©ger le dĂ©veloppeur contre les erreurs dâinattention (additionner un int et un char par exemple).
âïž RĂ©duire la charge mentale* du dĂ©veloppeur, qui peut se concentrer sur lâespace du problĂšme sans se soucier des dĂ©tails dâimplĂ©mentation. Les types sont semblables aux oeillĂšres des animaux de trait.
âïž Rendre le programme plus facile Ă tester* : le jeu de tests* est divisĂ© en deux parties indĂ©pendantes, lâune vĂ©rifiant lâimplĂ©mentation, lâautre que lâabstraction est appelĂ©e correctement. Cette seconde partie doit ignorer tout de lâimplĂ©mentation.
đ Si la maniĂšre de concevoir des langages a vieilli (et donc la seconde partie du papier de Liskov), les principes fondamentaux sont toujours dâactualitĂ©, je ne peux quâen conseiller la lecture.
* Ces termes nâexistaient pas Ă lâĂ©poque
SOURCE
Liskov, Barbara and Stephen N. Zilles. âProgramming with abstract data types.â SIGPLAN Notices 9 (1974): 50-59. DOI: 10.1145/800233.807045
Enzo Sandré
DOIs: 10.1145/800233.807045