Реферат: Согласно теореме Райс, все невозможно. И все же, я делаю это якобы невозможное постоянно!
Конечно, теорема Райс не просто говорит, что «все невозможно». В нем говорится что-то более конкретное: «Каждое свойство компьютерной программы не вычислимо».
(Если вы хотите разделить волосы, каждое «нетривиальное» свойство. То есть свойства, которыми обладают все программы или нет программ, тривиально вычисляемы. Но любое другое свойство не вычислимо.)
Это то, что говорит или, кажется, говорит теорема. И, вероятно, множество очень умных людей тщательно проверили правильность этой теоремы. Но, похоже, это совершенно не поддается логике! Есть множество свойств программ, которые тривиально вычислить! Например:
Сколько шагов выполняет программа перед остановкой? Решить, является ли это число конечным или бесконечным, - это как раз проблема Халтинга, которая не вычислима. Решить, является ли это число большим или меньшим некоторого конечного , тривиально! Просто запустите программу до шагов и посмотрите, останавливается она или нет. Легко!
Точно так же, использует ли программа больше или меньше единиц памяти на своих первых шагах выполнения? Тривиально вычислимо.м
Упоминает ли текст программы переменную с именем ? Тривиальный текстовый анализ покажет ответ.
Программа вызывает команду ? Снова отсканируйте текст программы в поисках имени этой команды.
Я вижу множество свойств, которые также выглядят не вычисляемыми; Например, сколько дополнений выполняет полный прогон программы? Ну, это почти то же самое, что спрашивать, сколько шагов выполняет программа, что фактически является проблемой остановки. Но, похоже, существует множество программных свойств, которые очень легко вычислить. И все же теорема Райс настаивает на том, что ни одна из них не является вычислимой.
Что мне здесь не хватает?