Il s'agit d'un sujet de recherche très actif, très prometteur, bien que l'automatisation complète de la génération de programmes ait probablement des limites intrinsèques (mais les êtres humains sont-ils meilleurs?). Mais l'idée est toujours très utile pour aider considérablement à la création de programmes en mécanisant de nombreuses étapes, et en vérifiant automatiquement l'exactitude de la génération du programme.
Elle est fortement liée à un résultat en logique, appelé la correspondance de Curry-Howard (ou isomorphisme), qui montre que les programmes informatiques et les preuves mathématiques sont très similaires.
L'idée est donc que le système prendra votre spécification de programme comme un théorème à prouver. Dans le cas de votre exemple, ce serait quelque chose comme (officieusement): "il y a un ensemble de tous les nombres premiers inférieurs à 10".
Ensuite, vous tenterez de prouver ce théorème, et les systèmes existants vous aideront à faire la preuve, à automatiser certaines parties, éventuellement la preuve entière, et à vous assurer de ne jamais faire d'erreurs.
De cette preuve, on peut ensuite extraire un programme qui calcule réellement la liste souhaitée des nombres premiers qui avaient été initialement spécifiés.
Plusieurs systèmes ont été développés dans le passé pour élucider ces idées. L'un des plus connus était LCF de Robin Milner , qui a créé le langage
ML à cet effet. L'un des systèmes actuellement les plus avancés est
Coq .
Il existe des exemples entièrement élaborés, certains assez complexes. Vous pouvez en trouver dans l' article suivant , bien qu'il ne s'agisse en aucun cas d'une lecture simple et nécessite des connaissances avancées de Logic.