Je ne suis pas sûr d'avoir correctement compris ton idée, mais si tu cherches un logiciel qui puisse valider tout seul un programme quelconque, c'est impossible.
on fixe plus précisément les règles d'entrée du langage (sa grammaire dans un premier temps). On a alors le cas de ce qui valide la grammaire, et de ce qui ne le valide pas, etc.
Si tu es obligé de changer la grammaire du langage compris par l'interpréteur que tu essayes de coder, alors tu te retrouves dans un cas où ton programme final sera différent de celui que tu voulais faire au départ. Par exemple si tu voulais coder un interpréteur LISP, et que ton IDE-magique t'oblige à restreindre la grammaire, à la fin tu n'auras pas un interpréteur LISP.
Plus généralement, tu ne peux pas systématiquement contourner le problème de l'utilisateur qui rentre une donnée qui fait boucler le programme. Ton IDE-magique ne peut pas toujours décider "ah mais dis donc, c'est une boucle infinie ça, il faut corriger".
si on ne peut pas tout tester, comme être fiable à 100% ?
Il y a des outils de preuves formelles de programmes, comme Coq, mais c'est très chiant à utiliser, donc ce n'est pas une solution pour ceux qui ont la flemme de tester une valeur de retour :)
Dans un premier temps, tu devrais essayer la programmation par contrat, c'est très efficace pour attraper la plupart des gros bugs, et ça demande assez peu d'effort de la part du programmeur. Par exemple en Eiffel, tu peux déclarer des prérequis sur tes fonctions ("ce paramètre là doit être compris entre 2 et 56"), une fonction peut promettre des choses aux autres ("la valeur que je retourne ne dépassera jamais 56"), et on peut aussi déclarer des invariants ("la valeur de cette variable ne sera jamais supérieure à 42"). En pratique si tu n'as pas une batterie de tests, tu ne peux pas être sûr qu'une de ces conditions ne sera pas violée, mais tu peux être sûr que si c'est le cas, tu n'auras pas de mal à trouver l'erreur.
[^] # Re: I had a dream...
Posté par Yusei (Mastodon) . En réponse au journal Comment résoudre la "crise du logiciel" ?. Évalué à 6.
Je ne suis pas sûr d'avoir correctement compris ton idée, mais si tu cherches un logiciel qui puisse valider tout seul un programme quelconque, c'est impossible.
Si tu es obligé de changer la grammaire du langage compris par l'interpréteur que tu essayes de coder, alors tu te retrouves dans un cas où ton programme final sera différent de celui que tu voulais faire au départ. Par exemple si tu voulais coder un interpréteur LISP, et que ton IDE-magique t'oblige à restreindre la grammaire, à la fin tu n'auras pas un interpréteur LISP.
Plus généralement, tu ne peux pas systématiquement contourner le problème de l'utilisateur qui rentre une donnée qui fait boucler le programme. Ton IDE-magique ne peut pas toujours décider "ah mais dis donc, c'est une boucle infinie ça, il faut corriger".
Il y a des outils de preuves formelles de programmes, comme Coq, mais c'est très chiant à utiliser, donc ce n'est pas une solution pour ceux qui ont la flemme de tester une valeur de retour :)
Dans un premier temps, tu devrais essayer la programmation par contrat, c'est très efficace pour attraper la plupart des gros bugs, et ça demande assez peu d'effort de la part du programmeur. Par exemple en Eiffel, tu peux déclarer des prérequis sur tes fonctions ("ce paramètre là doit être compris entre 2 et 56"), une fonction peut promettre des choses aux autres ("la valeur que je retourne ne dépassera jamais 56"), et on peut aussi déclarer des invariants ("la valeur de cette variable ne sera jamais supérieure à 42"). En pratique si tu n'as pas une batterie de tests, tu ne peux pas être sûr qu'une de ces conditions ne sera pas violée, mais tu peux être sûr que si c'est le cas, tu n'auras pas de mal à trouver l'erreur.