Pour son discours du prix Turing de 1990 , Fernando J. Corbató a énuméré les raisons pour lesquelles des systèmes complexes échoueront inévitablement. Dans sa conclusion, il donne quelques suggestions pour diminuer la probabilité d'échec. Il énumère une idée comme suit:
[U] use de langages contraints pour la conception ou la synthèse est une méthodologie puissante. En ne permettant pas à un programmeur ou à un concepteur d'exprimer des idées non pertinentes, le domaine des erreurs possibles devient beaucoup plus limité.
Qu'entend-il par «langage contraint»?
Pendant un moment, j'ai considéré la programmation par contraintes . Cependant, la programmation par contraintes consiste à restreindre l'espace de solution du programme. C'est un outil qui habilite un programmeur. La fonctionnalité à laquelle Corbató fait référence semble être quelque chose qui restreint réellement le programmeur, ou du moins la rend plus encline à écrire du code terser.
Ma deuxième pensée est qu'il fait référence aux langages de programmation conservateurs . Corbató a reçu son prix Turing pour son travail accompli dans les années 1960 et 1970. Je crois comprendre qu'il a traité de nombreuses cartes perforées. Je n'ai jamais vu de carte perforée, donc je ne sais certainement pas comment en programmer une, mais je suppose que la programmation des cartes perforées est extrêmement libérale. Je soupçonne que les notions de vérification de type, d'analyse statique, etc. n'existaient tout simplement pas. Alors, Corbató fait-il peut-être référence à l'idée de langages qui empêchent le développeur de faire des erreurs stupides? Cela ne semble pas non plus être le cas. Les vérifications de sécurité et la modélisation des données n'ont rien à voir avec la justesse, ce dont il semble parler quand il mentionne "ne pas autoriser ... des idées non pertinentes".