Programming with abstract data types

✒ Enzo SandrĂ© · 📆 22/11/2021 · đŸ’Ÿ Histoire de l'informatique · 🔣 Science des Langages · #ïžâƒŁ Façonnage de code

đŸ‘” 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