В книге Эндрю У. Аппеля « Реализация современного компилятора в ML» он говорит в главе 17, что теория вычислимости показывает, что всегда можно изобрести новые оптимизирующие преобразования, и продолжает доказывать, что полностью оптимизирующий компилятор решит проблему остановки: Программа Q, который не производит никакого вывода и никогда не останавливается, может быть легко заменен его оптимальным представлением, Opt (Q) , являющимся "L: goto L". Таким образом, полностью оптимизирующий компилятор может решить проблему остановки.
Поэтому мой вопрос таков: существует ли полностью оптимизирующий компилятор для завершения программ? Мои единственные мысли следующие: даже если программа гарантированно завершает работу, она все равно может быть сколь угодно сложной, и для любого конкретного оптимизирующего компилятора C можно было бы построить программу, которая принимает C в качестве входных данных и каким-то образом создает худшую программу как какой-то угловой чехол.
Кроме того, каковы последствия ограничения нас на прекращение программ?