Este es un tema de investigación muy activo, muy prometedor, aunque la automatización completa de la generación de programas probablemente tiene limitaciones intrínsecas (¿pero los seres humanos son mejores?). Pero la idea sigue siendo muy útil para ayudar considerablemente a la creación de programas mecanizando muchos pasos y comprobando automáticamente la corrección de la generación del programa.
Está fuertemente relacionado con un resultado en la lógica, llamado correspondencia de Curry-Howard (o isomorfismo), que muestra que los programas de computadora y las pruebas matemáticas son muy similares.
Entonces, la idea es que el sistema tomará la especificación de su programa como un teorema para ser probado. En el caso de su ejemplo, sería algo como (informalmente): "hay un conjunto de todos los números primos menores que 10".
Luego, intentará probar ese teorema, y los sistemas existentes lo ayudarán a hacer la prueba, automatizar algunas partes, posiblemente la prueba completa, y asegurarse de que nunca cometa errores.
A partir de esa prueba, se puede extraer un programa que realmente calcula la lista deseada de números primos que se habían especificado inicialmente.
Varios sistemas se desarrollaron en el pasado para dilucidar estas ideas. Uno de los más conocidos fue LCF por Robin Milner , quien creó el lenguaje
ML para ese propósito. Uno de los sistemas más avanzados actualmente es
Coq .
Hay ejemplos completamente elaborados, algunos de ellos bastante complejos. Puede encontrar algunos en el siguiente artículo , aunque de ninguna manera es una lectura simple y requiere conocimientos avanzados de lógica.