скачать книгу бесплатно
Теперь книжки светятся, будто лампочки, в параллелепипедах 3D-полок. И лампочки эти разноцветные: то, что взял Тиндал, синее, Лапин – зеленое, Федоров – желтое и так далее. Вообще-то, выглядит круто. Но с этой новой фичей добавился и баг: если чересчур сильно повернуть магазин, полки, мигнув, пропадают. Я сижу сгорбившись над кодом, тщетно пытаясь разобраться, в чем дело, но тут раздается звон колокольчика.
От неожиданности я невольно издаю удивленный писк. Вернулся Эрик и будет снова на меня орать? Или Корвина, сам гендиректор, явился наконец, чтобы обрушить свой гнев на…
Это девушка. Просунувшись в дверь наполовину и глядя на меня, она спрашивает:
– У вас открыто?
О да, девушка с каштановым каре и в красной футболке с горчично-желтым словом BAM! – да, у нас еще как открыто.
– Конечно, – отвечаю я. – Заходите. Мы работаем круглосуточно.
– Я ждала автобус на остановке, и телефон зажужжал, – кажется, мне пришел купон.
Она подходит прямо к прилавку, подталкивает ко мне свой телефон, а там на экране мое объявление в «Гугле». Моя гипертаргетированная рекламная кампания – я о ней уже забыл, но она все еще работает и нашла клиентку. На поцарапанном экране смартфона выскочил нарисованный мной купон. Ногти сверкают.
– Да! Отличный купон. Лучший!
Я говорю как-то слишком громко. Она сейчас развернется и уйдет. Удивительные алгоритмы гугловой рекламы привели ко мне настоящую красотку, а я не знаю, что с ней делать. Девушка крутит головой, осматривая магазин. На лице у нее сомнение.
Все зависит от мелочей. Разница в тридцать градусов – и эта история тут бы и закончилась. Но мой ноутбук стоит под нужным углом, а на его экране как ненормальный крутится наш 3D-магазин в двух плоскостях, словно корабль, прорывающийся сквозь космическую пустоту. Девушка смотрит на него и…
– Что это? – интересуется она, вскидывая бровь. Очень красивую темную бровь.
Эту карту надо разыграть безошибочно. Чтобы не вышло слишком занудно.
– Ну, это модель нашего магазина, но еще тут отображается, какие книжки в наличии…
– Визуализация данных! – У девушки загораются глаза. И все сомнения развеиваются. Она уже в восторге.
– Точно, – говорю я. – Именно так. Вот, смотрите.
Мы встречаемся на полпути у края стола, и я показываю ей свой 3D-магазин (он все еще пропадает, если повернуть слишком сильно). Она наклоняется поближе:
– А можно посмотреть исходный код?
Злоба Эрика удивляла, а любопытство этой девушки поражает.
– Да, конечно.
Я листаю темные окна, пока на экране не оказывается сырой файл на руби с красными, золотыми и зелеными цветовыми кодами.
– Я с этим работаю, – сообщает она, нагибаясь к экрану и вглядываясь в код. – С визуализацией данных. Можно?
Девушка показывает на клавиатуру. О да, прекрасная хакерка-полуночница, можно.
Моя лимбическая система уже привыкла к определенному (очень малому) количеству контактов с другими людьми (женского пола). И теперь, когда она стоит рядом, слегка упираясь в меня локтем, я словно пьянею. Но пытаюсь продумать свои следующие шаги. Порекомендую ей Эдварда Тафти, «Визуальное представление больших объемов информации». У Пенумбры она есть – я видел на полке. Огромный томина.
Девушка быстро листает мой код, и мне становится слегка неловко – у меня там полно комментариев типа «Ну я крут!» и «Компьютер, пришло время подчиниться моему приказу».
– Круто, – говорит она с улыбкой. – Ты, я так понимаю, Клэй?
В коде есть метод «клэй_рулит». По-моему, у каждого программиста такое есть.
– А я Кэт. Я вроде поняла, в чем проблема. Показать?
Я тут мучился часами, а эта девчонка – Кэт – вычислила мою ошибку за каких-то пять минут. Она гений. Она подробно объясняет, как отладить, приводя доводы быстро и уверенно. И, легко стуча по клавиатуре, решает проблему.
– Прости, что отобрала. – Она поворачивает ноутбук обратно ко мне. Убрав волосы за ухо, встает и говорит с напускным хладнокровием: – Ну, Клэй, и зачем ты делаешь модель магазина? – При этом ее взгляд поднимается вдоль стеллажей до самого потолка.
Не знаю, стоит ли откровенно рассказывать, насколько это странное место. «Привет, приятно познакомиться, я тут продаю нечитабельные книжки каким-то мутным старикам, сходим поужинать?» (И вдруг меня охватывает уверенность, что сейчас кто-нибудь из этих чудиков ворвется в дверь. Тиндал, Федоров и все остальные, очень вас прошу, посидите сегодня дома. Сидите и читайте.)
Я говорю не это:
– Это исторический проект. Магазин работает почти целый век. По-моему, он самый старый в городе, а может, и на всем Западном побережье.
– Обалдеть, – говорит Кэт. – «Гугл» просто младенец в сравнении.
Ну, все понятно: она из «Гугла». Значит, точно гений. А еще у нее чуть-чуть щербатый зуб, и это так симпатично.
– Обожаю такие данные, – говорит она, указывая подбородком на ноутбук. – Реальный мир. История.
В этой девушке светится искра жизни. Это мой основной фильтр при отборе друзей (девушек и не только), и от меня это высший комплимент. Я много раз пытался понять, как она загорается – какие именно факторы сходятся в холодном темном космосе, чтобы образовалась звезда. Я знаю, что выдает ее в основном лицо – не только глаза, но и брови, щеки, губы, а также соединяющие их микромышцы.
Микромышцы у Кэт очень привлекательные.
– А ты пробовал визуализацию временно?го ряда? – спрашивает она.
– Пока нет, не пробовал. – (На самом деле я даже не знаю, что это такое.)
– В «Гугле» мы их делаем для истории поисковых запросов, – поясняет она. – Это крутая тема – видно, как новые идеи вспыхивают по всему миру, как будто эпидемия. И в течение недели она угасает.
Мне очень интересно слушать, но в основном потому, что мне интересна Кэт.
Вдруг у нее на телефоне громко звякает оповещение, и она смотрит на экран.
– Ой, мой автобус, – говорит она. (Я проклинаю городской транспорт за внезапную пунктуальность.) – Визуализацию могу показать, – предлагает она. – Хочешь, как-нибудь встретимся?
Да, я очень хочу. Может, я даже сам куплю ей книгу Тафти. Заверну в коричневую бумагу и подарю. Стоп… я не сошел с ума? Книга-то дорогая. Может, есть издание попроще, в мягкой обложке. Можно купить и на «Амазоне». Хотя это глупо, я же работаю в книжном. (А «Амазон» быстро доставит?)
Кэт все еще ждет ответа.
– Конечно, – пищу я.
Она записывает свой адрес на открытке Пенумбры: katpotente@ – ну естественно – gmail.com.
– А купоном в следующий раз воспользуюсь, – обещает она, взмахнув телефоном. – Пока.
Как только она уходит, я открываю свою гипертаргетированную рекламную кампанию. Я там что, случайно отметил пункт «красивая»? (А «одинокая»?) Я вообще могу себе это позволить? Чисто в плане маркетинга это был провал: я не продал ни одной книжки, ни дорогой, ни дешевой. Более того, я должен доллар: Кэт написала адрес на открытке. Но особых поводов для беспокойства нет: из моего первоначального бюджета в одиннадцать баксов «Гугл» вычел всего семнадцать центов. За единственный показ рекламы – единственный и безупречный, который состоялся ровно двадцать три минуты назад.
Позднее, когда час ночной изоляции и вдыхание паров лигнина отрезвляют меня, я делаю две вещи.
Во-первых, пишу Кэт и спрашиваю, не хочет ли она пообедать завтра, то есть в субботу. Я иногда бываю трусоват, но верю, что железо надо ковать, пока горячо.
А во-вторых, я гуглю «визуализацию временного ряда» и начинаю работу над новой версией своей модели в надежде произвести на Кэт впечатление своим прототипом. Я люблю девушек, на которых можно произвести впечатление прототипом.
Я задумал сделать анимацию, чтобы данные о том, как брали книги, отображались в динамике, а не одновременно. Первым делом я переписываю побольше имен, названий и сведений о времени из книги учета в ноутбук. А потом начинаю свой хакатон.
Не все программирование одинаково. В обычных письменных языках есть разные ритмы и идиомы, так? В языках программирования тоже. Язык си строится на жестком императиве – примерно так и говорят компьютеры. Лисп похож на одно длинное закрученное предложение с кучей придаточных – до того длинное, что забываешь, о чем, собственно, шла речь. Про эрланг все понятно из названия: скандинавский и эксцентричный. Ни на одном из них я программировать не умею, потому что они слишком трудные.
А вот руби, мой любимый язык со времен «Нового бейгла», придумал японский программист-весельчак, поэтому руби читается как понятные дружелюбные стихи. Билли Коллинз[9 - Билли Коллинз (р. 1941) – американский поэт, американский поэт-лауреат (2001–2003), обладатель престижных наград и одна из самых известных фигур современной американской поэзии.] переоделся Биллом Гейтсом.
Хотя, разумеется, язык программирования придуман не для того, чтобы на нем просто читать, – надо еще и писать. Ты пишешь – он на тебя работает. И вот тут руби, по-моему, просто звезда.
Это как готовка. Только ты не следуешь рецепту шаг за шагом в надежде на лучшее, а можешь в любой момент вынимать ингредиенты из кастрюли и класть обратно. Можно посолить, попробовать, покачать головой и убрать лишнюю соль. Можно взять отдельно идеальную хрустящую корочку, а внутрь добавить все, что захочешь. Это уже не линейный процесс, который заканчивается успехом или (как правило, у меня) огорчительным провалом. Это кольцо, завитушка или каракуля. Игра.
Итак, добавив соли и немного масла, я к двум часам ночи получаю рабочий прототип новой визуализации. И тут же замечаю нечто странное: разноцветные огни повторяют друг друга.
Визуализация показывает, что Тиндал берет книгу с самого верха второго ряда. А через месяц Лапин берет книгу с той же полки. Через пять недель оттуда же забирает книжку и Имберт, а Тиндал тем временем уже возвращает ту и берет другую книгу снизу первого ряда. Он на шаг впереди всех.
Раньше я этой закономерности не видел, потому что биты информации разнесены в пространстве и времени, – это как если бы в музыке проходило по три часа между каждой нотой и все они игрались в разных октавах. Но когда я вывел информацию на экран и ускорил, все стало очевидно. Эти люди играют одну и ту же мелодию, или танцуют один и тот же танец, или – ну да – решают одну и ту же головоломку.
Звенит колокольчик. Это Имберт: невысокий, крепкий, черная щетина и кепка-восьмиклинка набекрень. Он кладет на прилавок то, что сдает (громадную книжищу в красном переплете). Я быстренько прокручиваю визуализацию, чтобы найти место Имберта в общем узоре. На экране загорается оранжевая лампочка, и не успевает он открыть рот, я знаю, что он попросит книгу из середины второго ряда. Это будет…
– «Прохоров», – хрипит Имберт. – «Прохоров» следующий.
Я лезу по лестнице, и на полпути у меня начинает кругом идти голова. Что тут происходит-то? В этот раз я не делаю никаких отчаянных маневров – мне бы на ногах устоять. Я беру с полки тонкую книжку в черном переплете. «Прохоров».
Имберт подает карточку – 6MXH2I – и забирает свою книгу. Звякает колокольчик, и я снова остаюсь один.
Я фиксирую обмен в книге учета, упоминая в том числе кепку Имберта и тот факт, что изо рта у него пахло чесноком. А потом пишу для неизвестного будущего работника и, может, для того, чтобы доказать самому себе, что это все реально:
В круглосуточном книжном мистера Пенумбры творятся странные дела.
Самое счастливое будущее
– …называется «Непарность в сингулярности», – говорит Кэт Потенте.
На ней та же красно-желтая футболка с надписью BAM!, а это означает, что а) она в ней спала, б) у нее несколько одинаковых футболок или в) она герой мультфильма – мне симпатичны все варианты.
«Непарность в сингулярности». Так. Я знаю (спасибо интернету), что сингулярность – это гипотетическая точка в будущем, где кривая развития технологий переходит в вертикаль и цивилизация типа перезапускается. Компьютеры становятся умнее людей, и мы разрешаем им править бал. Или они берут себе это право…
Кэт кивает:
– Приблизительно.
– Но «Непарность в сингулярности»?
– Это быстрые знакомства для умников, – поясняет она. – «Гугл» каждый месяц проводит. Соотношение мужчин к женщинам очень хорошее. Или очень плохое. Смотря кто…
– Ты ходила.
– Ага. И познакомилась там с парнем, который программирует ботов для хедж-фонда. Мы какое-то время встречались. Он очень увлекался скалолазанием. И плечистый такой был.
Хмм.
– Но бессердечный.
Мы сидим в «Гурмэ-гроте», расположенном в светящемся шестиэтажном ТЦ в центре города, рядом с терминалом кабельной дороги, хотя, по-моему, до туристов не доходит, что это торговый центр: парковки тут нет. «Гурмэ-гротом» называется фуд-корт – возможно, лучший в мире: салаты из местного шпината, тако с запеченной грудинкой и суши без ртути. К тому же он подземный, туда можно попасть прямо из терминала: даже не надо выходить на улицу. Здесь я люблю воображать, что живу в будущем, в атмосфере радиация, а на пыльной поверхности земли заправляют банды диких байкеров, ездящих на биодизеле. Прямо-таки сингулярность, да?
Кэт хмурится:
– Так будущее представляли в двадцатом веке. После сингулярности мы сможем решать такие проблемы. – Она разламывает пополам хрустящий фалафель и дает мне половинку. – И жить будем вечно.
– Да брось, – возражаю я. – Древняя мечта о бессмертии, ну…
– Да, мечта о бессмертии. И что такого? – Кэт молча жует, затем продолжает: – Давай я попробую сказать иначе. Это покажется странным, особенно потому, что мы только познакомились. Но я знаю, что я умная.
Это однозначно так…
– И ты, по-моему, тоже. Так почему это должно закончиться? Мы могли бы столького добиться, если бы у нас было больше времени. Понимаешь?
Я жую фалафель и киваю. Какая интересная девушка. Судя по ее прямолинейности, Кэт была на домашнем обучении, но в то же время она абсолютно очаровательна. Думаю, способствует ее красота. Я смотрю на ее футболку. Все же, наверное, у нее гора одинаковых.
– Чтобы верить в сингулярность, надо быть оптимистом, – продолжает она, – что тяжелее, чем кажется. Ты когда-нибудь играл в «Самое счастливое будущее»?
– Судя по названию, это японское игровое шоу.
Кэт расправляет плечи.
– Давай сыграем. Для начала представь себе будущее. Счастливое. Без ядерных бомб. Представь, что ты фантаст.
Ладно.
– Мировое правительство… никакого рака… аэроскейты.
– Давай дальше. Счастливое будущее после этого.
– Космические корабли. Вечеринки на Марсе.
– Дальше.
– «Звездный путь». Телепортация. Можно переместиться куда угодно.
– Дальше.
Я немного туплю и вдруг понимаю:
– Дальше не могу.