Это очень активная тема исследования, очень многообещающая, хотя полная автоматизация генерации программ, вероятно, имеет внутренние ограничения (но лучше ли людям?). Но идея по-прежнему очень полезна для значительного содействия созданию программ путем механизации многих этапов и автоматической проверки правильности генерации программ.
Он тесно связан с результатом в логике, называемой соответствием Карри-Говарда (или изоморфизмом), который показывает, что компьютерные программы и математические доказательства очень похожи.
Таким образом, идея заключается в том, что система примет спецификацию вашей программы в качестве доказываемой теоремы. В случае вашего примера это было бы что-то вроде (неофициально): «есть множество всех простых чисел, меньших 10».
Затем вы попытаетесь доказать эту теорему, и существующие системы помогут вам выполнить доказательство, автоматизировать некоторые части, возможно, полное доказательство, и убедиться, что вы никогда не допустите ошибок.
Из этого доказательства можно извлечь программу, которая фактически вычисляет требуемый список простых чисел, которые были первоначально указаны.
Несколько систем были разработаны в прошлом, чтобы прояснить эти идеи. Одним из наиболее известных был LCF с помощью Робин Милнер , который создал язык
ML для этой цели. Одна из самых современных систем
Coq .
Есть примеры, полностью проработанные, некоторые из них довольно сложные. Вы можете найти некоторые из них в следующей статье , хотя это ни в коем случае не простое чтение и требует глубоких знаний логики.