Вася Как Компилятор

Василий Викторович (далее просто Вася) работает в офисе третий год. Программист по образованию, он был на хорошем счету у режиссера Александра Ивановича, который не сомневался в его профессиональных качествах и был готов доверить ему любое важное задание.

Директор часто набирал в помощь Васе новых сотрудников, но они оставались недолго - Вася жаловался, что они плохие программисты, не хотят работать, пишут код, в котором сам черт ногу сломит, да и к тому же, они напихали везде свое ООП и паттерны.

- Вася, может, ты сам поработаешь? Десять человек уже уволили.

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

Найдите мне хорошего человека, Иванович! Я верю, что однажды найдется человек, который сможет работать так же, как я, или даже лучше! — О чем ты говоришь, Вася, я уже убежден, что лучше тебя мне никого не найти.

Я попробую, Вася, попробую! Директор похлопал его по плечу и вышел из кабинета.

А Вася нажал Alt+Tab и продолжил читать ленту.

- Вася, познакомься, это Андрей.

Я два года назад закончил университет, семь месяцев проработал в «Яндексе», рекомендации хорошие, думаю, сработаетесь», — подмигнул директор.

Вася неодобрительно посмотрел на новобранца, прикинул в уме, через сколько дней он улетит отсюда, и, злобно улыбнувшись, протянул улыбающемуся мальчику руку.

— Василий Викторович, — пробормотал он.

— Очень приятно, — продолжал улыбаться мальчик, чем только разозлил Васю.

- Ну, ты познакомь Андрея с его обязанностями, а я пойду.

Когда за директором захлопнулась дверь, Вася указал новому парню на компьютер и дал ему пару «простых задач», над которыми, честно говоря, он работал месяцами.

Андрей открыл проект и ужаснулся: в коде не было ни одного комментария, просто отсутствовало форматирование, названия переменных и методов не соответствовали действительности.

Андрей знал, что этот день наступит. Еще с университета он готовился к худшему сценарию развития событий, но не был готов к тому, что увидел – улыбка мальчика бесследно исчезла, а на глазах навернулись слезы.

«Держись, Андрейка, держись», — изо дня в день уговаривал себя мальчик.

За десять дней работы в этой ужасной конторе Андрей понял, что Василий Викторович — худший программист-реднек.

Определенные знания у него, конечно, были, иначе Александр Иванович сразу бы заподозрил некомпетентность этого «специалиста», а в остальном программировать как следует он не хотел.

Андрей понял, что так долго он не протянет. У него была одна способность, о которой никто не знал – он хорошо владел искусством гипноза.

И вот однажды, после тяжелого рабочего дня, он подошел к Васе, щелкнул пальцами и прошептал несколько фраз.

Вася проснулся не сразу.

Сначала в ушах у него послышался какой-то зловещий глухой звук, потом чернота в глазах постепенно превратилась в мутную рябь, а потом раз – и он стоит в какой-то непонятной комнате.

Вокруг ничего нет, только белый пол и серый потолок.

Нет шума.

Казалось, Вася слышал биение собственного сердца.

Откуда-то послышался щелчок мышки, и тишина стала приобретать какие-то напряженные оттенки, словно перед грозой.



Build started.

- Поторопитесь, вам нужно прочитать эти файлы исходного кода.

- Ч-что? Что за.

— Давай, давай, — сказал я, — послышался удар кнута, сопровождаемый криком Васи.

— Вы читаете эти файлы, вводите всю информацию в таблицу лексем.

Если вы столкнулись с чем-то непонятным, нажмите запорный клапан с соответствующим сообщением об ошибке.

И ПОСПЕШИТЕ! Вася развернул длинный свиток с названием «главный» и начал его читать.

Сразу бросилось в глаза неудобное форматирование, буквы все время сливались, образуя беспорядок, имена переменных содержали не более трех букв — сложно было запомнить, объявлена переменная или нет. Та же история произошла и с названиями методов.

Васе казалось, что он знаком с этим кодом, но думать было некогда — его так часто били розгами, что он едва мог нормально прочитать написанное.

Закончив с одним файлом, Вася присел отдохнуть и тут же получил серию новых ударов.

Придя в себя, он развернул еще один свиток с именем «Крнаме» и начал все сначала.

Потом были файлы «qwerty», «MegaUtils», «dList» и т. д. У Васи начали уставать глаза, болела спина от бесконечных ударов кнутом и розгами, руки тряслись от постоянного записи лексем в стол - Вася был в аду.

Спустя очень большое количество времени Васе всё же удалось просмотреть все файлы и внести информацию в таблицу токенов.

— Ну наконец-то, — он вытер пот со лба.

-Почему оно развалилось? Возьмите таблицы лексем, проверьте их синтаксическую корректность и на основе этих данных постройте дерево разбора! Если вы что-то упустите, вам придется все переделывать заново.

Принимайтесь за работу! Вася стал сравнивать данные таблицы с Книгой правил и рисовать на огромном листе бумаги дерево операторов и операндов.

Строку за строкой, жетон за жетоном он сравнивал записи.

Сверху за вершиной, край за краем он нарисовал дерево.

В его глазах маячили символы, много символов, им не было конца.

И тут на глаза Васе попалась строчка, не указанная в правилах.

Недолго думая, он потянул за рычаг с надписью «Синтаксическая ошибка».

Тотчас же работа прекратилась, плети кончились, лист, на котором было нарисовано дерево, был очищен, и в комнате снова воцарилась зловещая тишина.

Вася упал на пол в изнеможении.

Ему не пришлось долго отдыхать; через две минуты работа началась.

все сначала.

Вася в отчаянии крикнул «Нет», но его спина была обожжена парой новых ударов, и ему пришлось читать все файлы заново.

Какую-то долю вечности, как показалось Васе, он просматривал свитки с исходным кодом и проверял таблицу лексем.

К счастью, синтаксических ошибок больше не было, но судьбу Васи это не облегчило; впереди ждало новое испытание.

«Ой, возьми синтаксическое дерево и отметь правильность набора», — скомандовал голос, ударив беднягу кнутом.

Усталость Васи давала о себе знать, он все путался при проверке шрифтов, но ощущение, что, если он ошибется, он все сделает заново, добавляло немного энтузиазма в его работу.

- Теперь сгенерируйте то, что у вас есть, на промежуточный язык.

И не забывайте оптимизировать то, что получаете!!! Вася вздрогнул — он никогда раньше оптимизаций не делал.

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

Зачем думать об оптимизации, если важна сама программа? Но как бы критично ни было мнение Васи, пара ударов сделала свое дело - он начал оптимизировать.

Он просматривал отдельные строки кода и пытался найти для них лучший вариант. Он разворачивал циклы, собирал последовательности строк в пару более коротких и переписывал некоторые фрагменты.

У Васи гудела голова.

Казалось, будто сам дьявол наказывал его за годы написания плохого кода.

Оптимизировав последнюю оставшуюся строку, Вася упал на колени и выдавил: - Меня это достало уже.

- Как ты не можешь? А кто будет генерировать машинный код? Кстати, я делаю это сотни раз в день и не жалуюсь.

Каждый день я читаю ваш ужасный код, изучаю типы ваших бессмысленных переменных, оптимизирую всю вашу посредственную креативность, чтобы в итоге получить программу, которая даже не запустится, потому что вы забыли написать вызов модуля! Я вынужден делать это снова и снова, пока вы наконец не доберетесь до его регистрации.

И не получаю ни одного слова благодарности, наоборот, постоянно слышу «Компилируй быстрее, вредитель!», «Что это за ошибка? В моем коде все правильно!» У меня нет возможности сказать то, что я думаю о тебе, потому что у меня нет рычага, чтобы использовать правильные фразы.

Но если бы они были, вы бы побоялись нажать «Компилировать»… А теперь вставайте и генерируйте машинный код! Вася подчинился и начал заменять инструкции промежуточного языка инструкциями машинного кода.

Руки еле поднимались, зрение затуманилось, в ушах раздавался свист, ноги подкашивались, спина горела от новых ударов, шея еле держала кипящую от бесконечного потока информации голову.

Да, Вася попал в ад реднека-кодера.

Он знал это наверняка.

Если ему когда-нибудь удастся выбраться отсюда, он перестанет писать плохой код, начнет форматировать свои исходники, давать осмысленные имена переменным и методам, начнет оптимизировать свои программы и никогда, никогда больше не проклинать компилятор!

Build successfull. Elapsed time: 00:01:19.

… Вася открыл глаза.

В офисе никого не было.

Среда разработки была открыта на экране монитора.

Курсор мигал на одной из неформатированных строк.

Вася потянулся к клавиатуре и нажал Ctrl+Backspace. Курсор побежал, унося с собой всё, что было написано за последние месяцы работы.

Оставив чистый исходный файл, Вася встал, посмотрел на консоль вывода компилятора и сказал: «Спасибо».

Теги: #Управление разработкой #Идеальный код #Фантастика #компилятор #истории #Вася

Вместе с данным постом часто просматривают: