Шрифт:
Интервал:
Закладка:
— Что это? — спрашивает она, подняв бровь.
Прекрасную темную бровь.
Ага, теперь я должен все сделать как надо. Не показаться конченным ботаном.
— Ну, это модель вот этого магазина, и тут видно, какие книги можно…
У девушки загораются глаза:
— Визуализация данных!
Недоверия как не бывало. Она чем-то внезапно довольна.
— Точно, — подтверждаю я. — Именно она. Вот, глядите.
Двинувшись навстречу друг другу, мы встречаемся на торце стойки, и я показываю 3D-книжный, который по-прежнему исчезает, если слишком раскрутится. Она наклоняется к экрану.
— Можно посмотреть исходный код?
Если злоба Эрика удивляла, то любопытство этой гостьи просто изумляет.
— Конечно, — отвечаю я и тасую темные окошки, пока экран не заполняется чистым Ruby, пестрящим красными, золотыми и зелеными фразами.
— Этим я занимаюсь на работе, — говорит девушка, нависая над экраном и вглядываясь в код. — Визуалом. Не против?
Она показывает на клавиатуру. Ха, нет, прекрасная ночная хакерша, я не против.
Моя лимбическая система настроена на определенный (очень низкий) уровень контактов с людьми (женщинами). И оттого что она стоит рядом и слегка касается меня локтем, я чувствую себя практически пьяным. Я пытаюсь продумать дальнейшие действия. Я посоветую ей «Визуальное отображение количественных характеристик» Эдварда Тафти — я ее видел на полке.
Здоровенная.
Девица быстро прокручивает мой код, а мне немного неловко, поскольку там внутри масса комментов типа «Вот так, блин!» или «давай, железяка, делай что велено».
— Великолепно, — говорит она, улыбаясь. — А вы, должно быть, Клэй?
Она это увидела в коде — там есть алгоритм под названием «клэй_молодчина». Наверное, такие бывают у каждого программиста.
— А я Кэт, — представляется она. — Кажется, я нашла, где сбой. Хотите, покажу?
Я колупался не один час, а эта девчушка — Кэт — нашла баг в моей модели за пять минут. Она гений. Объясняя мне процесс отладки, показывает ход своих рассуждений, быстрых и уверенных. И потом — цок, цок — глюк исправлен.
— Прости, я захапала, — говорит она, поворачивая ноут ко мне.
Убирает прядь волос за ухо, выпрямляется и заявляет с оперетточной серьезностью:
— Ну, Клэй, и зачем же ты ваяешь модель этого магазина?
На этих словах ее взгляд убегает по стеллажам к самому потолку.
Я не знаю, стоит ли быть с ней откровенным насчет полнейшей странности этого заведения. «Привет, рад познакомиться, я продаю старым чудакам книги, которые невозможно прочесть — не хотите со мной поужинать?» (Внезапно меня пронизывает уверенность, что один из этих чудаков вот-вот ввалится в двери. Прошу вас, Тиндэлл, Федоров, все остальные: сегодня не выходите из дому. Не бросайте чтения.)
Я захожу с другой стороны:
— Это своего рода исторический сюжет, — говорю я. — Этот магазин работает уже почти сто лет. Думаю, он старейший в городе — а то и на всем Западном побережье.
— Занятно, — говорит она. — Гугл по сравнению с этим просто дитя.
Вот и объяснение: девчушка из Гугла. Так что она и взаправду гений. А еще у нее мило обколот край зуба.
— Люблю данные такого типа, — она показывает подбородком в сторону ноута. — Данные о реальном мире. Старые данные.
В этой девчонке есть искра жизни. Это мой главный критерий отсева для новых знакомцев (девушек и не только) и самый лучший комплимент, какой я только могу сказать. Я много раз пробовал вычислить, что зажигает эту искру — какой букет условий должен сложиться в холодном черном космосе, чтобы возникла звезда. Я знаю, что дело главным образом в лице — и это не только глаза, но и брови, щеки, рот и микромышцы, соединяющие это все вместе.
У Кэт они такие симпатичные.
Она спрашивает:
— А ты пробовал написать визуализацию с повременной динамикой?
— Нет пока, не совсем, нет.
На самом деле я даже не знаю, что это такое.
— Мы в Гугле пишем ее для поисковых логов, — продолжает Кэт. — Это клево: ты видишь, как новые идеи вспыхивают и разбегаются по миру, будто маленькие эпидемии. А потом все выгорает за неделю.
Все это кажется мне очень интересным, но прежде всего потому, что мне очень интересна эта девушка.
Телефон Кэт бодро пикает, и она смотрит на экран.
— Ой, — говорит она. — Мой автобус.
Я проклинаю городской транспорт Сан-Франциско за внезапную пунктуальность.
— Я могу показать тебе эти штуки с временной визуализацией, — предлагает Кэт. — Хочешь, увидимся как-нибудь?
Ой, вообще-то да, хочу. Может быть, я осмелею и куплю ей Тафти. Я принесу его завернутым в коричневую бумагу. Погодите — а это не подозрительно? Книжка-то дорогая. Может, есть издание попроще, в мягкой обложке. Можно глянуть на Амазоне. Вот нелепость, я ведь в книжном работаю. (Может ли Амазон срочно доставить заказ?)
Кэт ждет моего ответа.
— Конечно, — скриплю я.
Она пишет свой мейл на одной из открыток Пенумбры: [email protected], естественно, gmail.com.
— Купон сэкономлю до другого раза, — она машет телефоном.
— Пока.
Едва она исчезает, я лезу в настройки своей супертаргетированной кампании. Не выставил ли я там нечаянно галочку в графе «красавица»? (А что насчет графы «не замужем»?) Могу ли я позволить себе такие запросы? В чисто маркетинговом смысле моя кампания провалилась: я не продал ни одной книги: ни дорогой, ни вообще какой-либо. Более того, я влетел на доллар, из-за подписанной открытки. Но тревожиться не о чем: из моего исходного бюджета в одиннадцать баксов Гугл удержал только семнадцать центов. Взамен я получил единственный показ — единственный идеальный показ, — случившийся ровно двадцать три минуты назад.
Позже, когда час ночного одиночества и вдыхания лигнина меня немного отрезвляет, я совершаю два действия.
Первое: я пишу Кэт и спрашиваю, как она насчет пообедать завтра, то есть в субботу. Может, я немного трусоват, но ковать я стараюсь, пока горячо.
Второе: я гуглю повременную динамику и начинаю работать над новой версией модели, надеясь, что, может быть, прототип впечатлит Кэт. Меня не на шутку увлекает тот тип девушек, которых можно впечатлить прототипом.
Идея в том, чтобы не просто показать, какие книги взяты сейчас, а анимацией изобразить, какие и когда вообще брались. Сначала я перекидываю дополнительные имена, названия и даты из моего журнала в ноут. Затем приступаю к работе.
Программирование программированию рознь. У обычных письменных языков разные ритмы и идиомы, так? Ну вот, и в языках программирования то же самое. Язык под названием C весь состоит из жестких императивов, это практически голый машинный код. Язык под названием Lisp — это одно длинное, петляющее предложение, напичканное придаточными, такое бесконечное, что к концу обычно забываешь, о чем оно вообще-то было. Язык Erlang похож на свое название: эксцентричный и скандинавский. Ни на одном из этих языков я программировать не умею, они слишком трудные.
А вот Ruby, мой рабочий язык со времен «НовоБублика», разработал жизнерадостный японец, и он читается как звучные и понятные стихи. Билли Коллинз[9] в роли Билла Гейтса.
Но, разумеется, смысл языка программирования в том, что ты его не просто читаешь: ты на нем еще и пишешь. Ты заставляешь его делать какие-то вещи. И вот тут-то, по-моему, Ruby восхитителен.
Представьте, что вы готовите еду. Но вам не нужно шаг за шагом следовать рецепту, уповая на лучшее, а можно добавлять и вынимать ингредиенты из котла в любой момент. Посолил, попробовал, покачал головой и достал соль обратно. Можно испечь идеальную хрустящую корку отдельно, а уж потом добавить внутрь что хочешь. Это уже не линейный процесс, оканчивающийся успехом или (в моем случае, как правило) обидным провалом. Нет, это цикл, или вензель, или легкая завитушка. Это игра.
Так что я добавляю немного соли, чуток сливочного масла и к двум часам ночи получаю рабочий прототип моей новой визуализации. И тут же замечаю кое-что странное: огоньки бегут друг за другом.
Вот у меня на экране Тиндэлл берет книгу с верхушки стеллажа во втором ряду. Затем, в следующем месяце, книгу с той же полки просит Лапен. Спустя пять недель за ними последует Имберт — опять та же самая полка, — но к этому времени Тиндэлл уже вернул свою книгу и взял другую с нижней полки в первом ряду. Он на шаг впереди.
Прежде я не замечал этого сценария, потому что он растянут во времени и пространстве, как музыкальная пьеса, в которой между нотами проходит по три часа, а все ноты в разных октавах. Но теперь, спрессованный и ускоренный на экране моего ноута, он стал очевиден. Они все играют одну и ту же мелодию, или танцуют один и тот же танец, или — да — разгадывают один и тот же ребус.
Звякает колокольчик. Это Имберт: невысокий и крепкий, в колючей черной бороде и обвисшей кепке-гавроше. Он водружает на стойку книгу (громадный том в красной обложке) и толкает ее ко мне. Я быстренько кликаю по своей модели, отыскивая место Имберта в общем узоре. По экрану скачет оранжевый огонек, и не успевает Имберт сказать и слова, а я уже знаю, что он попросит книгу из самой середины второго ряда. Это будет…
- Заколдованный замок (сборник) - Эдгар По - Детектив
- Все вернется - Марина Серова - Детектив
- Экспонат руками не трогать - Мария Очаковская - Детектив
- Ювелирная работа - Светлана Алешина - Детектив
- Древнее хобби - Марина Серова - Детектив
- Пустячок, а приятно - Марина Серова - Детектив
- Пленница кукольного дома - Надежда Зорина - Детектив
- Золото ночного Будапешта - Марина Белова - Детектив
- Стрела, попавшая в тебя - Алена Белозерская - Детектив
- Дверь в темную комнату - Марина Серова - Детектив