Certains pourraient prétendre qu’un livre qui traite du code est un livre dépassé – le code n’est plus le problème – et qu’il est plus important aujourd’hui de s’intéresser aux modèles et aux exigences. Il a même été suggéré que la fin du code était proche, qu’il serait bientôt généré au lieu d’être écrit, que les programmeurs seraient bientôt inutiles car les directeurs de projets généreraient les programmes à partir des spécifications.
Balivernes ! Nous ne pourrons jamais nous débarrasser du code car il représente les détails des exigences. À un certain niveau, ces détails ne peuvent pas être ignorés ou absents ; ils doivent être précisés. Préciser des exigences à un niveau de détail qui permet à une machine de les exécuter s’appelle
programmer. Cette spécification
est le code.
Je m’attends à ce que le niveau d’abstraction de nos langages continue d’augmenter. Je m’attends également à l’augmentation du nombre de langages spécifiques à un domaine. Ce sera une bonne chose. Mais ce n’est pas pour autant que le code disparaîtra.
Les spécifications écrites dans ces langages de plus haut niveau et spécifiques à un domaine seront évidemment du code ! Il devra toujours être rigoureux, précis et tellement formel et détaillé qu’une machine pourra le comprendre et l’exécuter.
Ceux qui pensent que le code disparaîtra un jour sont comme ces mathématiciens qui espèrent découvrir un jour des mathématiques qui n’ont pas besoin d’être formelles. Ils espèrent pouvoir trouver une manière de créer des machines qui réalisent ce que nous souhaitons, non ce que nous exprimons. Ces machines devront nous comprendre parfaitement, au point de pouvoir traduire nos besoins exprimés de manière vague en des programmes opérationnels qui répondent précisément à ces besoins.
Cela ne se produira jamais. Même les humains, avec toute leur intuition et leur créativité, ne sont pas capables de créer des systèmes opérationnels à partir des vagues sentiments de leurs clients. Si la spécification des exigences nous a enseigné quelque chose, c’est que les exigences parfaitement définies sont aussi formelles que du code et qu’elles peuvent servir de tests exécutables pour ce code !
N’oubliez pas que le code n’est que le langage dans lequel nous exprimons finalement les exigences. Nous pouvons créer des langages plus proches des exigences. Nous pouvons créer des outils qui nous aident à analyser et à assembler ces exigences en structures formelles. Mais nous n’enlèverons jamais une précision nécessaire. Par conséquent, il y aura toujours du code.
Partager