16 Появление машин

Станция метро Ар-э-Метье (фр. Arts et M?tiers – «Искусства и ремесла») – одна из самых странных в Париже. Туристу, оказавшемуся здесь, может показаться, что он попал в медный чрев гигантской подводной лодки. Большие красноватые заклепки идут от потолка по стенам, где также расположен десяток иллюминаторов. Посмотрев по сторонам, можно увидеть любопытные сцены, представляющие различные древние изобретения, выглядящие необычно. Эллиптические передачи, сферическая астролябия, водяное колесо соседствуют с космическим кораблем и стальным конвертором. И если бы не бесконечный поток вечно спешащих куда-то по подземным коридорам парижан, вряд ли кто-то удивился бы, увидев здесь величественную фигуру капитана Немо, сошедшего прямиком со страниц романа Жюля Верна.

Отделка вестибюля метро – это лишь начало того, что нас ждет на поверхности. Сегодня я держу свой путь в Консерваторию искусств и ремесел (фр. Conservatoire national des arts et m?tiers, CNAM), музей, в котором представлены важнейшие изобретения человечества. Первые механизированные машины, телеграф, стрелочный индикатор, поршневой манометр, голландские автоматические часы, вольтов столб, ткацкий станок, перфокарты, типографский станок, сифонные барометры – все эти изобретения из прошлого втягивают меня в головокружительный вихрь технологических открытий последних четырех столетий. Остановившись в середине парадной лестницы, я вижу аэроплан XIX в. с гигантскими крыльями, как у летучей мыши. В углу коридора стоит первый марсоход Лама, разработанный российскими учеными в XX в.

Я быстро прохожу мимо всех этих невероятных предметов и поднимаюсь прямо на второй этаж. Здесь расположена галерея лабораторных инструментов, среди которых можно найти астрономический телескоп, водяные часы, компасы, весы Роберваля, гигантские термометры и астрономические глобусы, возвышающиеся на своих осях! И вдруг замечаю в углу витрины то, зачем я сюда пришел: счетная машина Паскаля, или паскалина. Эта любопытная вещь представляет собой латунную коробку 40 см в длину и 20 см в ширину, на внешней стороне которой изображены шесть пронумерованных рядов. Этот механизм разработал в 1642 г. Блез Паскаль в возрасте всего 19 лет. Передо мной находится первая счетная машина в истории.

Первая? Чтобы быть до конца откровенным, необходимо отметить, что и до XVII в. уже были возможности делать расчеты. Так или иначе, пальцы выполняли роль первого калькулятора всех времен, а также представители Homo sapiens использовали различные аксессуары для ведения расчетов. Кости Ишанго с насечками на них, глиняные жетоны из Урука, палочки в Древнем Китае или счеты, которые были очень популярны в эпоху Античности, – все эти инструменты использовались для подсчетов и вычислений. Тем не менее ни один из этих примеров не подходит под определение, которое, как правило, дается вычислительным машинам.

Чтобы разобраться, рассмотрим детально механизм работы счетов. Этот математический инструмент состоит из множества спиц, по которым скользят костяшки. Первый стержень соответствует количеству единиц, второй – десятков, третий – сотен и так далее. Так что если вы хотите указать число 23, передвиньте две костяшки в разряде десятков и три – в разряде единиц. И если вы хотите добавить к этому числу 45 – передвиньте четыре костяшки в разряде десятков и пять – в разряде единиц, что, таким образом, даст в сумме 68.

Если при сложении цифр в одном разряде сумма становится двузначной, необходимо сделать небольшую дополнительную манипуляцию. Для того чтобы прибавить 5 к 68 на спице разряда единиц, осталась всего одна костяшка. Если на спице не хватает костяшек для выполнения действия, то на ней оставляют столько костяшек, сколько не хватило, а остальные перебрасывают в другую сторону, и добавляют еще одну костяшку в значение десятков. Таким образом, в сумме получится 73.

Это совсем не сложная манипуляция, но только с появлением счетной машины Паскаля и калькулятора началась эпоха вычислительных машин. Для того чтобы выполнить ту же самую операцию, пользуясь вычислительной машиной, уже не нужно было держать в уме числа. Такие аппараты, по сути, не выполняют вычисления самостоятельно, а просто помогают человеку фиксировать определенные значения чисел. Пользуясь же современным калькулятором, вы вообще не будете задумываться о том, как выполняются действия. Есть ли в действиях перенос цифр в соседний разряд – для вас уже не имеет значения! Больше нет необходимости держать числа в уме в соответствующих ситуациях, все сделает за вас машина.

Соответствующая этому критерию паскалина – действительно первая счетная машина в истории. Хотя механизм работы весьма специфичен и требует большого мастерства для ее изготовления, принцип работы счетной машины Паскаля достаточно прост. На верхней части машины расположены шесть колесиков, на которые нанесены деления от 0 до 9.

Первое колесико справа обозначает число единиц, второе – десятков и так далее. Над колесиками расположены шесть маленьких ячеек, по одному для каждого колесика, в которых отображаются цифры. Для того чтобы ввести число 28, необходимо просто повернуть колесико десятков на два деления по часовой стрелке и колесико единиц – на восемь делений. С помощью внутренней системы шестеренок, в области отображения в соседних взаимосвязанных ячейках отобразятся 2 и 8. И теперь, если вы захотите добавить 5 к этому числу, нет необходимости ничего держать в уме: достаточно просто повернуть колесико единиц на пять делений и, когда значение сменится с 9 на 0, значение десятков автоматически сменится с 2 на 3. Значение, отображаемое на машине, теперь равно 33.

И это работает в каждом из разрядов. Если набрать на паскалине 99 999 и повернуть колесико единиц на один оборот, то на аппарате отобразится 100 000, без необходимости в дополнительных действиях!

После Паскаля многие изобретатели пытались усовершенствовать его изобретение, чтобы с его использованием можно было сделать быстро и эффективно больше действий. В конце XVII в. Лейбниц был одним из первых, кто разработал механизм для осуществления операций умножения и деления. Его система была несовершенной и выдавала неверные решения в некоторых частных случаях. Только в XVIII в. его идеи воплотились в полном объеме. Благодаря умениям и воображению изобретателей были разработаны несколько более надежных и эффективных прототипов. Однако из-за сложности механизмов такие машины оказались весьма большими, почти с комод размером.

В XIX в. счетные машины стали более доступны и распространены примерно так же широко, как и другие, похожие на них аппараты – пишущие машинки. Многие бухгалтерские фирмы, предприниматели и обычные торговцы начинают пользоваться калькуляторами, которые быстро стали неотъемлемой частью интерьера и были незаменимы в работе. Становится сложно представить себе, как люди до сих пор обходились без них.

Продолжая ходить по музею, я вижу ряд машин, современных паскалине. Здесь представлены арифмометр Тома де Кольмара, машина умножения Леона Болле, полихромной арифмограф Дюбуа и комптометр Фелта и Тарранта. Одним из наиболее популярных аппаратов, пользовавшимся большим успехом, был арифмометр, который разработал в России шведский инженер Вильгодт Теофил Однер. Эта машина состоит из трех основных элементов: верхняя часть, на которой посредством небольших рычагов выставляются необходимые числа, нижняя часть, состоящая из каретки, способная смещаться в горизонтальном направлении и на которой отображается результат операции, а справа расположена рукоятка, при вращении которой производятся арифметические действия.

При каждом повороте рукоятки число в верхней части добавляется к числу, уже отображаемому на нижней каретке. Для того чтобы произвести вычитание, достаточно повернуть рукоятку в другую сторону.

Теперь представьте, что вам необходимо выполнить умножение 374 ? 523. Укажите число 374 в верхней части и поверните рукоятку три раза. В нижней части отобразится 1122, результат операции 374 ? 3. Передвиньте теперь каретку на разряд десятков и поверните рукоятку еще два раза. Получится 8602, что соответствует произведению 374 и 23. Передвиньте каретку еще на один разряд – до сотен – и поверните рукоятку на пять оборотов, и вы получите результат: 195 602. Немного потренировавшись, вы сможете производить умножение за несколько секунд.

В 1834 г. на ум английского математика Чарльза Баббеджа приходит по меньшей мере нелепая идея совместить счетную машину с ткацким станком! В те годы работа ткацкого станка претерпела ряд усовершенствований. Одним из них стало внедрение перфокарт, что обеспечило использование одного станка для изготовления тканей с различными узорами, не изменяя его параметры. В зависимости от наличия или отсутствия отверстия в карте, шарнирный крюк проходит или не проходит, а уточная нить проходит выше или ниже основной ткани. Таким образом, достаточно перенести желаемый рисунок на перфокарту и поместить ее в машину.

Исходя из свойств этой модели, Чарлз Бэббидж замыслил создать механический калькулятор, способный не только осуществлять такие действия, как, например, сложение или умножение, но и адаптироваться и выполнять миллионы различных операций в зависимости от того, какая перфокарта будет в него вставлена. Если быть более точным, эта машина может выполнять любые полиномиальные действия, то есть расчеты, сочетающие в произвольном порядке четыре основные операции и возведение в степень. Аналогичным образом тому, как на паскалине нужно было выполнять одни и те же манипуляции, независимо от исходных чисел, машина Бэббиджа позволяла производить одни и те же манипуляции, независимо от выполняемых действий. Больше не было необходимости, как в случае, например, с арифмометром Однера, вращать рукоятку в противоположном направлении в зависимости от того, что нужно выполнить – сложение или вычитание. Достаточно просто записать необходимые действия на перфокарте, и машина сама обо всем позаботится. Благодаря этой революционной функции изобретение Бэббиджа принято считать первой в истории вычислительной машиной.

Использование такой машины бросало новый вызов. Чтобы выполнить расчет с ее помощью, необходимо было обеспечить возможность изготовления соответствующих перфокарт, состоящих из последовательности отверстий и сплошных мест, которые улавливает механизм, вследствие чего будут выполняться все операции действие за действием. Таким образом, пользователь машины должен перед началом ее использования создать соответствующую перфокарту.

Разработкой устройства, способного переводить требуемые вычисления на язык математики, занималась британский математик Ада Лавлейс, которая вела исследования в данной области. Она исследовала функционал машины и пришла к выводу, что сам Бэббидж не представлял ее потенциал. Лавлейс создаст сложный код для вычисления последовательности Бернулли, что было чрезвычайно полезным в исчислении бесконечно малых величин последовательности, обнаруженной за более чем сто лет до того швейцарским математиком Якобом Бернулли. Этот код принято считать первой компьютерной программой, что делает, таким образом, Лавлейс первым программистом в истории.

Ада Лавлейс умерла в 1852 г. в возрасте 36 лет. Чарльз Бэббидж на протяжении всей жизни пытался построить свою машину, но умер в 1871 г., так и не дождавшись завершения изготовления ее прототипа. Только в XX в. удалось наконец увидеть работу машины Бэббиджа в действии. Наблюдать за одним из таких калькуляторов – это поистине потрясающее и чарующее зрелище. Его внушительный размер (высотой примерно в два метра и шириной в три) и работа сотен шестеренок, которые движутся внутри, одновременно поражает и изумляет.

Незаконченный прототип аппарата, разработкой которого занимался британский ученый, в настоящее время хранится в Музее науки в Лондоне. Функционирующую копию, воспроизведенную в начале XXI в., можно увидеть в Музее компьютерной истории в Маунтин-Вью, штат Калифорния.

В XX в. использование вычислительных машин достигнет такого уровня, о котором Бэббидж и Лавлейс даже не могли подумать. Калькуляторы найдут свое применение для решения как самых древних, так и совсем новых математических задач.

С одной стороны, исчисление бесконечно малых величин и мнимые числа позволили описать в виде уравнений электромагнитные явления, которые вскоре будут применены в электронных устройствах. С другой стороны, в XIX в. были заново подняты вопросы, затрагивавшие фундаментальные основы математики, аксиомы и рассуждения в доказательствах. Так, с одной стороны, у машин появилась высокоэффективная инфраструктура, а с другой – возможность осуществлять простейшие действия для нахождения решения более сложных задач.

Одним из главных деятелей этой революции был британский математик Алан Тьюринг. В 1936 г. он опубликовал статью, в которой провел параллель между возможностью доказать теорему с помощью математики и способностью найти решение с помощью вычислительных машин с использованием достижений информатики. Он впервые описывает принцип действия машины, впоследствии названной в его честь, который до сих пор широко используется в теоретических основах вычислительной техники. Машина Тьюринга была теоретической конструкцией. Британский математик не занимался разработкой конкретных механизмов, с помощью которых такая машина могла бы работать. Он всего лишь оценивал основные операции, которые могли бы выполняться на его машине, и задавался вопросом, какой результат можно получить, комбинируя их. Здесь прослеживается четкая аналогия с тем, как в математике, исходя из сформулированных аксиом, ученые затем пытаются вывести теоремы, основываясь на них.

Набор инструкций, которые задаются машине для достижения результата, называется алгоритмом. Этот термин произошел от латинского варианта написания имени аль-Хорезми. Необходимо отметить, что вычислительные алгоритмы будут в значительной степени опираться на решения задач, известные уже с давних пор. Помните, как аль-Хорезми в своей книге «Китаб аль-джебр ва-ль-мукабала» не только рассматривал абстрактные математические объекты, но и давал практические рекомендации жителям Багдада, как искать решение повседневных проблем? Так же вычислительной машине нет необходимости объяснять теорию, которую она не в состоянии понять. Для машины необходимо только, чтобы ей задали соответствующие установки, какие расчеты в каком порядке производить.

Ниже представлен пример алгоритма, который задается вычислительной машине. Допустим, у этой машины есть три ячейки памяти, в которые можно внести соответствующие числа. Сможете ли вы посчитать, каков будет результат этого алгоритма?

Этап A. Введите число 1 в ячейку памяти № 1, а затем перейдите к шагу B.

Этап B. Введите число 1 в ячейку памяти № 2, а затем перейти к шагу C.

Этап C. Введите в ячейку памяти № 3 сумму чисел, находящихся в ячейке памяти № 1 и ячейке памяти № 2, а затем перейдите к шагу D.

Этап D. Введите в ячейку памяти № 1 число из ячейки памяти № 2, а затем перейдите к шагу E.

Этап E. Введите в ячейку памяти № 2 число из ячейки памяти № 3, а затем перейдите к шагу C.

Можно заметить, что машина будет зациклена, так как на этапе Е она возвращается к этапу C. Таким образом, этапы C, D, E будут повторяться бесконечно.

Ну что? Вы поняли, что таким образом рассчитывает машина? Нужно совсем немного времени для того чтобы расшифровать полученную последовательность чисел. Вы можете догадаться, что этот алгоритм описывает последовательность чисел, которые нам уже хорошо известны, а именно числа Фибоначчи![21] На этапах А и В были введены первые два члена последовательности: 1 и 1. На этапе C вычисляется сумма двух предыдущих чисел. На этапах D и Е в память заносятся последующие числа из ряда таким образом, чтобы алгоритм мог работать циклично. Если вы заходите проверить, как работает данный алгоритм, то сможете убедиться, что получится следующая последовательность чисел: 1, 1, 2, 3, 5, 8, 13, 21 и т. д.

Несмотря на то, что алгоритм выглядит достаточно просто на первый взгляд, машина Тьюринга все еще не способна его обработать. В соответствии с определением, данным их автором, эта машина не может осуществлять операцию сложения, как это указано на этапе C. В ее функции входят только внесение, прочтение и замена элементов в памяти в соответствии с инструкциями на каждом этапе. Таким образом, можно задать ей алгоритм сложения, согласно которому числа складываются в соответствии с их разрядами и запоминанием чисел в уме, по аналогии со счетами. Другими словами, сложение не является частью аксиоматики машины, а это уже одна из ее теорем, которые должны иметь свой алгоритм для использования. После того как этот алгоритм будет составлен, он может быть использован на этапе C, и машина Тьюринга, таким образом, вычислит числа Фибоначчи.

Повышая сложность задач, можно научить машину Тьюринга выполнять операции умножения, деления, возведения в квадрат, извлечения квадратного корня, находить решения уравнений и тригонометрические соотношения, вычислять приближенное значение числа ?, определять декартовы координаты геометрических фигур или исчислять бесконечно малые величины. Таким образом, при условии составления соответствующих алгоритмов машина Тьюринга способна решать любые математические задачи, которые мы уже успели рассмотреть, причем точность таких расчетов будет значительно выше.

Теорема о четырех красках

Возьмем карту территории, состоящую из нескольких областей, отделенных друг от друга границами. Какое минимальное количество цветов необходимо использовать при их раскрашивании, чтобы две соседних области всегда были разного цвета?

В 1852 г. южноафриканский математик Фрэнсис Гутри задался этим вопросом и высказал предположение, что для раскрашивания любой карты достаточно четырех цветов. После него многие ученые пытались доказать это утверждение, но никому не удавалось этого сделать на протяжении более чем столетия. Получилось, однако, достичь некоторого прогресса, в результате чего установлено, что все возможные карты могут быть сведены к 1478 отдельным случаям, каждый из которых требует проведения множества проверок. Один человек или даже целая команда людей не сможет проверить все возможные варианты. Для этого не хватило бы и целой жизни. Представьте разочарование математиков, у которых есть метод для доказательства или опровержения гипотезы, но нет достаточного количества времени для реализации соответствующей задачи!

В 1960-х гг. идея использовать компьютер начинает зарождаться в сознании некоторых ученых, и наконец в 1976 г. два американца, Кеннет Апел и Вольфганг Хакен, объявили, что они доказали теорему. Потребовалось более 1200 часов на проведение расчетов и было проведено 10 миллиардов элементарных операций на вычислительной машине, чтобы перебрать все возможные варианты для 1478 типов карт.

Оглашение этого результата имело эффект разорвавшейся бомбы в математическом сообществе. Можно ли доверять этому новому типу «доказательств»? Можем ли мы принять действительность доказательства такой длины, которое ни один человек в мире не смог бы дочитать до конца? До какой степени можно доверять машинам?

Эти вопросы вызывают много споров. В то время как одни утверждают, что мы не можем быть на 100 % уверены в том, что машина не ошибется, другие отвечают им, что то же самое можно было бы сказать и о людях. Неужели электронный механизм менее надежен, чем биологический механизм вида Homo sapiens? Данные, полученные с помощью машины из металла, менее надежны, чем доказательства, полученные машиной из плоти и крови? Мы уже неоднократно были свидетелями того, как математики, зачастую даже самые великие, допускали ошибки, которые обнаруживались только спустя какое-то время. Должно ли это заставить нас усомниться в правильности самого математического знания? В работе машины, несомненно, могут случиться неполадки, в результате чего будут допущены ошибки, но, если ее надежность по крайней мере равна человеческой (а зачастую она выше), нет никаких оснований отказываться от использования результатов, полученных с ее помощью.

Сегодня математики научились доверять компьютерам, и большинство из них в настоящее время считает действительным доказательство теоремы о четырех красках. Многие другие результаты были также получены с помощью компьютеров. Тем не менее прибегать к этому методу доказательства считается нежелательным. Краткое доказательство, сделанное без применения вычислительной техники, считается более красивым. Поскольку цель математики – изучение абстрактных объектов, доказательства, выведенные человеком самостоятельно, более наглядны и позволяют лучше понять саму их суть.

10 марта 2016 г. весь мир устремил свои взгляды в сторону Сеула. Здесь проводился долгожданный матч-реванш лучшего игрока в мире по игре го, корейца Ли Седоля, против компьютерной программы AlphaGo (Альфа Гоу). Игра транслировалась в прямом эфире в Интернете и на нескольких телевизионных каналах, за ней наблюдали сотни миллионов человек по всему миру. Атмосфера была напряженной. Никогда еще компьютер не побеждал человека на таком уровне.

Го считается одной из самых сложных игр для восприятия машиной. Стратегия требует от игроков большой доли интуиции и нестандартного мышления. И даже если машины очень сильны в математике, гораздо сложнее найти алгоритмы, имитирующие инстинктивное поведение. Другие популярные игры, такие как шахматы, проще для программирования. Вот почему компьютер «Голубой гигант» (Deep Blue) смог обыграть российского чемпиона по шахматам Гарри Каспарова в 1997 г. в матче, который также вызвал большую шумиху. В других играх, таких как шашки, компьютерам даже удалось разработать стратегию, при которой обыграть машину невозможно. Так, сейчас ни один человек не сможет обыграть компьютер в шашки. Играя идеально, большее, на что можно рассчитывать, – это сыграть вничью. Среди сложных стратегических игр в противостоянии по го людям удавалось сдерживать натиск машин вплоть до 2016 г.

Спустя час игры необходимо было сделать тридцать седьмой ход, и игра выглядела непримиримой. Именно тогда ход AlphaGo удивил всех специалистов, которые следили за игрой. Компьютер решил поставить свой черный камень в положение O10. Комментатор, который освещал эту игру в Интернете, сделал большие глаза. Затем он установил камень на своей демонстрационной доске и нерешительно продолжил. Он перепроверил сделанный компьютером ход и в итоге разместил его на своей доске. «Это удивительный ход!» – воскликнул он с недоуменной улыбкой. «Это должно быть ошибкой», – сказал второй комментатор. Ведущие специалисты со всего мира также выразили изумление. Компьютер только что сделал огромную ошибку или это настолько гениальный ход? Через три с половиной часа и спустя сто семьдесят четыре хода, ответ был получен: корейский чемпион повержен, машина победила.

Какими только прилагательными ни называли знаменитый 37-й ход после окончания игры. Креативный. Уникальный. Захватывающий. Ни один человек не сыграл бы так, потому что в соответствии с традиционной стратегией этот ход считается плохим, но все же он привел к победе! Возникает вопрос: как компьютер, который лишь следует алгоритму, написанному людьми, может сделать креативный ход?

Ответ на этот вопрос заключается в новых типах алгоритмов обучения. Программисты на самом деле не научили компьютер играть. Они научили его учиться играть! Во время тренировок AlphaGo потратил тысячи часов, играя против себя же самого, в результате чего вывел ходы, приводящие к победе. Еще одной его особенностью стало введение элемента случайности в его алгоритм. Количество возможных комбинаций в го настолько велико, что их невозможно просчитать даже с помощью компьютера. Так, AlphaGo выбирает, какой сделать следующий ход, на основании теории вероятностей. Компьютер использует небольшую выборку из всех возможных комбинаций и таким же образом на основании полученных выводов, сделанных исходя из данных по этой небольшой группе, определяет ходы, которые с наибольшей вероятностью приведут к победе. Это и есть часть тайны интуиции и оригинальности AlphaGo: не думать систематически, а соотносить возможные сценарии развития в соответствии с их вероятностью.

Помимо стратегии игры компьютеры, оснащенные в той или иной степени сложными и производительными алгоритмами, сегодня, кажется, способны превзойти людей в большинстве их навыков. Они водят машины, участвуют в хирургических операциях, могут создавать музыку или рисовать неповторимые картины. Трудно представить себе вид человеческой деятельности, который не может быть реализован с технической точки зрения машиной, управляемой подходящим алгоритмом.

На фоне такого стремительного развития в последние несколько десятилетий кто знает, на что будут способны компьютеры будущего? И кто знает, возможно, когда-нибудь они сами сумеют изобрести новый вид математики? В настоящее время математика в целом является слишком сложным предметом для раскрытия компьютерами своего творческого потенциала. Их использование носит главным образом технический и вычислительный характер. Но возможно, однажды потомок AlphaGo откроет новую теорему, подобно 37-му ходу своего предшественника, и оставит в изумлении всех величайших ученых планеты. Трудно предсказать, на что окажутся способны машины завтрашнего дня, но будет странно, если они не преподнесут нам ничего нового.