Вычислительная машина и мозг
Шрифт:
Как такое возможно? Ответ: через избыточность.
Сейчас подобное решение может показаться элементарным, но в то время оно было далеко не очевидным. Рассмотрим простой пример. Если я передам каждый бит три раза и применю «принцип большинства», то я значительно повышу надежность результата. Если этого будет недостаточно, я могу увеличить избыточность, пока не получу необходимую надежность. Повторение информации – самый простой способ достичь высокой точности в каналах низкой точности. Однако данный подход не самый эффективный. В своей статье Шеннон не только заложил основы теории информации, но и предложил оптимальные методы обнаружения и исправления ошибок. Эти методы позволяли добиться любой желаемой точности через любой неслучайный канал.
Читатели более старшего возраста наверняка помнят телефонные модемы, в которых постоянно
Аналогичная проблема и аналогичное решение существуют и для цифровой памяти. Вы когда-нибудь задумывались, почему CD, DVD и программные диски продолжают работать даже после того, как упали на пол или были поцарапаны? Этим мы тоже обязаны Шеннону. Процесс вычислений состоит из трех элементов: связи (которая, как я уже говорил, имеет место как внутри, так и между машинами), памяти и логических вентилей (которые выполняют арифметические и логические функции). Точность логических вентилей можно сделать произвольно высокой с помощью особых кодов для обнаружения и исправления ошибок. Именно благодаря теореме Шеннона мы можем обрабатывать большие и сложные цифровые данные, используя для этого достаточно длинные алгоритмы.
Вторая важная идея, на которую опирается наш информационный век, – универсальность машинных вычислений. В 1936 году Алан Тьюринг описал «машину Тьюринга» – абстрактную вычислительную машину, которая состоит из бесконечно длинной ленты, разделенной на клетки с цифрами 1 или 0. Машина считывает одну клетку за другой и содержит набор правил в виде пронумерованных состояний, фактически представляющих собой хранимую в памяти программу. Каждое правило предписывает машине совершить одно действие, если в считываемой клетке стоит 0, и другое действие, если в считываемой клетке стоит 1. Возможные действия включают запись 0 или 1, перемещение ленты на одну клетку вправо или влево, остановку ленты. Каждое состояние содержит номер следующего состояния, в которое должна перейти машина. Завершив алгоритм, машина останавливается; выход процесса остается на ленте. Хотя лента теоретически бесконечна, любая программа (которая не подразумевает бесконечный цикл) использует конечную часть ленты; следовательно, если мы ограничимся конечной памятью, машина по-прежнему сможет решать широкий круг задач.
В машине Тьюринга нет ничего сложного, верно? На самом деле именно этого и добивался ученый. Он хотел, чтобы его машина была максимально простой (но не проще, перефразируя Эйнштейна). Позже Тьюринг и его бывший учитель, Алонзо Черч сформулировали тезис Черча – Тьюринга, согласно которому задача, которая не может быть решена машиной Тьюринга, не может быть решена никакой другой машиной. Хотя собственно машина Тьюринга способна выполнять крайне ограниченное количество команд и одновременно обрабатывает всего один бит, она может вычислить все, что может вычислить любая вычислительная машина.
Строгие интерпретации тезиса Черча – Тьюринга предполагают принципиальную эквивалентность того, что человек может думать или знать, и того, что может быть вычислено машиной. Основная идея заключается в том, что человеческий мозг подчиняется естественным законам; следовательно, его способность обрабатывать информацию не может превосходить таковую у машины (и соответственно у машины Тьюринга).
В своей статье Тьюринг заложил теоретические основы машинных вычислений. Хотя это целиком и полностью его заслуга, важно отметить, что большое влияние на него оказала лекция, прочитанная Джоном фон Нейманом в 1935 году в Кембридже (Англия). Лекция была посвящена идее программы, которую можно хранить в памяти – концепция, позднее воплощенная в машине Тьюринга. На фон Неймана в свою очередь произвела глубочайшее впечатление статья Тьюринга 1936 года, где были изложены принципы машинных вычислений и которую в конце 1930-х – начале 1940-х годов он включил в список обязательной литературы, составленный для своих коллег.
В той же работе Тьюринг сообщает о другом неожиданном открытии, а именно – о проблеме неразрешимых задач. Неразрешимые задачи – это хорошо описанные задачи с однозначным ответом, который, однако, не может быть вычислен на машине Тьюринга (т. е. на любой
Гораздо больше можно сказать о философском значении работ Тьюринга, Черча и Геделя, однако в рамках данного предисловия достаточно отметить следующее. Тьюринг показал, что в основе всех машинных вычислений лежит очень простой механизм. Поскольку машина Тьюринга (и, следовательно, любая вычислительная машина) способна определять дальнейший образ действий, исходя из результатов предыдущих операций, она способна принимать решения и моделировать произвольно сложные иерархии данных.
К декабрю 1943 года Тьюринг спроектировал и построил «Колосс», который часто называют первым компьютером в истории электронных вычислительных машин. «Колосс» предназначался для выполнения одной-единственной задачи – декодирования радиосообщений, зашифрованных нацистской машиной Enigma – и не мог быть перепрограммирован для выполнения другой задачи. Зато с дешифровкой он справлялся блестяще: считается, что именно благодаря ему союзники смогли взять верх над немецкими «люфтваффе» и выиграть решающую битву за Британию.
Все вышеизложенное послужило своеобразным фундаментом, на котором Джон фон Нейман создал архитектуру современного компьютера – машину фон Неймана, составляющую основу практически каждого автомата, изобретенного за последние шестьдесят шесть лет: от микроконтроллера стиральных машин до самых больших суперкомпьютеров. Это третья ключевая идея информационной эры. В статье «Первый проект отчета о EDVAC», [1] датированной 30 июня 1945 года, фон Нейман изложил революционные принципы в области машинных вычислений. Модель фон Неймана состоит из центрального процессора, в котором выполняются арифметические и логические операции, блока памяти, в котором хранятся программа и данные, устройства массовой памяти, счетчика команд и каналов ввода-вывода. Данная концепция описана в первой части этой книги. Хотя статья фон Неймана, по сути, представляла собой внутренний проектный документ, она не только стала библией для конструкторов вычислительных машин 1940-х и 1950-х годов, но и значимо повлияла на архитектуру всех компьютеров, построенных с тех пор.
1
EDVAC (Electronic Discrete Variable Automatic Computer) – одна из первых электронных вычислительных машин на двоичной основе. – Здесь и далее примеч. ред.
Машина Тьюринга не была рассчитана на практическое применение. Теоремы Тьюринга не имели никакого отношения к эффективности решения задач; они лишь позволяли определить круг тех задач, которые могли быть решены посредством машинных вычислений. Фон Нейман, наоборот, ставил своей целью формулирование практических принципов вычислительной машины. Так, в машине фон Неймана однобитовые вычисления Тьюринга заменены многобитовыми словами (как правило, количество битов кратно восьми). Если машина Тьюринга тратит огромное количество времени на перемещение ленты вперед и назад, чтобы сохранять и извлекать промежуточные результаты, то машина фон Неймана, напротив, снабжена памятью с произвольным доступом, поэтому любой элемент данных может быть извлечен немедленно.
Одним из важнейших принципов, предложенных фон Нейманом, является принцип хранимой программы, который он сформулировал десятью годами ранее: программа хранится в той же памяти, что и данные. Это позволяет перепрограммировать вычислительную машину для выполнения различного рода задач, а также использовать самомодифицирующийся код, допускающий применение некоторых форм рекурсии. До того времени практически все вычислительные машины, включая «Колосс» Тьюринга, могли решать только те задачи, для решения которых были предназначены изначально. Хранимая программа придала вычислительной машине поистине универсальный характер. Так, идея Тьюринга об универсальной машине получила реальное воплощение.