Джордж и код, который не взломать
Шрифт:
В XIX веке ответ на вопрос о происхождении видов предложил Чарльз Дарвин, и мы до сих пор считаем этот ответ верным. Дарвин был богат и счастлив в браке. У него были слуги, а хозяйство вела жена Эмма. Поэтому Дарвину хватало времени на научную работу, хотя у них с Эммой было десять детей, для которых самой большой радостью было ворваться в кабинет и попроситься поиграть с папой.
Дарвин понял, что подобно тому, как крестьяне вы водят новые породы домашнего скота, отбирая в качестве производителей только определённых животных, природа тоже может производить новые виды посредством механизма, который он назвал «естественным отбором». Предположим, к примеру, что распространённый вид зерноядных птиц встречается и в местностях, где у растений обычно мелкие семена, и в тех, где семена у растений крупные. Предположим также, что размеры клювов этих птиц всегда несколько различны, причём размеры клювов у потомства отчасти зависят от размеров родительских клювов: у птиц с маленькими клювами потомки с большей вероятностью будут иметь маленький клюв, а у птиц с большими клювами – большой.
Казалось бы, ничего удивительного. Однако Дарвин понял, что если от размера клюва зависит выживание и плодовитость птицы – например, при недостатке пищи, – то под действием естественного отбора клюв постепенно
Дарвин опубликовал свою теорию в 1859 году в книге «Происхождение видов» (полное название – «Происхождение видов путем естественного отбора, или Сохранение благопри-ятствуемых пород в борьбе за жизнь»; в викторианскую эпоху длинные названия были в моде). Это одна из важнейших книг в истории науки. Она изменила наше мировоззрение и не устарела до сих пор. Это длинная книга, тем не менее каждому стоит её прочесть.
Дарвин первым признал, что его теория не объясняет всех фактов. Например, как появился первый вид? Теория Дарвина может объяснить, как виды изменяются с течением времени, но не касается начала этого процесса.
Дарвин был гением в полном смысле слова. И, будучи гением, он высказал предположение о происхождении самых первых видов, которое разделяют и многие современные учёные. 1 февраля 1871 года Дарвин писал в письме другу и коллеге Джозефу Гукеру:
Часто утверждают, что в настоящее время имеются все условия для возникновения примитивных живых существ, которые имелись когда-то. Но если бы сейчас (и ах, какое большое если!) в каком-либо тёплом маленьком водоёме, содержащем все необходимые соли аммония и фосфора и доступном воздействию света, тепла, электричества и т. п., химически образовался белок, способный к дальнейшим всё более сложным превращениям, то это вещество немедленно было бы разрушено или поглощено, что было невозможно в период до возникновения живых существ.
Мы по-прежнему не знаем наверняка, как зародилась жизнь. Возможно, это и вправду произошло в одном или нескольких тёплых водоемах, как предположил Дарвин. Но с тех пор жизнь непрерывно развивалась. Шли миллионы лет. Жизнь распространялась по поверхности Земли. Живые существа становились крупнее и выносливее. Они заселили сушу и освоили воздушное простран ство. И теперь, спустя три-четыре миллиарда лет после возникновения жизни, у нас есть киты и колибри, гигантские секвойи и прекрасные орхидеи – и все остальные восемь-девять миллионов современных видов, включая нас самих. Человечество до сих пор продолжает открывать новые виды. Возможно, и ты однажды попадёшь в дальний уголок нашей прекрасной Земли, где станешь первым человеком, нашедшим новый вид!
Глава шестая
На следующий день, когда Джордж проснулся – а проснулся он поздно, – в доме было непривычно тихо. Даже негодующие крики, какими близнецы каждое утро встречали свой завтрак, не доносились с кухни. Джордж потянулся под одеялом, пошевелил пальцами ног – и вспомнил свой вчерашний день: Анни с её проектом про то, как жизнь попала на Землю из космоса, обезумевшие банкоматы, которые плюются деньгами… Надо наконец выяснить, что происходит! Спрыгнув с кровати, Джордж быстро оделся и помчался вниз.
Сцена, которую он увидел, была поистине идиллической. Юнона и Гера мирно, кротко сидели на стульчиках и ели завтрак, не плюясь и не фыркая. Он совершенно растерялся. Обычно кухня во время завтрака близнецов походила на театр военных действий. Каким образом демоны превратились в ангелов?
Мама и папа улыбались Джорджу. Видя, как вытянулось его лицо, мама совсем развеселилась.
– Мы ведь тебе говорили, что однажды они вырастут и поумнеют, – сказала она.
– Что, за одну ночь?!
– Видишь ли, – снисходительно сказал папа, – дети быстро меняются. Ты был точно та…
Но договорить папа не успел: домашний кексик, описав причудливую траекторию, врезался ему прямо в челюсть. По кухне разлетелись крошки, а близнецы залились счастливым смехом. За первым кексом последовал второй, потом третий; они бомбардировали бедного папу, как обломки космической породы – молодую Солнечную систему.
Джордж счёл это удачным моментом для бегства. Он выскользнул за дверь, ведущую из кухни в сад, и крикнул:
– Я к Анни!
Он пролез сквозь дыру в заборе и помчался к двери соседской кухни. Там, как обычно, было открыто, и Джордж влетел в дом с радостным криком:
– Приве-е-ет!
Ответный Аннин «приве-е-ет» донёсся из кабинета Эрика, где хранился Космос, компьютер высочайшего интеллекта. Со второго этажа слышались звуки скрипки – одна и та же музыкальная фраза, снова и снова. Это означало, что Сьюзен сейчас дома и готовится к концерту. Когда Анни была младше, её мама работала учительницей музыки, но недавно стала играть в оркестре и всё чаще уезжала с ним на гастроли.
Конечно же, Анни восседала на горе подушек напротив Космоса. Этот компьютер был их верным другом и помощником и не раз выручал из беды. Правда, он не всегда работал безупречно: однажды, прокладывая Джорджу и Анни путь домой, Космос не справился в одиночку, и если бы не помощь другого суперкомпьютера, друзья остались бы на веки вечные в далёкой – совсем не Солнечной! – системе планет. А ещё раньше Космос чуть не взорвался от перегрузки, вытаскивая Эрика из чёрной дыры. Случались дни, когда этот компьютер вёл себя капризно и непредсказуемо…
И сегодня был как раз такой день.
Что такое флопс?
Каждый год появляются всё более и более мощные компьютеры. Один из способов сравнить мощности двух компьютеров – проверить, сколько операций с плавающей запятой (floating point operations, сокращённо «флопс») они могут совершить за секунду.
Одна большая система
Какими бы мощными ни были сегодня процессоры, можно попробовать построить гораздо более мощный компьютер, соединив несколько процессоров вместе. Суперкомпьютер – это компьютер исключительной производительности, построенный путём объединения множества процессоров в одну большую систему. Каждый процессор выполняет свою часть работы параллельно с остальными.
Связать процессоры – значит объединить их в сеть; зачастую достаточно просто соединить компьютеры (даже на большом расстоянии) сетями, подобными телефонным, или через
Чрезвычайно параллельная задача
Для решения некоторых задач вычисления можно разбивать на части так, чтобы процессоры работали над своими «кусочками» независимо друг от друга. Такие задачи называют чрезвычайно параллельными (ещё говорят, что задачу можно «легко распараллелить»). В таких случаях сеть нужна только для того, чтобы раздать процессорам задания и в конце получить от них ответы.
Но недостаточно уметь решать такие задачи, чтобы называться суперкомпьютером, – ведь большинство интересных задач не являются чрезвычайно параллельными. Процессорам приходится обмениваться промежуточными данными; суперкомпьютер должен уметь одновременно решать и обычные задачи, и «распараллеленные» независимые задачки. Этим суперкомпьютер отличается и от обычных компьютеров, связанных в сеть, и от больших серверов.
Хороша ли сеть?
Чем качественнее сеть, тем производительнее параллельные вычисления. Качество сети определяется:
• пропускной способностью – количеством информации, которое можно передать за секунду (чем больше, тем лучше);
• задержкой – временем между отправкой сигнала и получением ответа (чем меньше, тем лучше).
Доступ к памяти
Суперкомпьютер можно получить, организовав процессоры одним из нескольких способов.
Системы с симметричной многопроцессорной обработкой (SMP – Symmetric Multiprocessor)
В этих системах процессоры единообразно подключаются к общей (разделяемой) памяти суперкомпьютера. Каждый процессор имеет доступ ко всей памяти. Сделать такую систему сложно и очень дорого, особенно если она большая.
Системы с неравномерным доступом к памяти (NUMA – Nonuniform Memory Access)
В таких системах производительность тем хуже, чем дальше процессор от памяти, которую он хочет прочитать или в которую ему нужно писать. Как и SMP, эти системы используют разделяемую (общую для всех процессоров) память, и программисту приходится заботиться о том, чтобы данные хранились как можно ближе к процессору, который их использует. Системы NUMA дешевле, чем SMP.
Интерконнект
Это специальная высококачественная сеть для соединения изолированных компьютеров (в такой сети их обычно называют узлами). Процессор в одном узле не видит памяти в других узлах, поскольку это суперкомпьютер не с общей, а с распределённой памятью. Программисту приходится добавлять в программу код для передачи данных между узлами. Суперкомпьютеры, в которых для узлов используются обычные компьютеры, называются кластерами.
Современные компьютерные системы
Зачастую современные компьютеры включают в себя элементы, которые раньше имелись только в суперкомпьютерах. Например, у одного процессора может быть несколько ядер, и каждое действует как отдельный процессор – это система SMP, где несколько ядер имеют непосредственный доступ к общей памяти. У более дорогих компьютеров есть несколько разъёмов для процессоров, каждый из которых – своего рода система
NUMA, где одному разъёму соответствует набор ядер и их память.
Графический процессор (GPU) для суперкомпьютеров
Это новшество по вкусу всем любителям компьютерных игр. Оно необычайно быстро «создаёт» пиксели для экрана во время игры. Благодаря своей архитектуре эти процессоры идеально подходят для некоторых видов задач в суперкомпьютерах.
Флопс, мегафлопс… экзафлопс!
1 мегафлопс = 1 миллион флопс.
1 гигафлопс = 1 миллиард флопс (1000 мегафлопс).
1 терафлопс = 1000 гигафлопс.
1 петафлопс = 1000 терафлопс.
1 экзафлопс = 1000 петафлопс.
Глядя на эту табличку, легко увидеть, как выросла производительность компьютеров в последние несколько десятилетий:
• 1998: компьютер с одним процессором способен достичь производительности в 500 мегафлопс.
• 2007: множество одиночных процессоров, которые могут «разогнаться» до 10 гигафлопс.
• 2013: есть компьютеры с двумя процессорами по восемь ядер, каждое из которых теоретически имеет производительность в 20 гигафлопс. Таким образом, максимальная производительность всей системы – 320 гигафлопс. По сути, это система NUMA: общая память, шестнадцать независимых ядер… Но сегодня никому и в голову не придёт называть это суперкомпьютером – разве что мы соединим в одну сеть несколько сотен таких машин.
• Существует список пятисот самых мощных суперкомпьютеров – Top500 (www.top500.org), который обновляется дважды в год. Сейчас, на момент написания книги, большинство машин из этого списка находятся на уровне нескольких сотен терафлопс.
Однако в первой строке списка -машина с 33862,7 терафлопс (33,8627 петафлопс). Это несравненно мощнее компьютеров конца XX века!
Первые экзафлопс-компьютеры могут появиться всего через несколько лет. Можешь представить себе эту мощность?!
– Он, кажется, не в духе, – наморщив нос, пожаловалась Анни.
Космос ничего не сказал (что было совсем на него не похоже), зато чихнул.
– Он что, простудился? – спросил Джордж.
– Он всё время в дурном настроении, – сказала Анни. – Ноет, что заболел. Это как-то не в его стиле.
– Да, пожалуй, это странно! А чем ты хотела с ним заняться? – Джордж придвинул стул и сел рядом с Анни.
– Своим проектом, – ответила она.
– Давай вместе! – быстро сказал Джордж.
– Давай! – Она вывела на экран две фотографии и расположила их рядом. – Ты небось думаешь, что на обеих фотографиях Эрик? А вот и нет. На одной и правда папа, то есть Эрик.
А на второй – робопапа, то есть Эрбот.
– Ты хочешь сказать, – подхватил её мысль Джордж, – что один из них живой, а второй – неживой?
– Верно, – подтвердила Анни. – Но почему так? В чём главное различие?
– Н-ну… – замялся Джордж. – Один сам решает, что ему делать, а другой нет?
– А вот и нет, – сказала Анни. – У Эрбота есть панель управления, но он запоминает все предыдущие команды и принимает решения исходя из своего опыта!
– Одному необходимы еда, вода и сон, другому нет?
– Эрботу нужна энергия, – сказала Анни. – А мой папа… Короче, это ещё вопрос, необходим ли ему сон.
Джордж рассмеялся. Эрик был знаменит тем, что ему хватало трёх часов сна в сутки. Этот факт был прекрасно известен его соседям, поскольку в предрассветные часы он предпочитал работать под громкую оперную музыку.
– А где, кстати, Эрбот? – спросил Джордж.
– Заряжается, – сказала Анни.
– Один из них дышит, – продолжал гадать Джордж, – а второй нет? У одного внутри желудок, сердце и прочие органы, а у другого провода и всё такое…