Утро началось с того, что я обнаружил лежащую на моей раненой ноге кошку. Ту самую, черную. Вот же Каналья! Как она к нам в дом пробралась?! И болеть перестало! Совсем!
– Какая прелесть! – одними губами прошептала Линда и почесала зверька за ушком. Комнату тут же наполнило громкое мурчание, будто Корвус за стенкой включился, хотя в остальном Джи-ай Джейн, она же Полночь, она же Клякса и Фишка даже не шевельнулась.
Так-то пускать к себе в постель уличную кошку негигиенично. Нам еще в школе объясняли, что не стоит гладить уличных котиков – от них можно подхватить лишай и множество других неприятных болячек.
Но, во-первых, Каналья не уличная – наоборот, у нее больше домов, чем у некоторых латиносов. Во-вторых, идеально чистое и здоровое животное, с первого взгляда заметно. Наверняка кто-то из многочисленных хозяев уже возил бестию к ветеринару. В-третьих, поздняк метаться, никакое боржоми моим почкам уже не поможет после того, как кошечка провела ночь в нашей постели. Понять бы еще, как эта милота к нам в дом пробралась. Окна-двери ведь закрыты. Кошки – это жидкость, как известно, вот и просочилась через какое-нибудь вентиляционное отверстие.
Итак, сегодня у нас первый учебный день. У меня в универе, у Линды в школе. И, казалось бы, не дети уже, а все равно волнительно. Вернуться на студенческую скамью, пусть и не во вполне официальном статусе. Как это называется? Вольный слушатель?
Но если у девушки занятия только вечером, то вводная лекция по Паскалю у меня в обеденные часы, ближе к вечеру вторая, более важная, по Си. Времени еще полно, но и дел много. После пробежки с Дюке повторил попытку дозвониться до Джона и наконец-то успех.
– Привет, готов начать захватывать мир инструментов для разработки? – поздоровался я.
– Ага. Я думаю сосредоточиться на нашем линтере. На его оптимизации. Переписать часть кода на ассемблере…
– Отлично. Но мы пойдем дальше. Я хочу создать текстовый редактор, который будет анализировать код на лету и показывать ошибку сразу, как программист ее допустил. Амбициозно?
– Крис, это невозможно! У компьютера не хватит ресурсов. У нас тут не мейнфрейм.
– И я о том. Потребуется оптимальный код. Первая задача для тебя – найти исходники какого-нибудь редактора и разобраться, как он написан. Вторая – осваивать язык Си. Найди, у кого одолжить компилятор и купи книгу Кернигана и Ритчи.
– Это же язык для разработки под юникс. Мы снова возвращаемся к мэйнфреймам.
– Пройдет десять лет и Си будет повсюду, поверь мне. Лучшего компромисса между скоростью написания кода и производительностью еще долго никто не придумает. Я записался на курс языка в Беркли, но пока что и так всё понятно.
Наверное, беседа по межгороду влетит мне в копеечку, но целый час проболтали о чисто технических подробностях создания текстового редактора. С разработкой под IBM PC Джон пока плавал, но энтузиазмом обладал заразительным.
– Кен сильно орал из-за твоего решения? – спросил я в конце беседы.
– Я пообещал ему, что мы с тобой разрешим Сьерре пользоваться созданными инструментами и Кен успокоился. Мы ведь разрешим? Я не просчитался?
– Стоило согласовать со мной, но я с самого начала так собирался поступить.
Джон молодец, а батька – хитрый жучара. Вот у Кена пригорит, когда он узнает про лицензию GPL и открытый исходный код. Тоже меня в коммунизме обвинять начнет, но пока я опасными речами даже самого Джона смущать не стал.
Почему я спустил работу над Каналья Эдитором Джону? Нельзя объять необъятное, вот почему. Сам пока начну Каналья Коммандер на досуге ковырять, он попроще будет. Ну и про игры не забываем, найду еще пару толковых кодеров и активно займусь ими. Таков путь!
Для поездки на лекцию я выбрал лоурайдер. Тойота комфортнее и удобнее во всём, и будь у меня выбор, я поменял бы понтовую фиолетовую тачку на еще одну Селику, но это машина Линды, ей еще в школу сегодня вечером ехать, а второе занятие, по языку Си, у меня начинается поздновато, уже после шести.
Университетский корпус Уиллер Холл напомнил мне политех. Но не тот, что в Сан Вэлли, и даже не Воронежский, а Питерский СПбПУ. Примерно в том же стиле здание. Колонны, лестница, лепнина, светлый гранит.
На ступеньках цыганский табор собрался – куча молодежи в пестрых шмотках, многие в банданах. На гитарах бренчат… “Проклятый старый дом”! Я аж остановился и послушал – ну так и есть, творчество Горшка и Князя, принесенное мной в эти времена в переводе гота с Ютуба. Фальшивил латинос, игравший песню, дико, акцент такой, что вместо любого слова ждешь “орале” или “карамба”, но всё одно та самая узнаваемая музыка.
– Крутяк, да? – по-дружески толкнул меня в плечо смуглый латинос в вельветовом пиджаке, лет двадцати с небольшим. – Это наш карналь маэстро Коламбус сочиняет.
– Орале! – не то, чтобы их латинское выражение удивления так плотно вошло в мой лексикон, но очень уж к месту пришлось.
– Именно так, кало! Давно тут? Вступил уже МЕЧА?
– Куда? Извини, я не в теме, первый день на занятиях.
– Оно и видно! Я Карлос Гуерра, из актива “Мувименто Естудиантил Чикано де Астлан”! Вступай к нам, брат, только МЕЧА защитят твои права! Гегемония габачо пытается стереть нашу историю, карналь. Нам нужна абсолютная сознательность в учебных планах, иначе этот университет наплодит еще больше вендидос!
– Орале! – хором подтвердили его товарищи.
– Да-да, вендидос не пройдут! – сказал я им то, что они хотели услышать. – Меня зовут Крис, извиняюсь, опаздываю на лекцию.
– Ола, Крис! – донеслось мне вслед разношерстное.
– Найди нас в библиотеке чикано! – добавил Карлос.
У них своя библиотека есть! Какая прелесть! В жизни мне не сдалась их борьба за расовые привилегии и квоты, даже несмотря на то, что сам теперь под них попадаю. Еще и каким-нибудь предателем крови за неправильный “слишком белый” акцент назовут. Но вот в музыкальном вкусе этим “МЕЧАным” не откажешь.
Подглядев в бумажке с записью на курс Паскаля номер аудитории, нашел большое помещение на втором этаже, с партами, размещенными ступенчато. У нас в Политехе в главном корпусе в такой физику сразу шести группам читали, со всего потока. Студенты, что забивали козла на задней парте, оставались невидимыми и неслышимыми. Каюсь, и я пару раз тем же самым согрешил, хотя физику нежно люблю.
Народу набилось, может быть, и не как селедок в бочку, но почти. Ни одного свободного места, я едва-едва смог усмотреть там Монти, тоже взявшего курс Паскаля и сесть рядом, пожав мажорчику руку.
Мы с Синклером успели немного обсудить, как продвигается рефакторинг его кода и как лучше ему разбить одну божественную процедуру на части, когда вошел профессор – пожилой белый дядька со слегка всклокоченной седой головой.
“Доктор Альберт Кляйн” – написал он на доске своё имя и сходу приступил к лекции. Не просто скучно, а смертельно скучно. Прямо кот Баюн из сказок, усыпляющий жертв историями. Самая базовая информация от BEGIN и до END прозвучала. Привет, это Паскаль, его придумал Николас Вирт, в языке вот такие операторы. Кто знаком с Бейсиком, забудьте все, что знали. Типизируйте переменные. Компилятор – ваш лучший друг и не позволит выстрелить себе в ногу. GOTO – чистое зло и дьявольщина, того, кто его использует, заповедано сжечь, как слугу темных сил.
Последнее я немного утрировал, но в целом согласен. Очень много банальностей в духе “делайте отступы в коде” профессор озвучил. Монти их даже дисциплинированно конспектировал, несмотря на то, что лекция повторяла доведенные мной намедни истины, но в более примитивной форме, как для дошколят.
Нет, для образования этот курс я посещать точно не стану – слишком все общеизвестно. А потому занялся тем, для чего вообще сюда пришел – начал присматриваться к товарищам по несчастью. Кого там еще профессор Кляйн загипнотизировал до полного усыпления?
Нашлись такие – пара парней зевали, как и полная, не слишком красивая блондинка в джинсовой куртке, которая вообще к концу лекции откровенно дрыхла, подложив сумку под голову. Пригляделся к ней получше – около двадцати, с грубоватыми чертами лица, минимум косметики. Этакая валькирия Брунгильда. Она и заинтересовала сильнее всего.
Внешность не имеет никакого значения. С количеством красавиц вокруг меня и так очевидный перебор, а вот белый цвет обложки с крупной голубой буквой Си, торчащий из ее сумки, я узнал издалека – книга Кернигана и Ритчи. Взял на заметку всех троих, но для предложения о работе книжки с нужным цветом обложки маловато.
"Присмотришься к трем спящим красавицам, если у вас и другие курсы совпадут? Вдруг устроят нас, как сотрудники,” – попросил я Монти при помощи записки. Вообще, искать себе профи нужно среди ребят постарше, у нас в политехе начинали хантить курса с третьего. Но я ведь не один такой умный, то есть у старшекурсников меня будут ждать конкуренты.
“Ок,” – коротко подтвердил Синклер, дописав к моему же листку. Нужно будет на следующую лекцию мистера Кляйна компактные шахматы взять, хоть какой-то толк.
– Гостевые студенты и вольные слушатели, желающие посещать лабораторные и пройти полный курс, у меня для вас есть еще двадцать мест. Кто хочет записаться – подходите сразу после звонка, – добавил доктор Кляйн в конце лекции.
– Я не пойду, – поделился с Синклером.
– Да, есть ощущение пустой потери времени, – признал Монти. – Ты дал ту же информацию, но более сжато. Тоже постараюсь сразу перейти к более продвинутому курсу. Это возможно, если профессор разрешит.
– И это тоже маркер подходящих нам студентов. Присматриваемся к таким, – кивнул я.
Далее мы с приятелем навестили Селесту, переехавшую вместе с профессором Кроуфордом сюда же, в Уилер Холл, и я отдал ей распечатку сценария квеста для редактуры. К счастью, сам доктор Аластер сейчас читал где-то лекцию и я избавился от его нравоучений о разбазаривании таланта.
И тут я остался предоставлен сам себе. Перекусил в пиццерии, заглянул в библиотеку и выяснились две новости. Первая – как фальшивому студенту, бесплатный читательский билет мне не полагается. Вторая…
– Как резидент штата Калифорния, вы можете оформить читательский билет за десять долларов годового сбора прямо сейчас, – сообщила мне полненькая негритянка лет сорока из-за деревянной стойки.
– Оформляемся!
Возможно, самые выгодные десять баксов в моей жизни, так как их альтернативой являлась покупка полного комплекта Лэттис Си, а она грозила тратами в 500 баксов за возможность уточнить пару моментов в синтаксисе. Кое-что я уже узнал из классической книжки Ритчи – слова void в спецификации языка еще нет и по умолчанию функция main считается целочисленной.
В библиотечную карточку внесли данные с моих водительских прав и заламинировали ее. И вот я получил доступ к изрядной части знаний человечества. Жаль, что только аналоговый.
– Спасибо, мэм. Теперь у меня два вопроса. Первый: книга, нужная мне для учебы – документация к компилятору Лэттис Си. Второй: есть ли у вас развлекательная литература? Все-таки чтение – это еще и отдых.
– У нас нет сортировки книг по жанрам. Но всё, что найдете в каталоге – в вашем распоряжении, университет регулярно пополняет фонды. А внизу, на первом этаже, есть библиотека Моррисона – уютное место с кожаными креслами, где нельзя учиться, но на полках стоят бестселлеры.
Каталог – набор металлических ящичков с карточками, отсортированными по названию. И тут мне повезло, на букву L нашелся искомый мануал. Как очень ценный, его запрещалось выносить из читательского зала, но мне всего-то пару моментов уточнить.
Как всё знакомо. У нас в конце девяностых в городской библиотеке все один в один организовано. Выделив полтора часа на чтение, выяснил, что Лэттис слегка урезал классическую спецификацию языка, но ничего катастрофического. Можно прожить и без перечислений, например. Проторчал в библиотеке до вечера, но зато забил блокнотик пометками о том, что сработает, а что нет. До художки так и не добрался, подходила пора спешить в Эванс Холл – цитадель научно-технического прогресса.
И правда, цитадель – громадный железобетонный куб, напомнивший мне советскую панельную девятиэтажку или окружную тюрьму, в которой сидел Гектор. Может быть, даже один и тот же архитектор постарался.
Шестой этаж и небольшая аудитория, менее, чем на два десятка человек, сплошь белых парней, не считая единственной девушки – той самой страшненькой блондинки с лекции по Паскалю. Может быть, она тоже охотится за головами? Работает в отделе кадров какой-нибудь корпорации? Но книга по Си на парте на вид настоящая. Я свою доставать не стал, просто сел на заднюю парту, где места хватило.
– Класс, давайте познакомимся. Я ваш преподаватель, мистер Сэм Гарланд, аспирант с кафедры электротехники и компьютерных наук, – быстрыми размашистыми движениями набросал имя мелом на доске тощий молодой человек лет двадцати пяти с усталым взглядом, которым он обвел всех собравшихся. Задержался на мне и на девчонке, тяжело вздохнул, но хотя бы немедленно выгонять не стал, а начал лекцию.
Ничего нового я не узнал. Но в целом намного полезнее, чем Паскаль для начинающих. Тему для начала выбрал обзорную – рассказал в двух словах об истории Си, об ОС Юникс, ради которой язык и создается, о мощных компьютерах PDP-11 и VAX, за которыми нам, возможно, посчастливится поработать. Время пролетело незаметно.
– У нас есть два места для гостевых студентов. Если таковые сегодня пришли, подходите к столу, – закончив обязательную программу, сказал он.
Как истинный джентльмен, пропустил девушку вперед. Хотя бы потому, что оне меня заинетерсовала. Как потенциальный сотрудник, в другом плане моё сердце занято навеки.
– Здравствуйте, меня зовут Бренда Бойл, я бы очень хотела изучить настоящее программирование, – вступила девушка.
– Для чего? Какие у вас есть навыки и задачи?
– Я работаю бухгалтером и хорошо знаю Паскаль, вот и…
Бухгалтер! Надо брать! Пусть напишет мне калифорнийскую версию “задницы Одина”!
– Настоящие программисты не используют Паскаль. Но вам с лихвой его хватит для расчета налогов, леди. Вы не приняты, – не дал договорить аспирант Сэм. Нашел за счет кого самоутверждаться.
В уголках серых глаз Бренды появились слезинки. А я, выходит, не настоящий программист.
– Мистер Гарланд, вы не правы. Позвольте мисс Бойл договорить, – не утерпел я. Робин Гуд ктулхов. Ну вот оно мне надо – влезать? В тот раз в школе на булочкины слезы стриггерился и конфликт с мисс фон Чичис заработал. И эта тоже, побольше поплачет – поменьше пописает, но… мужик я или не мужик, если позволю вот так девчонок тиранить?
– А вы, очевидно, ошиблись корпусом, молодой человек, – не стал сдерживать раздражение аспирант. – Кафедра этнических исследований находится в Уилер Холл, офис МЕЧА в Эшлеман-холл, библиотека Чикано и залы студенческого союза тоже не здесь. Вы не подходите. Мне по вашему равнодушному взгляду все стало понятно еще во время лекции.
Несколько задержавшихся белых очкариков захихикали, ожидая блистательное шоу. Дежавю! Я уже бывал в этом месте раньше!
– По какому критерию я и мисс Бойл не проходим, сэр? По цвету кожи и полу?
Не то, чтобы мне хотелось разыгрывать ту же карту, что и тем чикано со ступенек, их борьба не моя. Но…
– По знаниям и навыкам, амиго. Вы хотя бы простейший алгоритм сортировки написать способны? Сталкивались вообще с чем-то серьезнее Паскаля? Очевидно, что нет. Приходите тут, тратите моё время, качаете права, а затем взгляды прячете.
– Сортировка? Я могу. Это несложно, – твердо сказала девушка, утерев слезу бумажной салфеткой.
– Нет ничего проще, – подтвердил я.
Аспирант вздохнул со вселенской тоской.
– Пишите, – кивнул он в сторону доски.
Бренда справилась быстро. Взяла мел и написала белым по зеленому примитивный пузырьковый алгоритм на Паскале. Всё по ТЗ, как по мне.
– Сэр, прежде чем вы что-то скажете, я хочу поймать вас на слове – речь шла о простейшем алгоритме, мисс Бойл его и продемонстрировала. На мой взгляд – безупречно.
Толстушка посмотрела на меня с благодарностью. Вот как чувствует себя Лео, выступая в суде, наверное.
– Конечно, на ваш взгляд, вы же эксперт, – рассмеялся Гарланд.
Расисты-сексисты из зала охотно подхватили. Уроды.
– Позвольте, я докажу свой уровень компетентности, – не удержался я от хищной улыбки. – Мисс Бойл, передайте мне мел.