Ретро бит 5 (СИ). Страница 36
— Да это невозможно! — воскликнул парень позади меня.
— Профессор Гарланд, а можете вы показать своё решение? — обратился еще один.
«Профессором» у пендехостанцев принято называть любого, кто ведет занятие, даже если это всего-то аспирант, мало отличающийся по статусу от студента.
Да что же они все так орут! Еще и дышат громко! И сердцами стучат. Или это у меня самого тахикардия началась?
Время занятия шло, я мысленно готовился к провалу, а решение все не вспоминалось. Чтобы успокоиться надел наушники, нажал на кнопку плеера и снова прикрыл глаза. Заиграли мексиканские трубы и меня окутал волшебный баритон Джонни Кэша.
Я провалился в огненное кольцо и буду падать, падать, падать… Гори, гори, гори…
Провалился! Ай, карамба! Вспомнил! Переход по веткам конструкции выбора switch-case компилятор Си преобразовывает в машинный код, аналогичный goto. Но за использование кейза никто предателем заветов дедушек Кнута и Вирта меня не назовёт. Спасибо вам, мистер Кэш. Ваша музыка здорово прочищает мозги. Я на ваш концерт схожу, чтобы свой респект высказать.
В приступе кодерского вдохновения я положил руки на клавиатуру и родил выносящий мозг нормальному человеку код. Уродца с циклом while, вложенным в switch и начинающемся в первом ветвлении, а заканчивающимся после последнего. Восемь веток, немного копипаста и готово. Я восхитителен.
Точнее, не я. Вспомнил, что это придумал инженер Лукасфильма, будущей студии Пиксар. Нам в политехе приводили его код, как пример странного случая, когда все считают, что программа вообще не скомпилируется, а она исполняется и очень быстро. Тот парень — настоящий гений. А я всего лишь плагиатор, вовремя вспомнивший чужое решение.
— Это не будет работать. Компилятор выкинет тебе ошибку, — сказал мне подглядевший через плечо аспирант Гарланд.
Точь-в-точь мои мысли, когда доцент написал на доске странную конструкцию с огромным количеством фигурных скобочек, за которыми попробуй уследи. Эх… где там моя IDE c подсветкой. На мощном университетском серваке отлично крутилась бы. Моник, правда, монохромный, с зеленым люминофором.
— Спорим, что заработает, профессор? — я еще раз окинул код взглядом и не нашел в нашем с пиксаровцем уродце явного изъяна. Мы просто сокращаем накладные расходы на цикл… ну, не в восемь раз, но очень сильно. Можно и еще несколько ветвлений добавить, добить до 10 или 16. Больше, скорее всего, лишено смысла.
— Заключать пари со студентами непрофессионально.
— На шоколадку, сэр. Это мелочь.
Уместнее было бы на пиво, по-«одмински». Но от одной мысли всего передернуло и в ногу кольнуло. Психосоматика — она такая.
— Ладно, купишь мне сникерс, если так того хочешь, — в неформальной манере согласился Сэм. — Я лично обещаю, что выкуплю половину сладостей из вендингового автомата для того, чей код уложится в полторы секунды.
Слева и с тыла послышались смешки. Сидящий позади студент наверняка имел возможность подглядеть мне в монитор и увидеть психоделическую конструкцию из переплетения кейза и вайла, как будто бы операторы страстной любовью занялись.
Не бережет он свой кошелек. И не верит в то, что кто-то из студентов добьется результата.
Переходим в командный режим vi,:wq — сохранить файл и выйти. Запускаем компиляцию, супермощный компьютер справился с преобразованием программы в машинные коды непривычно быстро — всего за две-три секунды. Офигеть, хочу! Где такие продают? Мой 5150 провозился бы секунд 20, и то благодаря старине Корвусу. С дискетами совсем печальная картина прогнозируется.
Не слишком ли я самоуверен? Что, если компилятор Си из 1982-го обрабатывает кейзы как-то по-другому? Я даже не помню, в каком году пиксаровец придумал свой хак. Где-то в середине восьмидесятых, кажется. Но это не точно.
Скомпилилось, уже хорошо. Теперь запускаем. На секунду с небольшим я дыхание затаил. И… 1.35. У меня вскоре от шоколадок что-нибудь слипнется! А ну и ладно, одногруппников угощу. Они высокомерные задницы, но отношения налаживать надо, кое-кого я и нанял бы.
— Как? — спросил сосед сзади.
— Очень изобретательно, мистер Колон, — похвалил Сэм Гарланд. — По-своему изящно, — лихорадочная работа мысли прямо читалась в том, как по лбу молодого препода складки гуляли. — Я объясню всем желающим смысл решения после занятия, у вас есть еще пять минут, чтобы добиться успеха.
Глава 19
— Мистер Колон, раз вы уже достигли цели, подойдите, мне есть что вам сказать по поводу статьи о вашем алгоритме сортировки.
Сэм утянул меня за дверь, но как и ожидалось, говорить начал не о джулайсорте.
— Объясните ваш код. Кратко, если возможно. Он просто не должен работать, а вместо этого приблизился к ассемблерному по производительности.
— Всё дело в goto…
Не стал самоутверждаться и утаивать знания. Это ведь мой будущий соавтор научной статьи. Коллега-ученый. Ну и у него достаточно крепкие хуэвосы, чтобы переобуться и начать относить к цветному каналье и даже к женщине, как к человеку. Не всем дано признать свою неправоту, а вот Сэм справился.
Под мой рассказ аспирант опустошил торговый автомат. Три десятка разных шоколадок — всё, что оставалось в продаже. Всё купленное тут же сгружал мне.
Когда мой рассказ закончился, Гарланд задал явно волнующий его вопрос.
— Мисс Джулай, ты не нашел ее контакты? Расскажи о ней.
— Ну… она блондинка с карими глазами, примерно ваша ровесница, — честно описал я девушку с обложки журнала за июль восемьдесят первого. — Номера телефона она не оставила. Простите.
— Значит, придется указать ее анонимно. Написать, что ты благодарен своей наставнице. Этика научных статей требует получения разрешения для указания имен.
— Ну… ладно. Мисс Джулай не тщеславна.
— Теперь о названии статьи. Ты, как соавтор, обязан согласовать. Как тебе «Трехпутевое разделение в быстрой сортировке: преодоление квадратичной деградации на данных с высокой избыточностью».
— А не слишком длинно? Отпугнет неготового читателя.
— Это научный журнал, а не Плейбой или Байт, его читают только люди с теоретической базой за плечами.
Далее парень вывалил на меня основные тезисы и мне оставалось лишь кивать. Единственное подобие научной работы, что я писал — мой собственный диплом, и там я описывал простую базу данных из проекта с работы. Арбайтен кодером я устроился, еще будучи студентом.
Что ж так сложно-то? Такое впечатление, что в академической среде есть правило специально излагать простые идеи максимально сложным языком. С формулами, отсылками на других ученых и цитированием.
Элементарное «мы добавляем третье ветвление для проверки на дубликаты» превратилось как бы не в доклад на нескольких листах. Я так не умею изъясняться, я не Водолей по гороскопу. А кто я по гороскопу? Понятия не имею, какой знак зодиака за двадцать пятым августа закреплен и какие баффы он даёт. Даже интересно стало, несмотря на то, что Макаронный Монстр и то реальней астрологии с гомеопатией.
— Со всем согласен, корректировок нет, — устало сказал, дослушав Сэма. Его спич про «релокацию скалярных и векторных величин в рамках итеративного контура» звучал не лучше, чем знаменитое «С точки зрения банальной эрудиции каждый индивидуум, критически мотивирующий абстракцию, не может игнорировать критерии утопического субъективизма».
— Отлично, тогда на следующем занятии дам почитать черновик и понесу на рецензию доктору Стерлингу. Колон, вынужден признать — я в тебе ошибся. Думал, что ты очередной выскочка из МЕЧА и пришел на курсы ради продвижения целей вашей организации. Но ты… ты отличный программист. Тебе нужно поступить в университет официально, займешь моё место.
Вот уж спасибо, вот уж не надо. Не понимаю, в чьи головы вообще пришло смешивать науку и образование. Никак не додумаюсь, зачем ученому, имеющему свои научные задачи, тратить время на преподавание, с которым могли бы справиться специально обученные экстраверты.