Страница 59 из 79
Глава 20
Интерлюдия. Билл Гейтс
20 августа 1983, Белвью, штат Вашингтон.
Билл качался на стуле. Родители просили его прекратить. Учителя из частной школы требовали. Профессора из Гарварда вежливо намекали, что он мешает другим студентам.
Стив позже шутил о том, что Билл бросил университет исключительно потому, что хотел качаться, и назвал метрономом Гейтса. Правда в том, что раскачивание помогало ему настроиться и сосредоточиться. Пару раз при этом он падал, иногда прямо на совещаниях, и делал вид, что так и задумано, а у него все под контролем.
Вот и сейчас он изучал чужой код в ритме метронома. Отклониться назад, зависнуть на секунду в шатком равновесии и вернуться в нормальное положение. Повторить, повторить, повторить… таков основной цикл его размышлений.
Код, надо признать, отличный. Билл выделил трех авторов, работавших над ним, не только по комментариям с указанием даты и времени внесения изменения, но и по стилю.
Фин — аккуратный и академичный, явный выходец из MIT, там всегда умели готовить программистов. Примерно половина кода его, всё, что касается непосредственно базового функционала редактирования текста.
Восемьдесят процентов оставшегося написал «Джонни», то есть Джон Харрис, бывший разработчик аркад под домашние компьютеры из компании Кена Уильямса. Его код — немного неряшливый, с кучей опечаток в комментариях и на удивление оптимальный, сражающийся за каждый такт процессора. Билл не смог поймать его хотя бы на одном недостаточно быстром действии.
Си-Си — наглый мальчишка и писал так, словно насмехался над тем, кто изучает его исходники, и использовал мексиканские ругательства в духе «просто не трожь эту переменную, пендехо, она осталась от Крейга и я не знаю, что она делает». Его код Билл мог бы охарактеризовать как «прагматичный» — он сознательно допускал небрежности там, где они не несли потерь скорости исполнения, и извинялся за них, а следующую функцию, важную для надежности, писал не хуже Джонни. Крейг — это Финсетт, у него канальи купили лицензию на код редактора.
Самоучка из трейлерного парка? Сомнительно. За его стилем чувствовались годы опыта, многолетней привычки, тысячи набитых шишек и снисходительное «я знаю Си лучше тебя».
«Не пиши так, приятель! На файле в двадцать тысяч строк сумма перевалит за 32767 и уйдет в минус! Будешь ловить этот баг месяц! В математике числа бесконечные, а шестнадцатибитные целые заканчиваются на 32767. Здесь шестнадцать бит, Карл! ШЕСТНАДЦАТЬ!» — возмущался Си-Си, закомментировав и переписав академичную строчку Крейга из алгоритма бинарного поиска, самого типового, как взятого из учебника Кнута… а ведь мальчишка прав.
Комментариев от Карла в исходниках не находилось и кто это такой, осталось непонятным. Возможно, наставник Колона. Карл Маркс, если учесть его радикальные идеи? Все же логичный вывод сделали в прессе. Роджер Фигг не на пустом месте заподозрил мальчишку в мошенничестве и присвоении чужого труда. Вот только чьего? Какого-нибудь профессора из Беркли или Стэнфорда? Того же самого, что отдал подростку алгоритм быстрой сортировки, избавленный от уязвимостей? Карла?
«Год — всегда четыре цифры, не две, бабосо. Двухтысячный наступит неминуемо», – поучал он в другом комментарии. Какой подросток вообще заглядывает на двадцать лет вперед? А взрослый? Билл невольно вспомнил все те случаи, когда и он экономил, записывая год, как 77 или 81. Надо переписать! Он взял ежедневник и записал себе задачу на будущее.
Под распечатками лежала вырезка из калифорнийской «Силикон бэй», которую подготовила Пэм Эдстром из пресс-службы. Тот же Фигг, на этот раз с более корректным интервью, напечатанным слово в слово, хоть и не без критики отвратительной коммунистической лицензии. Согласно статье, в Каналья Эдиторе восемьдесят процентов кода написал Джон Харрис по совместно составленному техзаданию. Примерно такие выводы Билл и сделал, но он видел другую истину.
Джонни написал основное мясо программы, но ее скелет — деление по модулям, шапки файлов с описанием того, что должно лежать внутри, вся архитектура решения — вышел из под руки Си-Си.
Скромность, однако, не сделала программиста непогрешимым. Следующий комментарий будто оставили специально для Билла:
'СС: Дорогой коллега. Если ты решил, что эту функцию можно ускорить, знай — нельзя. Когда лично поймешь мою правоту, оставь ниже счетчик потраченных часов для следующего бабосо, решившего, подобно мне, что он тут самый умный. И не жалуйся потом, что я не предупреждал. Потрачено часов — 14
Джонни: Все верно, быстрее не получается. Потрачено часов — 6′
Мальчишки просто не увидели очевидного способа оптимизации, им не хватило опыта и насмотрености. Возможно, Гейтс ранее переоценил их профессионализм.
Уже подзабытый немного на управляющей должности азарт программиста, знающего, как лучше, разгорелся где-то в области груди Билла. Он включил свой компьютер — на жестком диске у него имелась копия исходных кодов обеих приобретенных программ.
Запустив привычный для него ВордСтар, конкуренцию которому он надеялся составить, Билл открыл тот самый якобы не подлежащий оптимизации модуль в режиме «не-документа», то есть обычного текста без форматирования.
Поиском по тексту добрался до той самой функции. Нашел ее объявление, вернулся обратно, отыскал место вызова. Комментарии, имена переменных и операторы сливались в одинаковые строчки.
Билл прекрасно умел читать исходники, занимался программированием много лет и до сего дня никаких неудобств не испытывал. Он еще раз прокрутил текст к объявлению переменной. Черт, как там назывался второй параметр функции? Проще в распечатке посмотреть, чем прыгать туда-сюда по коду. Или…
На том же диске лежал редактор мальчишки. Почему бы заодно не проверить его в деле, раз уж видеокарту с чипом от NEC, разрекламированную Нортоном в его колонке, не так давно установили на компьютеры всех ключевых сотрудников? Билл запустил CEDT.EXE. Освоение в новой среде оказалось удивительно интуитивным и быстрым. У мексиканца нашелся настоящий талант к обустройству эргономики интерфейса. Стоило Биллу задуматься о том, что ему нужно, взгляд сам натыкался на подсказку, куда нажимать, без единой заминки. Слишком хорошо! Слишком удобно!