Другими словами, для выявления остановки не существует ДНК-теста. Вы должны запустить программу и лишь тогда узнаете, что произойдет. То есть нужно пройти весь путь вычислительных операций от начала до конца, если он существует. Если программа остановится, то вы получили ответ, но если этого не произойдет, то вы не знаете ответа. А что, если еще немного подождать? Вы просто будете искать ветра в поле. Возможно, программа попала в бесконечный цикл. Ничего конкретного вы не можете знать.
Таким образом, компьютер полностью определен в малом, но непознаваем в целом. На практике столь странное свойство проблем не доставляет. Программисты обычно хорошо знают, что будет делать их программа, если она правильно заработает. Таким образом, для Цифрового Света проблема непознаваемости скорее относится к области теории.
Программисты изо всех сил стараются не писать непознаваемый код. Многие дисциплины программирования развивались десятилетиями, чтобы помочь избежать ловушек неизвестности.
Одна из таких ловушек связана с вычислительным аспектом, который больше всего интересовал Тьюринга, — со способностью программы фактически изменять себя во время вычисления. Например:
(1) Вычесть входное число
Давайте попробуем проделать это с
Полезно знать о непознаваемости, когда вы рассматриваете идею вычислительной машины как модели человеческого мозга или разума, чем занимались Тьюринг, фон Нейман и Шеннон. Компьютер может показаться не слишком удачной моделью, но нельзя отвергать его с ходу из-за его детерминированности и предопределенности всех его действий, считая его слишком жестким и ограниченным, чтобы соответствовать нам. Просто дайте ему работать, и вы увидите, на что он способен.
Программирование
Процесс подготовки программ для цифрового компьютера — это очень увлекательное занятие. И дело не только в том, что оно оправдывает себя с экономической и научной точки зрения; оно может вызвать также эстетические переживания сродни тем, которые испытывают творческие личности при написании музыки или стихов.
Программирование — секрет успеха универсальных вычислительных машин, но ученым потребовалось не менее десяти лет, чтобы понять это. Тьюринг опубликовал первые программы в своей знаменитой статье 1936 года «О машинно-вычислимых числах». Он написал их для концептуальных машин — машин Тьюринга, — которые демонстрировали концепцию универсальных машинных вычислений. Поэтому принято считать, что именно он изобрел программирование и концепцию хранимой в памяти программы. Он придумал слово