Книга Джордж и код, который не взломать - Люси Хокинг
Шрифт:
Интервал:
Закладка:
– Старый Космос… – прошептал Джордж.
Очки ночного видения благополучно провели их сквозь тьму к подвалу, где хранился Старый Космос, но дверь в подвал была заперта.
Сверху доносился звон разбитого стекла: робот бил окна первого этажа.
– Как же нам туда попасть? – прошептала Анни.
На двери слабо светился кодовый замок.
– Ты знаешь код? – спросил Джордж.
– М-м-м… придётся угадать… – Она впечатала ряд цифр.
– А как ты будешь угадывать? – спросил Джордж, стараясь не выдать свой страх, чтобы не сбить Анни, иначе они погибли.
– Я попробовала ввести папин день рожденья, – сказала она, – но не получилось. Мамин – тоже нет. А теперь…
Она что-то набрала на клавиатуре – и на этот раз дверь отъехала в сторону, приглашая их войти.
– А это мой день рожденья! – Анни едва не завопила от радости. – Сработало!
Дверь закрылась за ними с приятным слуху щелчком. Может быть, робот и способен её вышибить, но пока, по крайней мере, они выиграли немножко времени.
Внутри их поджидал допотопного вида компьютер, громадный и неуклюжий, занимавший почти весь подвал. Глядя на него, Джордж в очередной раз с восхищением подумал о том, как сильно уменьшились компьютеры всего за пару десятков лет.
– Добро пожаловать, Анни! – Эти слова Космоса появились на старинной рулонной компьютерной бумаге с дырочками по краям. Разговаривать он не умел, так что ему приходилось печатать. – Рад снова тебя видеть.
Что такое компьютер
Математические законы
У Вселенной есть удивительное свойство: в ней всё, от планет до лучей света и звуковых волн, подчиняется математическим законам, и мы можем предсказать её поведение путём математических расчётов.
Вычислительная машина позволяет воспроизвести то же самое в обратном порядке: мы разрабатываем и собираем совокупность элементов, которые будет функционировать согласно математическим законам по нашему выбору. Мы позволяем этой машине вести себя естественно («оперировать»), она производит расчёт и выдаёт нам ответ. Если теоретический план машины, её конструкция и наши измерения достаточно точны, то мы можем рассчитывать, что точным будет и полученный в итоге ответ.
В наши дни мы привыкли к тому, что компьютер можно запрограммировать и он вычислит всё что угодно, если ему хватит памяти и мощности процессора, а сами программы – это такие же данные, как любые другие. Однако чтобы компьютеры стали такими, им понадобилось пройти долгий путь…
Очень древний аналоговый компьютер
Еще во II веке до нашей эры в Греции был сконструирован Антикитерский вычислительный механизм, воспроизводивший обращение Солнца, Луны и планет с помощью вращающихся шестерней. Создатель Антикитеры провел аналогию между небесными телами и бронзовыми шестернями, сцепленными в сложный механизм таким образом, чтобы они точно отражали взаимное расположение этих тел в небе в разные моменты времени. Поскольку Антикитерский механизм основан на аналогии с конкретной физической системой, его можно считать примером аналогового вычислительного устройства. Ещё один пример такого устройства – линейка с выдвижной центральной шкалой для расчёта логарифмов, то есть логарифмическая линейка. Она была изобретена ещё в XVII веке и широко применялась до 1970-х годов, когда появились карманные электронные калькуляторы.
Однако у аналоговых вычислительных устройств есть известные ограничения. Главный их недостаток состоит в том, что аналоговый компьютер может решать с определённой точностью только один тип задач.
Для решения новой задачи может потребоваться другой математический метод, а значит, другая аналогия, другое устройство и другой механизм.
Люди же подходят к решению задач иначе. Человек может, скажем, написать ряд уравнений, а потом шаг за шагом преобразовать их в другие уравнения с помощью математических правил. Это хорошо знают школьники, решающие квадратные уравнения. Для такого подхода к решению задач требовался новый вид вычислительных устройств.
Паровой компьютер!
Появились и другие механические вычислительные устройства: в XVII веке «суммирующая машина» Паскаля была поистине революционным изобретением. А в 1837 году Чарльз Бэббидж придумал «аналитическую вычислительную машину», которая (если бы её удалось построить) стала бы первым программируемым компьютером: программы и данные загружались бы в неё посредством перфокарт, в ней были бы только механические детали, и она могла бы выполнять операции подобно универсальной машине Тьюринга, – однако скорость её работы была бы в сто миллионов раз меньше, чем у современного компьютера! И она приводилась бы в действие паровым двигателем…
От Тьюринга до первых современных компьютеров
Цифровой компьютер – это машина, предназначенная для того, чтобы автоматически следовать алгоритмам – подобно человеку, но гораздо быстрее. На практике это означает ввод целого числа (возможно, очень большого) и получение на выходе другого целого числа.
Почему целые числа?
Превратить текст в числа легко – например, в Американском стандартном коде для обмена информацией (ASCII) большая буква А обозначается как 65, а маленькая z – как 122. На практике нам удобно иметь дело с дробями, имеющими определённое число знаков после запятой (то есть определённую точность) – например, 99,483. То же самое число можно представить как 0,99483 × 100 (а 100 – как 10 × 10, в математической записи – 10²). Цифровому компьютеру остаётся только сохранить в памяти целое число 99483 и 2 – показатель степени, в которую нужно возвести число 10 (10²).
На самом деле компьютер обычно обрабатывает двоичные цифры (биты), принимающие только значения 0 или 1; и любые данные – числа, текст, рисунки, программы – можно представить (закодировать) в виде целых чисел в двоичной записи и сохранить в памяти компьютера в виде одного большого двоичного числа.
Математические правила, по которым работают цифровые компьютеры, основаны на универсальной машине Тьюринга. Цифровой компьютер принимает программу (список инструкций для конкретной машины Тьюринга, который можно закодировать в виде большого двоичного числа) как часть входных данных и с её помощью выполняет необходимые операции для всех входных данных. То есть «компьютер» в современном понимании – это отдельно взятая машина, способная вычислить всё, что способна вычислить машина Тьюринга, если введена нужная программа и имеется достаточно времени и памяти для её реализации.
Первый компьютер был создан в 1941 году в Германии Конрадом Цузе и назывался Z3. Вместо шестерней в нём использовались телефонные реле – следовательно, он был не просто механическим, а электромеханическим, – а данные в него вводились с помощью перфоленты. Вскоре после этого в 1946 году был изобретён первый электронный цифровой компьютер общего назначения (тьюринг-полный, то есть удовлетворяющий требованию полноты по Тьюрингу) – американский ЭНИАК. Однако внутри него были не платы с микросхемами, как у нынешних машин, а большие электронные лампы. Сам компьютер был огромным: габариты 2,4 × 0,9 × 30 метров, площадь 167 квадратных метров!