Эволюция разума
Шрифт:
В той же статье Тьюринг поведал о другом неожиданном открытии, касающемся неразрешимых задач. Неразрешимые задачи — это те, что хорошо описываются единственным решением (которое, как можно показать, существует), но (как тоже можно показать) не могут быть решены никакой машиной Тьюринга (то есть вообще никакой машиной). Представление о существовании таких задач в корне противоречит сформировавшейся к началу XX в. догме о том, что все проблемы, которые можно сформулировать, являются решаемыми. Тьюринг показал, что число неразрешимых задач не меньше числа разрешимых задач. В 1931 г. к такому же выводу пришел Курт Гедель, сформулировавший «теорему о неполноте». Такая странная ситуация: мы можем сформулировать задачу, можем доказать, что у нее существует единственное решение, но при этом знаем, что никогда не сможем это решение найти.
Тьюринг показал, что вычислительные машины действуют на основании
В 1939 г. Тьюринг сконструировал электронный калькулятор Bombe, который помогал дешифровать сообщения, составленные немцами на кодирующей машине Enigma. К 1943 г. группа инженеров при участии Тьюринга закончила создание машины Colossus, которую иногда называют первым в истории компьютером. Это позволило союзникам расшифровывать сообщения, созданные более сложной версией Enigma. Машины Bombe и Colossus были сконструированы для решения единственной задачи и не могли перепрограммироваться. Но свою функцию они выполняли блестяще. Считается, что отчасти благодаря им союзники могли предвидеть тактику немцев на протяжении всей войны, а Королевские военно-воздушные силы Великобритании в Битве за Британию смогли одолеть втрое превосходящие их по численности силы Люфтваффе.
Именно на этой основе Джон фон Нейман создал компьютер современной архитектуры, отражающей третью из четырех важнейших идей теории информации. На протяжении прошедших с тех пор почти семидесяти лет основное ядро этой машины, названной «машиной фон Неймана», практически не изменилось — как в микроконтроллере в вашей стиральной машине, так и в самом крупном суперкомпьютере. В статье, опубликованной 30 июня 1945 г. и озаглавленной «Первый проект отчета о EDVAC», фон Нейман изложил основные идеи, которые с тех пор направляли развитие информатики [124] . В машине фон Неймана присутствует центральный процессор, где выполняются арифметические и логические операции, модуль памяти, в котором хранятся программы и данные, массовая память, программный счетчик и входные/выходные каналы. Хотя статья предназначалась для внутреннего пользования в рамках выполнения проекта, для создателей компьютеров она стала Библией. Вот так иногда обычный рутинный отчет может изменить мир.
124
Von Neumann, John. First Draft of a Report on the EDVAC. Moore School of Electrical Engineering, University of Pennsylvania, 1945. Von Neumann, John. A Mathematical Theory of Communication by John Von Neumann in the Bell System Technical Journal, 1948.
Машина Тьюринга не была предназначена для практических целей. Теоремы Тьюринга не имели отношения к эффективности решения задач, а скорее описывали спектр задач, которые теоретически могут быть решены с помощью компьютера. Напротив, цель фон Неймана заключалась в создании концепции реального компьютера. Его модель заменила однобитную систему Тьюринга многобитной (обычно кратную восьми битам) системой. Машина Тьюринга имеет последовательную ленту памяти, так что программы затрачивают очень большое время на перемещение ленты вперед и назад для записи и извлечения промежуточных результатов. Напротив, в системе фон Неймана доступ к памяти осуществляется произвольным образом, что позволяет немедленно извлекать любые нужные данные.
Одной из ключевых идей фон Неймана является концепция хранимой программы, которую он развил за десять лет до создания компьютера. Суть концепции заключается в том, что программа хранится в том же модуле памяти с произвольным доступом, что и данные (а часто даже в том же блоке памяти). Это позволяет перепрограммировать компьютер для решения разных задач и создавать самомодифицирующийся код (в случае записывающих накопителей), что обеспечивает возможность рекурсии. До того времени практически все компьютеры, включая Colossus, создавались для решения конкретных задач. Концепция хранимой программы позволила компьютеру стать поистине универсальной машиной, соответствующей представлению Тьюринга об универсальности машинных вычислений.
Еще одно важное свойство машины фон Неймана заключается в том, что в каждой инструкции содержится операционный код, определяющий арифметическую или логическую операцию и адрес операнда в памяти компьютера.
Концепция фон Неймана об архитектуре компьютера
У компьютера с архитектурой фон Неймана имелось несколько предшественников, но ни один из них — за одним неожиданным исключением — нельзя назвать истинной машиной фон Неймана. В 1944 г. Говард Эйкен выпустил Mark I, который можно было в какой-то степени перепрограммировать, но он не использовал хранимой программы. Машина считывала инструкции с перфокарты и немедленно их выполняла. В машине также не было предусмотрено условных переходов.
В 1941 г. немецкий ученый Конрад Цузе (1910–1995) создал компьютер Z-3. Он тоже считывал программу с ленты (в данном случае закодированную на пленке) и тоже не выполнял условных переходов. Интересно, что Цузе получил финансовую поддержку от Немецкого института самолетостроения, который использовал этот компьютер для изучения флаттера крыла самолета. Однако предложение Цузе о финансировании замены реле радиолампами не было поддержано нацистским правительством, которое считало развитие компьютерной технологии «не имеющим военного значения». Это, как мне кажется, в определенной степени повлияло на исход войны.
На самом деле у фон Неймана был один гениальный предшественник, причем жил он на сто лет раньше! Английский математик и изобретатель Чарльз Бэббидж (1791–1871) в 1837 г. описал свою аналитическую машину, основанную на тех же принципах [125] , что и компьютер фон Неймана, и использовавшую хранимую программу, нанесенную на перфокарты жаккардовых ткацких машин. Память машины с произвольным доступом содержала 1000 слов по 50 десятичных знаков в каждом (что эквивалентно примерно 21 килобайту). Каждая инструкция содержала код операции и номер операнда — точно так же, как в современных компьютерных языках. Система не использовала условных переходов и циклов, так что это была настоящая машина фон Неймана. Полностью механическая, она, по-видимому, превзошла и дизайнерские, и организаторские возможности самого Бэббиджа. Он создал части машины, но так и не запустил ее.
125
Jeremy Bernstein, The Analytical Engine: Computers — Past, Present, and Future, William Morrow & Co; Revised edition, 1981.
Точно не известно, знали ли пионеры компьютеростроения XX в., включая фон Неймана, о работах Бэббиджа [126] .
Однако создание машины Бэббиджа положило начало развитию программирования. Английская писательница Ада Байрон (1815–1852), графиня Лавлейс, единственный законный ребенок поэта лорда Байрона, стала первым в мире программистом. Она писала программы для аналитической машины Бэббиджа и отлаживала их в уме (поскольку компьютер так никогда и не заработал). Теперь программисты называют эту практику table checking. Она перевела статью итальянского математика Луиджи Менабреа об аналитической машине, добавив от себя существенные замечания и заметив, что «аналитическая машина плетет алгебраические рисунки, как ткацкий жаккардовый станок плетет цветы и листья». Возможно, она первой упомянула о возможности создания искусственного интеллекта, но сделала вывод, что аналитическая машина «сама не способна что-либо придумать».
126
Судя по всему, идеи Бэббиджа легли в основу созданного Эйкеном компьютера Mark I.
Идеи Бэббиджа кажутся поразительными, если учесть, в какую эпоху он жил и работал. Однако к середине XX в. эти идеи были практически забыты (и вновь открыты лишь позднее). Именно фон Нейман придумал и сформулировал ключевые принципы действия компьютера в его современном виде, и недаром машину фон Неймана продолжают считать основной моделью вычислительной машины. Однако не будем забывать, что машина фон Неймана постоянно осуществляет обмен данными между отдельными модулями и внутри этих модулей, так что она не могла быть создана без теорем Шеннона и тех методов, которые он предложил для надежной передачи и хранения цифровой информации.