Classes versus prototypes in object-oriented languages

✒ Enzo SandrĂ© · 📆 29/04/2025 · 🔣 Science des Langages

đŸ€Ż L’idĂ©e de baser l’orientĂ© objet sur des prototypes plutĂŽt que sur des classes date de 1986. C’est une rĂ©action Ă  l’introduction des mĂ©taclasses en Smalltalk, concept jugĂ© trĂšs peu intuitif (les pythonistes modernes tĂ©moigneront). Borning affirme que les classes des langages orientĂ©s-objet portent bien trop de responsabilitĂ©s : gĂ©nĂ©rateurs d’instances, descripteurs de protocoles, descripteurs de reprĂ©sentation, etc.

📑 La solution proposĂ©e est d’abolir les classes. Tout nouvel objet est la copie d’un ancien, qui peut ensuite ĂȘtre modifiĂ© Ă  loisir. Cette copie peut ĂȘtre indĂ©pendante de la source, ou lui ĂȘtre liĂ©e par des contraintes. Ces contraintes peuvent lier ensemble les champs, le comportement ou le protocole des deux objets. Une copie contrainte sur les trois se nomme un descendant.

đŸš« Aucune Ă©tude, mĂȘme sur des Ă©tudiants, n’a Ă©tĂ© effectuĂ©e avant d’affirmer que ce modĂšle est plus clair que la POO “vanilla” ou les mĂ©taclasses. Pourtant l’auteur affirme qu’ayant moins de concepts Ă  apprendre, le dĂ©butant sera moins perdu. Celui-ci est pourtant clairvoyant sur les dĂ©fauts de sa proposition : elle n’est pas naturelle pour les pures abstractions comme les nombres. Quel est l’entier prototypal ? 0 ou 1 ? Un prototype de Stack ou de Queue fait-il sens ? Enfin, Ă  l’époque, le copy-on-write n’existait pas et les performances d’un langage Ă  prototype n’auraient pas Ă©tĂ© flamboyantes.

đŸ›ïž La philosophie aristotĂ©lico-thomiste est gravĂ©e dans nos tĂȘtes d’occidentaux, pour le meilleur et pour le pire. Sortir de cette dualitĂ© objet/concept est une impasse en programmation, car cette dualitĂ© nous est enseignĂ©e depuis notre enfance. Qu’elle soit naturelle ou culturelle importe peu Ă  ce stade.

SOURCE

A. H. Borning. 1986. Classes versus prototypes in object-oriented languages. In Proceedings of 1986 ACM Fall joint computer conference (ACM ‘86). IEEE Computer Society Press, Washington, DC, USA, 36–40. DOI:10.5555/324493.324538

Enzo Sandré


📄 Lien public DOIs: 10.5555/324493.324538