Текст книги "Ретро бит 5 (СИ)"
Автор книги: Seva Soth
Жанры:
Альтернативная история
,сообщить о нарушении
Текущая страница: 10 (всего у книги 15 страниц)
Проходило занятие в Эванс Холл, читал ее профессор Оустерхаут – энергичный парень лет тридцати. Ай, карамба! О пресвятая Омниссия! Я читал его книгу «Философия разработки софта », вышедшую в конце 2010-х!
Офигенный труд, написанный простым языком и вместившийся менее, чем в 200 страниц. Концепция «ошибок не существует» – потрясающая, как сказал бы Рокки. Этот мужик – Легенда с большой буквы. Неудивительно, что я его заслушался до финального «у нас есть для гостевых студентов» – точь-в-точь, как аспирант Гарланд, только без расизма.
– Вы тот самый мексиканец, предложивший улучшение быстрой сортировки? – догадался Оустерхаут. – Вы приняты, давайте сюда ваш бланк.
Я чуть не лопнул от распирающей меня гордости в этот момент. Это как… ну, вот если бы Марадона какого-нибудь молодого футболиста прилюдно похвалил.
– С нетерпением жду вашей с Сэмом статьи, – добавил профессор, – если верить результатам тестов, вы нашли очень элегантное решение. Даже доктор Стерлинг заинтересовался.
Мне оставалось только руку ему пожать. Может, ее теперь не мыть? По-настоящему великий человек. Это не какой-нибудь актер или певец. Не стал даже уточнять, что никакой я не мексиканец. Хоть горшком пусть называют.
И длилось моё хорошее настроение ровно до парковки, где меня схватил за грудки реднековского вида блондин с вьющимися сальными волосами. Высокий и широкоплечий, но рыхлый. Одетый в джинсовую жилетку поверх клетчатой рубахи. Над верхней губой клочковатые усики пробиваются.
– Послушай меня, мелкий, еще раз подойдешь к моей бабе, я тебя в бетон закатаю. Понял, амиго? – я так полагаю, меня навестил Тодд. Изо рта у него тушеной капустой воняло. Меня чуть не вывернуло от запаха.
Вообще, насилие – это не наш метод. Я человек добродушный, даже добрый. Мухи не… ну ладно, насекомых, бывает, обижал. Но с людьми драться не люблю. И не то, чтобы умею. Но Машмет меня научил не вести переговоры с террористами. «Никогда не прогибайся под чужие угрозы. Прогибаться нужно только под штангой в зале,» – Джейсон Стетхем.
И больно уж удачно демон-парикмахер встал. Это был исключительно подлый удар, дюйма на четыре ниже пояса, если процитировать великие Хроники Амбера. Но у нас тут не Олимпийские игры. И с другой стороны, нападать на хромого – тоже не верх благородства. Воткнуть колено ему в пах показалось мне разумным выходом. А то что, одной Машеньке можно по хуэвосам бить? Мне пришлось опереться на больную ногу, так что в пострадавшие смело записываем нас обоих.
Тодд – почти уверен, что это он – захрипел и рухнул на колени на асфальт. Крепок, пендехо гринго. Я бы на его месте в позе эмбриона скорчился. Но в любом случае фаталити!
– Как я тебя понимаю, бабосо, – почти ласково сказал я ему, – мне вот точно так же разок заехали. Ох, эта боль. Дыхание перехватывает и ты даже ничего произнести не в силах, да? Ты не против, если я оставлю комбо незавершенным и по голове тебя бить не стану?
Парень просипел что-то до крайности нецензурное, но тихое. Наверное, согласился, что бить в голову – последнее дело, от этого люди неуловимо меняются.
– Держи, это подарок. Каждый раз, когда решишь кого-то ударить, расскажи сперва об этом утёнку и волшебным образом поймешь, какая это плохая идея.
Я взял с приборной панели лоурайдера резиновую уточку, определенную туда в качестве талисмана при выезде из Оукхерста. Игрушку бросил реднеку на колени. Тот скосил глаза и молодого человека аж всего передернуло от вида безобидной уточки. Фигасе он первертидо! Нормальным людям при виде утят для ванны ничего такого странного в голову не приходит.
Глава 18
Переиначивая знаменитую поговорку: «Реши проблему насилием один раз – будешь свободен от нее один день. Научись решать проблемы насилием регулярно – освободишься через десять лет и хорошо, если без конфискации имущества и штрафов».
Это я к тому, что мне совсем-совсем не нравится бить людей. Даже плохих и тех, что сами нарываются. Совсем недалеко на парковке стояла машина Тодда. Красный форд-мустанг с белой полосой – само торжество брутальности. Я не очень разбираюсь, но, скорее всего, начала семидесятых модель, жрущая бензин, как не в себя. Ну что за бабосо! Эта без дураков красивая тачка – настоящее разорение. Даже моя Эль-Камино и то экономичнее, хотя ей далеко до Селики и тем более погибшей в огне Короллы.
Запомнил номера перед тем, как уехать. С «парикмахером» надо что-то решать. Я, в общем-то, имею полное право подать на него заявление в полицию, но дальше что? Бренда наверняка вся в слезах начнет умолять не ломать парню жизнь, а я или прогнусь, что само по себе ошибка, или останусь у перспективной сотрудницы как «козёл, отправивший за решетку невиновного». И у меня даже резинового утенка на приборной панели нет, чтобы посоветоваться.
Нормальные пендехостанцы в такой ситуации звонят своему адвокату. Я доехал до полюбившейся пиццерии, воспользовался их таксофоном и набрал номер Лео и Глории. Длинные гудки, никого нет дома. Не повезло.
Но не настолько же я тарадо, чтобы самому решение не принять. А потому позвонил другому человеку. Опять расходы! Мистеру Артуру Шену, частному детективу из Сан-Франциско, я задолжал и имел полное право мелочно тянуть с выплатой долга еще полгодика. Теперь же, чтобы обратиться к нему за помощью, придется сначала заплатить. Так-то не последние деньги, но пендехо в обуви на диван залез, это достойно наказания!
Несмотря на уколы жадности, нашел в записной книжке номер и позвонил. Ну хоть звонок не очень дорогой. Беркли – это почти Сан-Франциско и тарификация здесь ненапряжная.
– Мистер Шен, здравствуйте, это Кристобаль Колон, я хотел бы расплатиться по долгу перед вами, – сказал я, когда частный сыщик ответил.
– Выписывай чек и отправляй по почте, продиктую адрес. Лично в Лос-Анджелесе я не скоро покажусь, терпеть не могу ваш город, – без большого энтузиазма отозвался детектив.
– Вы как будто не рады тому, что заберете свои… напомните мне сумму.
– Семьсот пятьдесят, – не обманул, столько я ему задолжал.
– Вообще-то вы сможете получить даже больше. Семьсот пятьдесят я отдам при личной встрече, хоть бы и прямо сейчас, если назовете место, куда приехать. Я в данный момент в Беркли. И у меня имеется для вас работа.
В тягостном вздохе с той стороны трубки жадность смешалась с другими чувствами. Вот сейчас обидно было. Как будто я настолько плохой работодатель.
– Я приеду в Беркли, так получится быстрее всего, – решил Артур. И, пожалуй, я ему немного благодарен за то, что не придется мотаться по незнакомому мегаполису.
О встрече мы сговорились в приятной кафешке на севере города, специализирующейся на итальянской кухне. Истинный храм пастафарианства, так как тут обещали «свежую пасту». Домашняя лапша ручной работы, приготовленная поваром здесь и сейчас, начиная от стадии теста, оказалась шикарной. Нужно будет узнать у Линды, умеет ли она так. Или Селесте подсказать, что Макаронному Монстру сие угодно. Ну, вкусно же. Я успел умять тарелку прежде, чем явился собеседник и настало время сорить деньгами. Еще и за обед для нас обоих заплатил, как принимающая сторона.
– Спасибо. Если со всей честностью, то не ждал этих денег никогда. У нас знакомство не задалось.
– Очень зря, Артур. Я честный человек. И вот моя для вас работа. Есть один негодяй, избивающий свою невесту и бросающийся на других людей с кулаками. Нужно раскопать его правонарушения и слить полиции. Никаких подстав, только настоящие грехи. Я уверен, он так и так замарался, больно уж неприятный и неуравновешенный тип. Моё имя звучать нигде не должно, его невесты, по возможности, тоже. Я попросту опасаюсь, что ублюдок ее убьёт. У меня есть его имя, Тодд, номер машины и полные контактные данные девушки, она работает на меня.
Азиат задумался, а затем кивнул.
– Заниматься подобными домашними тиранами – привычная рутина. Могу заодно интрижки на стороне у него поискать. Статистика показывает, что они в порядке вещей. На других людей – это на тебя?
– Да. Я не хотел влезать, пока он не припер меня к машине.
– Не проще самому на него в полицию заявить?
– Нет. Никто ведь не пострадал, – своему адвокату о том, что врезал коленом по хуэвос Тодда, я готов признаться, но вот Артуру даже такой мелкий компромат на себя выдавать не стал.
– Тогда прежняя ставка, 30 долларов в час. Аванс в двести баксов, и, возможно, его и хватит. Парень наверняка не самый умный, раз распускает руки. Надеюсь, он не держит бойцовских собак.
Стыдно ли мне за то, что поступаю так неблагородно, да еще и чужими руками? Ни капли! Ни о чем не жалею. Тодд ответит за свои же преступления. Оставайся он честным тружеником – повода для ареста не возникло бы. Ну а Бренде Линда кого-нибудь найдет. Художника с курса изучения искусства, например. Нет, лучше музыканта, тот мне нужнее.
Выписал, в общем, второй чек. И еще тарелку макарошек заказал. Эти итальянцы знают в них толк.
Сегодня же у меня состоялась новая встреча с аспирантом Сэмом – опять вечернее занятие. И Бренда на него подъехала, на метро трамвае БАРТ. Вот чего я такой невнимательный идиот-то? Про фичу, что машина влияет на скорость передвижения персонажа симулятора студента подумал, а факт того, что наша джун перемещается на общественном транспорте, только к середине ее стажировки заприметил. Ну не бабосо ли? Но наличие или отсутствие машины – это уже точно личное дело Бренды. Разве что пусть комнату у Монти и Селесты снимет, здорово на транспорте сэкономит.
– Как успехи? – спросил у девушки и получил рассказ, наполненный бухгалтерскими терминами.
Она целый учет со счетами и субконто, отражающий жизнь героя квеста, организовать пытается.
– Послушай, к какому решению я пришла. У каждого действия всегда есть две стороны и они должны уравновешивать друг друга. Например, если студент сидит за учебой, его параметр знаний растет. Но ровно на эту же «стоимость» нужно что-то списать – свободное время, энергию, состояние здоровья, настроение.
Первый закон термодинамики в чистом виде. И это крутой подход! Я чуточку представляю, как работает бухгалтерия – и в ее сторону дорога кодерских приключений заводила. Полагаю, «заднице Одина» все же однажды быть. Лет через десять или даже раньше. Все, что для нее нужно – хорошая СУБД, и простой скриптовый язык. Даже бейсик сойдет. Но, может быть, я уже нежно любимые мной за простоту Питон или Джаваскрипт изобрету.
Про встречу с Тоддом промолчал. Нефиг всякой ерундой от важного отвлекать. А язык Си – это ведь важно? Наверное, да. Он и для написания трехмерных движков отлично подойдет, так как работает быстро. Почти все культовые шутеры из 90-х – Вольфенштейн, Дум 2, Квейк, Халф-Лайф – это Си. Ну, кое-где еще и Си-Плюс-Плюс, но уже не суть. Одно вытекает из другого.
Итак, первый практикум. Аспирант Сэм мне приветливо кивнул. Бренду проигнорировал, но хотя бы заявлений в духе «курица не птица, женщина не программист» делать не стал.
Нас усадили за компьютеры, а точнее, терминалы, дающие доступ к мощному по нынешним временам PDP-11. На вид обычные моноблоки, похожие на TRS-80 третьей модели, но на самом деле это вообще не полноценные машины, а мониторы с клавиатурой. Вся магия творится за перегородкой из толстого стекла, где расположилась допотопная серверная размером со спортзал. Компьютеры – шкафы. Жесткие диски габаритами со стиральную машинку, толстые пучки кабелей, что-то подпаивающие ремонтники в белых халатах. Подозреваю, могли бы обойтись и без стекла, но нарочно оставили юзверям обзор, чтобы прониклись величием и богатством университета. Не бывай я пару раз в продвинутых дата-центрах, тоже, наверное, впечатлился бы.
Гарланд прошелся и раздал каждому листочки с логинами и паролями. Я оказался Си-Си-1965. То есть инициалы и год рождения.
– Предполагается, что все вы владеете минимальными навыками работы с операционной системой. Если у кого-то будут затруднения, позовите, помочь вам моя работа, – посмотрел парень при этом на Бренду, – надеюсь, что все вы хорошо слушали мою лекцию. Сегодняшнее практическое занятие максимально простое: вам нужно написать программу для копирования массива данных с одного имеющегося адреса на другой. Однако…
Сэм подошел к имеющейся в классе грифельной доске и написал «1.5 секунды». Еще и обвёл в несколько кружочков, показывая важность.
– Вот ваша цель. Попробуйте оптимизировать свой код так, чтобы уложиться в поставленные временные рамки. Это сложнее, чем вам кажется и справятся не все.
Казалось бы, ничего сложного. Выдернуть данные из памяти по указанному адресу, перебрать циклом и положить в новые ячейки, оперируя указателями. Решается в один проход. Ну и еще добавить замер времени исполнения и его вывод. Где тут можно накосячить?
И в чем тут вообще принято писать? Какой текстовый редактор? Vi, Emacs? Глянув на руки соседа по терминалу, убедился, что минималистичный Vi. Ну и хорошо. Здорово было бы еще его исходники дернуть, как и более навороченного Емакса.
Написал, наверное, первым. Чуть дым из-под клавиатуры не пошел от моей скорости набора. Но важна-то не она, а время выполнения программы.
2.2 секунды. Ох, Семён Семёныч, не просто так ты нам «элементарную» задачу поручил. Неподалеку чертыхнулся еще один студент, скорее всего, получивший тот же или похожий результат. И как тут оптимизировать?
– Мистер Гарланд, я могу использовать ассемблер? – спросил один из соучеников, парень с длинными, как у рокера, волосами, стянутыми в хвост.
– Это было бы неспортивно. Не все тут изучали машинный язык PDP-11. Но это возможный выход. При использовании ассемблера вы бы получили порядка 1.2 секунды.
И как? Что-то такое на краю сознания зудело. Основные потери времени здесь не в копировании байтов памяти, а на самом цикле. А как быстрее? Убрать накладные расходы на обслуживание цикла можно через goto! Но чувствую, меня за его применение расстреляют на месте без суда и следствия.
«Не использовать метки и переходы по ним» – одна из первых заповедей программиста. Я бы сам всех собак на джуна спустил, примени он настолько грязное решение. Хотя в данном случае оно смотрелось бы не так и плохо.
Если goto – это выход, то надо, чтобы работало как с ним, но без него. Закрыл глаза и погрузился в недра воспоминаний. Решение продолжало напрашиваться, но никак не рождалось.
А стоит ли мне вообще напрягаться? Ну не совершу я невозможное. И что? С занятий меня не выгонят, двойку не поставят. Уважение не вычтут. Подозреваю, что в учебный план это занятие вписано специально, чтобы избавить нас от иллюзий о всемогущем Си. Но выпендриться-то хочется! Грешен – немного тщеславен и люблю купаться в лучах обожания коллег. Нравится мне, когда вокруг кодеры паникуют, и тут я весь такой из себя Д’Артаньян и решаю проблему парой строк кода.
– Да это невозможно! – воскликнул парень позади меня.
– Профессор Гарланд, а можете вы показать своё решение? – обратился еще один.
«Профессором» у пендехостанцев принято называть любого, кто ведет занятие, даже если это всего-то аспирант, мало отличающийся по статусу от студента.
Да что же они все так орут! Еще и дышат громко! И сердцами стучат. Или это у меня самого тахикардия началась?
Время занятия шло, я мысленно готовился к провалу, а решение все не вспоминалось. Чтобы успокоиться надел наушники, нажал на кнопку плеера и снова прикрыл глаза. Заиграли мексиканские трубы и меня окутал волшебный баритон Джонни Кэша.
Я провалился в огненное кольцо и буду падать, падать, падать… Гори, гори, гори…
Провалился! Ай, карамба! Вспомнил! Переход по веткам конструкции выбора switch-case компилятор Си преобразовывает в машинный код, аналогичный goto. Но за использование кейза никто предателем заветов дедушек Кнута и Вирта меня не назовёт. Спасибо вам, мистер Кэш. Ваша музыка здорово прочищает мозги. Я на ваш концерт схожу, чтобы свой респект высказать.
В приступе кодерского вдохновения я положил руки на клавиатуру и родил выносящий мозг нормальному человеку код. Уродца с циклом while, вложенным в switch и начинающемся в первом ветвлении, а заканчивающимся после последнего. Восемь веток, немного копипаста и готово. Я восхитителен.
Точнее, не я. Вспомнил, что это придумал инженер Лукасфильма, будущей студии Пиксар. Нам в политехе приводили его код, как пример странного случая, когда все считают, что программа вообще не скомпилируется, а она исполняется и очень быстро. Тот парень – настоящий гений. А я всего лишь плагиатор, вовремя вспомнивший чужое решение.
– Это не будет работать. Компилятор выкинет тебе ошибку, – сказал мне подглядевший через плечо аспирант Гарланд.
Точь-в-точь мои мысли, когда доцент написал на доске странную конструкцию с огромным количеством фигурных скобочек, за которыми попробуй уследи. Эх… где там моя IDE c подсветкой. На мощном университетском серваке отлично крутилась бы. Моник, правда, монохромный, с зеленым люминофором.
– Спорим, что заработает, профессор? – я еще раз окинул код взглядом и не нашел в нашем с пиксаровцем уродце явного изъяна. Мы просто сокращаем накладные расходы на цикл… ну, не в восемь раз, но очень сильно. Можно и еще несколько ветвлений добавить, добить до 10 или 16. Больше, скорее всего, лишено смысла.
– Заключать пари со студентами непрофессионально.
– На шоколадку, сэр. Это мелочь.
Уместнее было бы на пиво, по-«одмински». Но от одной мысли всего передернуло и в ногу кольнуло. Психосоматика – она такая.
– Ладно, купишь мне сникерс, если так того хочешь, – в неформальной манере согласился Сэм. – Я лично обещаю, что выкуплю половину сладостей из вендингового автомата для того, чей код уложится в полторы секунды.
Слева и с тыла послышались смешки. Сидящий позади студент наверняка имел возможность подглядеть мне в монитор и увидеть психоделическую конструкцию из переплетения кейза и вайла, как будто бы операторы страстной любовью занялись.
Не бережет он свой кошелек. И не верит в то, что кто-то из студентов добьется результата.
Переходим в командный режим vi,:wq – сохранить файл и выйти. Запускаем компиляцию, супермощный компьютер справился с преобразованием программы в машинные коды непривычно быстро – всего за две-три секунды. Офигеть, хочу! Где такие продают? Мой 5150 провозился бы секунд 20, и то благодаря старине Корвусу. С дискетами совсем печальная картина прогнозируется.
Не слишком ли я самоуверен? Что, если компилятор Си из 1982-го обрабатывает кейзы как-то по-другому? Я даже не помню, в каком году пиксаровец придумал свой хак. Где-то в середине восьмидесятых, кажется. Но это не точно.
Скомпилилось, уже хорошо. Теперь запускаем. На секунду с небольшим я дыхание затаил. И… 1.35. У меня вскоре от шоколадок что-нибудь слипнется! А ну и ладно, одногруппников угощу. Они высокомерные задницы, но отношения налаживать надо, кое-кого я и нанял бы.
– Как? – спросил сосед сзади.
– Очень изобретательно, мистер Колон, – похвалил Сэм Гарланд. – По-своему изящно, – лихорадочная работа мысли прямо читалась в том, как по лбу молодого препода складки гуляли. – Я объясню всем желающим смысл решения после занятия, у вас есть еще пять минут, чтобы добиться успеха.
Глава 19
– Мистер Колон, раз вы уже достигли цели, подойдите, мне есть что вам сказать по поводу статьи о вашем алгоритме сортировки.
Сэм утянул меня за дверь, но как и ожидалось, говорить начал не о джулайсорте.
– Объясните ваш код. Кратко, если возможно. Он просто не должен работать, а вместо этого приблизился к ассемблерному по производительности.
– Всё дело в goto…
Не стал самоутверждаться и утаивать знания. Это ведь мой будущий соавтор научной статьи. Коллега-ученый. Ну и у него достаточно крепкие хуэвосы, чтобы переобуться и начать относить к цветному каналье и даже к женщине, как к человеку. Не всем дано признать свою неправоту, а вот Сэм справился.
Под мой рассказ аспирант опустошил торговый автомат. Три десятка разных шоколадок – всё, что оставалось в продаже. Всё купленное тут же сгружал мне.
Когда мой рассказ закончился, Гарланд задал явно волнующий его вопрос.
– Мисс Джулай, ты не нашел ее контакты? Расскажи о ней.
– Ну… она блондинка с карими глазами, примерно ваша ровесница, – честно описал я девушку с обложки журнала за июль восемьдесят первого. – Номера телефона она не оставила. Простите.
– Значит, придется указать ее анонимно. Написать, что ты благодарен своей наставнице. Этика научных статей требует получения разрешения для указания имен.
– Ну… ладно. Мисс Джулай не тщеславна.
– Теперь о названии статьи. Ты, как соавтор, обязан согласовать. Как тебе «Трехпутевое разделение в быстрой сортировке: преодоление квадратичной деградации на данных с высокой избыточностью».
– А не слишком длинно? Отпугнет неготового читателя.
– Это научный журнал, а не Плейбой или Байт, его читают только люди с теоретической базой за плечами.
Далее парень вывалил на меня основные тезисы и мне оставалось лишь кивать. Единственное подобие научной работы, что я писал – мой собственный диплом, и там я описывал простую базу данных из проекта с работы. Арбайтен кодером я устроился, еще будучи студентом.
Что ж так сложно-то? Такое впечатление, что в академической среде есть правило специально излагать простые идеи максимально сложным языком. С формулами, отсылками на других ученых и цитированием.
Элементарное «мы добавляем третье ветвление для проверки на дубликаты» превратилось как бы не в доклад на нескольких листах. Я так не умею изъясняться, я не Водолей по гороскопу. А кто я по гороскопу? Понятия не имею, какой знак зодиака за двадцать пятым августа закреплен и какие баффы он даёт. Даже интересно стало, несмотря на то, что Макаронный Монстр и то реальней астрологии с гомеопатией.
– Со всем согласен, корректировок нет, – устало сказал, дослушав Сэма. Его спич про «релокацию скалярных и векторных величин в рамках итеративного контура» звучал не лучше, чем знаменитое «С точки зрения банальной эрудиции каждый индивидуум, критически мотивирующий абстракцию, не может игнорировать критерии утопического субъективизма».
– Отлично, тогда на следующем занятии дам почитать черновик и понесу на рецензию доктору Стерлингу. Колон, вынужден признать – я в тебе ошибся. Думал, что ты очередной выскочка из МЕЧА и пришел на курсы ради продвижения целей вашей организации. Но ты… ты отличный программист. Тебе нужно поступить в университет официально, займешь моё место.
Вот уж спасибо, вот уж не надо. Не понимаю, в чьи головы вообще пришло смешивать науку и образование. Никак не додумаюсь, зачем ученому, имеющему свои научные задачи, тратить время на преподавание, с которым могли бы справиться специально обученные экстраверты.
Раздал почти все сладости соученикам, как и собирался. Прокачал, так сказать, репутацию с неписями. В штатах меня бы, скорее всего, не обвинили в том, что закрысил, но всё одно «щедрая душа» и всё такое.
– Крис… босс… я только сейчас поняла, насколько ты сильный программист. Я тупая? – это у меня Бренда спросила, когда я вызвался подвезти ее до станции БАРТ.
– Мне стоит сменить гардероб, чтобы выглядеть внушительней, – признал я. – Ты справилась сегодня не хуже прочих. Считай, что прошла стажировку, жду тебя завтра утром на работе.
По пути к парковке, чисто поржать, купил газету с гороскопом. А то вдруг у меня несовместимость с издателем из-за Венеры в Марсе и Луны в противофазе, а я и не знаю.
Ушлые астрологи в своих прогнозах даже даты, под которые каждый знак попадает, подписали.
Как рожденный 25-го августа, я Дева, знак стихии Земли, которым управляет планета интеллекта и логики – Меркурий. Какие-то странные рассуждения. Раскаленный от близости солнца Меркурий я бы к огненной стихии отнёс. И при чем тут логика и интеллект? Хотя, чего скрывать, с этим они попали в точку.
Хитрые же пендехо. Прочитав описание остальных знаков, я понял, что они тоже попадают в яблочко. Удачливость Юпитера, твердость Урана, изобретательность Плутона, харизматичность Венеры.
Добрел до знакомой пиццерии и совершил еще одну попытку дозвониться до Лео. Успех.
– Больцман и партнеры, слушаю вас, – взяла трубку «тетя Глаша».
– Привет, Глория, это я, Крис. У меня тут небольшой юридический казус – я ударил человека, но он первый начал, очень агрессивно себя вел и избивает мою новую сотрудницу.
– О Тобалито! Ты настоящий рыцарь! И идиото. Драка может иметь конкретные юридические последствия. Мой второй муж оказался за решеткой после того, как ввязался в разборки и пырнул отверткой такого же каброна, как он сам. Лео! Возьми трубку, это Кристобаль!
– Как удачно, что ты позвонил, пацан, – услышал я голос Больцмана. – Докладываю – второе заседание Гектора назначили на 4-е октября. Совсем скоро. Во-первых, и тебе необходимо притащить свой зад в Эл-Эй, лично полюбоваться тем, как я размажу прокурора по трибуне.
– Просто увидеть торжество правосудия?
– Нет-нет, пацан, не только поэтому. Едва Гектор выйдет из дверей суда свободным человеком, его снова арестуют. На этот раз миграционная служба. Ты нужен, чтобы внести новый залог. Либо передай деньги миссис Колон, пусть она займется. Упреждая вопрос – я, как адвокат, не имею права стать залоговым поручителем.
Кажется, пендехостанская судебная система целиком нацелена на то, чтобы выкачивать деньги из населения. С другой стороны, повидаюсь с Джоном и при личной встрече текстовый редактор с ним обсудим. Плохо, что ли?
– Принято. Я внесу залог, что дальше?
– Новое разбирательство. Мы с миссис Флорес на месте не сидели и подали все необходимые ходатайства о воссоединении семьи. Еще до рождества мы выбьем Гектору гринкарту, особенно если они докажут беременность.
– Тут еще такое…
Кратко ввел адвоката в курс дела с бухгалтершей и «демоном-парикмахером», здорово напомнившим мне Биффа Таннена.
– Давай по порядку, пацан. То, что ты заехал по тестикулам напавшей на тебя деревенщине – классический пример необходимой самообороны. Ты действовал полностью в своём праве на самозащиту. Рисков с юридической стороны тут нет. И нужно оказаться клиническим имбецилом, чтобы пойти жаловаться копам на то, что жертва дала отпор.
– Меня больше волнует его ситуация с Брендой. Девушку жалко, но сама она не хочет выбираться из ямы.
– Найм детектива совершенно легален. Риски лишь в том, что он может прибегнуть к незаконным методам. Но мы легко тебя отмажем от обвинений, если они возникнут, свалив всё на исполнителя. Я бы рекомендовал оформить судебный запрет приближаться к ней. Даже криворукие растяпы из Сан-Франциско справятся с ним, когда доказательства налицо. Но она обязана сама захотеть. Без личного желания жертвы ничего добиться нереально. Печальная правда жизни, пацан.
– Спасибо, Лео, увидимся в начале октября.
– Кристобаль, как только мы закончим с делом Гектора, приедем к вам в Эль-Серрито и я вправлю дурочке мозги, – взяла трубку Глория.
Новых синяков на нашей Брунгильде к следующему утру не прибавилось, но это не повод расслабляться. Продолжили трудиться в поте лица. Как говорил Джейсон Cтетхем: «Работа не волк, работа – work!» Блондинка активно принялась наводить порядок в отсутствующей у нас пока бухгалтерии и… я идиот.
– Крис, что значит, ты не сохраняешь чеки из супермаркета? – спросила Бренда таким тоном, будто это она тут главная. – Как мне тогда включить затраты на питание в расходы твоей фирмы? Любую, абсолютно любую покупку мы обязаны декларировать, чтобы заплатить меньше налогов. На технику чеки хотя бы сохранил? Компьютер, принтер…
Бухгалтерия… бухгалтерия никогда не меняется. Хвала Императору, чеки на крупные покупки у меня в самом деле есть, копам их совсем недавно показывал.
– А квитанция об оплате обучения на курсах университета? За тебя, за Линду… мне надо уточнить, подойдет ли моя. Я всё-таки тоже сотрудник. Чеки с заправок ты что, тоже не собираешь? Так поступать нельзя. Жду от тебя к концу месяца отчет по всем личным расходам, подкрепленным документально. Уяснил?
Идея сидеть в Оукхерсте и довериться Кену вдруг показалась не такой и дурной. Ну куда я со своей наивностью лезу в большой бизнес?
И несмотря на все успехи в бухучете и то, что экономическая модель жизни студента становилась каждый день всё лучше и детальнее, немного напрягало само присутствие посторонней девушки у нас дома. Мой дом – моя крепость, и превращать его в офис разработки – не совсем правильно. Линда уже обеды и ужины на троих готовить стабильно начала. А пышка Бренда ест, как мы двое вместе взятых. Нет, не настолько я жадный, не объест нас еще один голодный рот, скорее, хочу выдержать личные границы.
В субботу сходили в гости к Монти и Селесте и застряли у них почти до вечера, ковыряясь с шашками. Я притащил свой квестовый движок и мы начали дружить модуль визуализации картинок из него с игрой. Вот реально до вечера провозились и справились так быстро лишь потому, что Синклер – настоящий вундеркинд, а у меня почти тридцать лет опыта в разработке.
Девушки, впрочем, тоже не отлынивали – взялись за внесение в комп результатов редактуры Селесты текстового квеста. И ей я тоже выписал чек. Какой-то человек-банкомат, постоянно разбрасываюсь деньгами.
Еще в копилку расходов – Джон купил-таки текстовый редактор MINCE и перекинул мне по прямому модемному соединению исходники. А я, как честный человек, отправил ему почтой банковский чек на двести пятьдесят баксов.
1200 бод – это шикарно! Не такие и маленькие исходные коды на Си передались за какой-то час. На оплате межгорода разорюсь, но ни о чем не жалею. Каналья Эдитор всё ближе.
Присланный код на Си – просто песня, поэма из операторов и скобочек, грамотно разбитая по модулям. У меня даже закрались сомнения в собственной исключительности. Больно уж хороша реализация. Неведомый мне Крейг оказался очень крут, как кодер. А ведь у него нет десятилетий опыта, то есть на одних таланте и знании предметной области накодил.
Зарывшись в исходники, я понял, почему компания-разработчик отдает их за жалкие 250 долларов. Да похвастаться ребятам офигенно написанным кодом захотелось. Я, вероятно, по той же причине собираюсь сделать свои программы опенсурсными. Ох, как всё документировано! Ни одной лишней буквы. Комменты поясняют, «почему так сделано», а не очевидное «Алиса – это пудинг».
Разрабы работали напрямую с видеопамятью и сделали всё самое сложное. Я даже нашел, где и в какую ячейку передать значение, чтобы поменять цвет каждой буквы. Читается, как толковая книга. Пожму этому самому Крейгу руку при встрече. Специально в Бостон слетаю. Ну, когда деньги появятся.
Применил свой хак, изменив цвет на рандомный для каждой буквы. Подождал десять минут, пока закончится компиляция и… вуаля. Случайно открытый файлик, у которого каждый символ окрашивался в рандомный цвет, смотрелся кошмаром эпилептика и даже у здорового меня голова кружиться начиналась. Но, во имя Великих Древних, сработало! Осталось прикрутить к делу анализатор, портировав его на Си и научив работать с разными синтаксисами. И это не такая простая задача. Главным нашим врагом станет производительность, исключающая парсинг всего файла на лету. Пофиг, пляшем! Джон умный, гений ассемблера, что-нибудь придумает.




























