Читать «Круглосуточный книжный мистера Пенумбры» онлайн - страница 28

Робин Слоун

Программирование программированию рознь. У обычных письменных языков разные ритмы и идиомы, так? Ну вот, и в языках программирования то же самое. Язык под названием C весь состоит из жестких императивов, это практически голый машинный код. Язык под названием Lisp — это одно длинное, петляющее предложение, напичканное придаточными, такое бесконечное, что к концу обычно забываешь, о чем оно вообще-то было. Язык Erlang похож на свое название: эксцентричный и скандинавский. Ни на одном из этих языков я программировать не умею, они слишком трудные.

А вот Ruby, мой рабочий язык со времен «НовоБублика», разработал жизнерадостный японец, и он читается как звучные и понятные стихи. Билли Коллинз в роли Билла Гейтса.

Но, разумеется, смысл языка программирования в том, что ты его не просто читаешь: ты на нем еще и пишешь. Ты заставляешь его делать какие-то вещи. И вот тут-то, по-моему, Ruby восхитителен.

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

Так что я добавляю немного соли, чуток сливочного масла и к двум часам ночи получаю рабочий прототип моей новой визуализации. И тут же замечаю кое-что странное: огоньки бегут друг за другом.

Вот у меня на экране Тиндэлл берет книгу с верхушки стеллажа во втором ряду. Затем, в следующем месяце, книгу с той же полки просит Лапен. Спустя пять недель за ними последует Имберт — опять та же самая полка, — но к этому времени Тиндэлл уже вернул свою книгу и взял другую с нижней полки в первом ряду. Он на шаг впереди.

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

Звякает колокольчик. Это Имберт: невысокий и крепкий, в колючей черной бороде и обвисшей кепке-гавроше. Он водружает на стойку книгу (громадный том в красной обложке) и толкает ее ко мне. Я быстренько кликаю по своей модели, отыскивая место Имберта в общем узоре. По экрану скачет оранжевый огонек, и не успевает Имберт сказать и слова, а я уже знаю, что он попросит книгу из самой середины второго ряда. Это будет…

— Прохоров, — тяжело выдыхает Имберт. — Теперь мне Прохорова.

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