dimanche 3 août 2025

Affordance trompeuse : l'héritage

C'est l'histoire d'une collision entre l'anatomie d'une erreur de 35 ans : la hiérarchie au moment de la compilation d'une encapsulation qui correspond au modèle du domaine par Casey Muratori d'une part, et la mort de Gianni Versace d'autre part. Quel point commun en-dehors d'une conjonction temporelle entre un visionnage de série et celui d'une conférence me direz-vous ? La réponse est simple, car dans le titre : l'héritage.

Dans cette conférence on trouve en particulier à 13:02 une citation de Bjarne Stroustrup, le père de C++, qui dit que programmer de manière orientée objet (POO) c'est programmer en utilisant l'héritage, et la fameuse hiérarchie est issue directement de l'héritage.

Alors qu'est-ce que l'héritage en POO ? Le terme est-il bien choisi ? Tout d'abord regardons une définition issue du TLFi : "patrimoine que laisse une personne à son décès; patrimoine recueilli par voie de succession". La question qui se pose immédiatement est : quel code est décédé ? On connaît tous les codeurs disparus, ceux qui sont effectivement remplacés par l'IA, mais par définition ils n'ont pas vraiment laissé d'héritage.

Regardons un deuxième sens : "Ce qui est transmis par les générations précédentes, ce qui est reçu par tradition. Héritage culturel, littéraire, national, romantique; héritage de coutumes, de croyances, des traditions; héritage des classiques, des Grecs, des Latins." Quelque part, on est en train de parler de connaissances, au mieux de savoir-faire, comme une bonne pratique dont on aurait oublié l'origine et le contexte.

En C++ l'héritage est essentiellement la capacité à profiter du comportement (ou code) de son ancêtre, sans qu'il en soit dépossédé. En C++ peut-on renoncer à son héritage ? Pas vraiment, on peut surcharger ou redéfinir un comportement, mais on ne peut pas faire comme s'il n'existait pas. Deuxième point de divergence. Est-ce que l'héritage fait d'un descendant en C++ un privilégié dans cette société de classes ? Le jury ne se prononce pas, mais ça n'en a pas l'air.

Mais alors, avait-on le choix ? Un meilleur terme à proposer ? C'est un peu comme si chaque descendant exposait au moins les mêmes boutons que ses ancêtres, et, surprise, le comportement derrière ces boutons pouvait changer de génération en génération, sachant que toutes les générations sont vivantes simultanément. Rien ne raisonne directement avec cet exposé. Tout au plus, si on veut anthromorphiser le sujet (ce qu'adorent faire les vulgaires vulgarisateurs de tout poil (synthétique évidemment)), on pourrait penser à un client qui s'adresse à un consultant, et ce consultant fait lui-même ou demande à sa chaîne hiérarchique de faire à sa place. Comme dans tout cabinet de conseil en quelque sorte : on missionne un junior, avec l'espoir d'avoir le comportement (par l'implication) du senior, voire du manager, en cas de problème.

En cabinet de conseil, on n'hérite de rien, cette chaîne hiérarchique s'établie par réseautage (le retour de Bachman !) ou par piston. On retrouve cette idée en C++ du comportement poussé ou déversé par l'ancêtre sur son descendant. De là à parler d'incontinence de classe ? Pourquoi pas.

Post-scriptum : il s'avère qu'un meilleur terme qu'héritage était présent depuis le début, dans C++ ou d'autres langages. "Etendre". Avec les classes, cette hiérarchie ne naît pas par héritage, mais par extension du domaine.


Vous pouvez trouver le reste de la série sous l'article d'introduction.

mardi 29 juillet 2025

Au-delà du beyond : super, hyper, extra et méta

Dans la fuite vers la modernité, il est aisé d'user de superlatifs. Et comme il est aussi aisé de les confondre, je crée cette page chez moi, comme ça j'irais plus vite pour m'y retrouver.

Lire la suite

dimanche 18 mai 2025

Que peut-on faire d'un ordinateur non programmable ?

En passant devant un Minitel 2 l'autre jour avec un jeune collègue de bureau, la question s'est posée de ce qu'était ce type d'ordinateur. Quelle était sa puissance ? Combien avait-il de mémoire ? Qu'est-ce qu'il pouvait faire ? Il a fait beaucoup, comme ouvrir une très grande population à la télématique et à la découverte des services distribués, au commerce en ligne, aux salons de discussions, et à toutes sortes d'autres services tarifés. Mais était-ce parce que sa mémoire ou sa puissance étaient imposantes ? Est-ce même un type d'ordinateur ?

Lire la suite

dimanche 13 avril 2025

Affordance trompeuse : le digital

Selon Digitall Conseil, le terme digital a été popularisé en 2014, et ils le lient à l'avènement des plateformes et des réseaux sociaux. Le digital a l'air nouveau, et quelque part lié à l'informatique, voire au numérique. Mais ça ne peut pas être simplement le numérique, sinon on n'aurait pas  […]

Lire la suite

dimanche 16 mars 2025

Un transpileur est-il un type de compilateur ?

Et les moutons électriques rêvent-ils ? Cette question du transpileur qui serait un type de compilateur s'est posée récemment, à la croisée de deux discussions. La première discussion était autour d'un article qui était censé suivre une approche philologique sur les langages de programmations. Sauf  […]

Lire la suite

vendredi 21 février 2025

Affordance trompeuse : les batchs

Un sujet léger, celui des batchs, ou en français, des lots. Si l'on demande au codeur qui passe, il en a peut-être entendu parler comme d'un reliquat du lait Gassy, et il vous dira probablement que cela implique à un moment de travailler sur des lots de données, d'où le nom "batch". C'est  […]

Lire la suite

samedi 4 janvier 2025

Affordance trompeuse : la modernité

Dans notre monde informatique, que ce soit celui des ESN, ou pire, celui des toilettes de conseil, un leitmotiv entêtant revient sans cesse : la modernité ou la mort. La modernité est un besoin vital, et ce pour plusieurs raisons. Tout d'abord, parce que le marché du travail ne peut pas fournir de  […]

Lire la suite

jeudi 28 décembre 2023

Balade au pays des voyeurs : les Observables

Tout commence par la découverte du code d'un programme utilisant Angular, et en particulier NgRx. Je me retrouve propulsé plus de 20 ans en arrière, avec une approche intégralement en callbacks, et pour s'y retrouver dans ce magma de fonctions : des noms, des noms, des noms. Une explosion de noms.  […]

Lire la suite

- page 1 de 261