đ€Ż 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