Values and objects in programming languages

✒️ Enzo Sandré · 📆 18/02/2025 · 🔣 Science des Langages

🗃️ Les familiers de DDD connaissent la distinction Entité/Objet-Valeur. Peu savent qu’Evans n’a rien inventé : en 1982, Bruce McLennan plaidait pour que les langages orientés-objet n’utilisent pas le même mécanisme pour représenter les valeurs et les objets. Les premières sont des abstractions intemporelles et immuables que la programmation partage avec les mathématiques. Les seconds sont des instances partageant une forme commune (leur classe), mais différent en substance (leur identité et leurs accidents).

🧮 En réalité, McLennan non plus n’a rien inventé, il poursuit simplement la longue tradition d’Aristote, de Saint Thomas d’Aquin et des scolastiques. L’orienté-objet n’a rien de neutre, ce paradigme est l’héritier d’une longue tradition philosophique réaliste. Pour McLennan, les mathémathiques sont trop abstraites et incommodes pour représenter les cas particuliers. A l’inverse, un style de programmation qui ignore la distinction valeur/objet se prive d’outils puissants pour représenter l’abstrait, l’immuable, le calculable et donc la simplicité.

🏛️ Ce papier est à ranger parmi les grands classiques de la programmation. “Programmer, c’est faire des mathémathiques orientées-objet. Mathématiser, c’est faire de la programmation orientée-valeur” résume d’auteur.

SOURCE

MacLennan, Bruce J.. “Values and objects in programming languages.” ACM SIGPLAN Notices 17 (1982): 70-79. DOI:10.1145/988164.988172

Enzo Sandré


📄 Lien public DOIs: 10.1145/988164.988172