Василий Викторович (далее просто Вася) работает в офисе третий год. Программист по образованию, он был на хорошем счету у режиссера Александра Ивановича, который не сомневался в его профессиональных качествах и был готов доверить ему любое важное задание.
Директор часто набирал в помощь Васе новых сотрудников, но они оставались недолго - Вася жаловался, что они плохие программисты, не хотят работать, пишут код, в котором сам черт ногу сломит, да и к тому же, они напихали везде свое ООП и паттерны.
- Вася, может, ты сам поработаешь? Десять человек уже уволили.
Я понимаю, что сейчас тяжело найти специалистов, понимаю, что сложно работать одному, но, может, еще попробовать, а? - Иванович, я бы с удовольствием, но кто тогда будет заниматься мелкими делами? Я пишу самое важное, а отвлечься на мелочи всегда очень сложно.
Найдите мне хорошего человека, Иванович! Я верю, что однажды найдется человек, который сможет работать так же, как я, или даже лучше! — О чем ты говоришь, Вася, я уже убежден, что лучше тебя мне никого не найти.
Я попробую, Вася, попробую! Директор похлопал его по плечу и вышел из кабинета.
А Вася нажал Alt+Tab и продолжил читать ленту.
- Вася, познакомься, это Андрей.
Я два года назад закончил университет, семь месяцев проработал в «Яндексе», рекомендации хорошие, думаю, сработаетесь», — подмигнул директор.
Вася неодобрительно посмотрел на новобранца, прикинул в уме, через сколько дней он улетит отсюда, и, злобно улыбнувшись, протянул улыбающемуся мальчику руку.
— Василий Викторович, — пробормотал он.
— Очень приятно, — продолжал улыбаться мальчик, чем только разозлил Васю.
- Ну, ты познакомь Андрея с его обязанностями, а я пойду.
Когда за директором захлопнулась дверь, Вася указал новому парню на компьютер и дал ему пару «простых задач», над которыми, честно говоря, он работал месяцами.
Андрей открыл проект и ужаснулся: в коде не было ни одного комментария, просто отсутствовало форматирование, названия переменных и методов не соответствовали действительности.
Андрей знал, что этот день наступит. Еще с университета он готовился к худшему сценарию развития событий, но не был готов к тому, что увидел – улыбка мальчика бесследно исчезла, а на глазах навернулись слезы.
«Держись, Андрейка, держись», — изо дня в день уговаривал себя мальчик.
За десять дней работы в этой ужасной конторе Андрей понял, что Василий Викторович — худший программист-реднек.
Определенные знания у него, конечно, были, иначе Александр Иванович сразу бы заподозрил некомпетентность этого «специалиста», а в остальном программировать как следует он не хотел.
Андрей понял, что так долго он не протянет. У него была одна способность, о которой никто не знал – он хорошо владел искусством гипноза.
И вот однажды, после тяжелого рабочего дня, он подошел к Васе, щелкнул пальцами и прошептал несколько фраз.
Вася проснулся не сразу.
Сначала в ушах у него послышался какой-то зловещий глухой звук, потом чернота в глазах постепенно превратилась в мутную рябь, а потом раз – и он стоит в какой-то непонятной комнате.
Вокруг ничего нет, только белый пол и серый потолок.
Нет шума.
Казалось, Вася слышал биение собственного сердца.
Откуда-то послышался щелчок мышки, и тишина стала приобретать какие-то напряженные оттенки, словно перед грозой.
Build started.
- Поторопитесь, вам нужно прочитать эти файлы исходного кода.
- Ч-что? Что за.
— Давай, давай, — сказал я, — послышался удар кнута, сопровождаемый криком Васи.
— Вы читаете эти файлы, вводите всю информацию в таблицу лексем.
Если вы столкнулись с чем-то непонятным, нажмите запорный клапан с соответствующим сообщением об ошибке.
И ПОСПЕШИТЕ! Вася развернул длинный свиток с названием «главный» и начал его читать.
Сразу бросилось в глаза неудобное форматирование, буквы все время сливались, образуя беспорядок, имена переменных содержали не более трех букв — сложно было запомнить, объявлена переменная или нет. Та же история произошла и с названиями методов.
Васе казалось, что он знаком с этим кодом, но думать было некогда — его так часто били розгами, что он едва мог нормально прочитать написанное.
Закончив с одним файлом, Вася присел отдохнуть и тут же получил серию новых ударов.
Придя в себя, он развернул еще один свиток с именем «Крнаме» и начал все сначала.
Потом были файлы «qwerty», «MegaUtils», «dList» и т. д. У Васи начали уставать глаза, болела спина от бесконечных ударов кнутом и розгами, руки тряслись от постоянного записи лексем в стол - Вася был в аду.
Спустя очень большое количество времени Васе всё же удалось просмотреть все файлы и внести информацию в таблицу токенов.
— Ну наконец-то, — он вытер пот со лба.
-Почему оно развалилось? Возьмите таблицы лексем, проверьте их синтаксическую корректность и на основе этих данных постройте дерево разбора! Если вы что-то упустите, вам придется все переделывать заново.
Принимайтесь за работу! Вася стал сравнивать данные таблицы с Книгой правил и рисовать на огромном листе бумаги дерево операторов и операндов.
Строку за строкой, жетон за жетоном он сравнивал записи.
Сверху за вершиной, край за краем он нарисовал дерево.
В его глазах маячили символы, много символов, им не было конца.
И тут на глаза Васе попалась строчка, не указанная в правилах.
Недолго думая, он потянул за рычаг с надписью «Синтаксическая ошибка».
Тотчас же работа прекратилась, плети кончились, лист, на котором было нарисовано дерево, был очищен, и в комнате снова воцарилась зловещая тишина.
Вася упал на пол в изнеможении.
Ему не пришлось долго отдыхать; через две минуты работа началась.
все сначала.
Вася в отчаянии крикнул «Нет», но его спина была обожжена парой новых ударов, и ему пришлось читать все файлы заново.
Какую-то долю вечности, как показалось Васе, он просматривал свитки с исходным кодом и проверял таблицу лексем.
К счастью, синтаксических ошибок больше не было, но судьбу Васи это не облегчило; впереди ждало новое испытание.
«Ой, возьми синтаксическое дерево и отметь правильность набора», — скомандовал голос, ударив беднягу кнутом.
Усталость Васи давала о себе знать, он все путался при проверке шрифтов, но ощущение, что, если он ошибется, он все сделает заново, добавляло немного энтузиазма в его работу.
- Теперь сгенерируйте то, что у вас есть, на промежуточный язык.
И не забывайте оптимизировать то, что получаете!!! Вася вздрогнул — он никогда раньше оптимизаций не делал.
Он не любил выносить повторяющиеся куски кода в отдельный метод, не часто использовал циклы, даже называл переменные как можно короче, поскольку считал, что все эти мелочи отвлекают от основного занятия — программирования.
Зачем думать об оптимизации, если важна сама программа? Но как бы критично ни было мнение Васи, пара ударов сделала свое дело - он начал оптимизировать.
Он просматривал отдельные строки кода и пытался найти для них лучший вариант. Он разворачивал циклы, собирал последовательности строк в пару более коротких и переписывал некоторые фрагменты.
У Васи гудела голова.
Казалось, будто сам дьявол наказывал его за годы написания плохого кода.
Оптимизировав последнюю оставшуюся строку, Вася упал на колени и выдавил: - Меня это достало уже.
- Как ты не можешь? А кто будет генерировать машинный код? Кстати, я делаю это сотни раз в день и не жалуюсь.
Каждый день я читаю ваш ужасный код, изучаю типы ваших бессмысленных переменных, оптимизирую всю вашу посредственную креативность, чтобы в итоге получить программу, которая даже не запустится, потому что вы забыли написать вызов модуля! Я вынужден делать это снова и снова, пока вы наконец не доберетесь до его регистрации.
И не получаю ни одного слова благодарности, наоборот, постоянно слышу «Компилируй быстрее, вредитель!», «Что это за ошибка? В моем коде все правильно!» У меня нет возможности сказать то, что я думаю о тебе, потому что у меня нет рычага, чтобы использовать правильные фразы.
Но если бы они были, вы бы побоялись нажать «Компилировать»… А теперь вставайте и генерируйте машинный код! Вася подчинился и начал заменять инструкции промежуточного языка инструкциями машинного кода.
Руки еле поднимались, зрение затуманилось, в ушах раздавался свист, ноги подкашивались, спина горела от новых ударов, шея еле держала кипящую от бесконечного потока информации голову.
Да, Вася попал в ад реднека-кодера.
Он знал это наверняка.
Если ему когда-нибудь удастся выбраться отсюда, он перестанет писать плохой код, начнет форматировать свои исходники, давать осмысленные имена переменным и методам, начнет оптимизировать свои программы и никогда, никогда больше не проклинать компилятор! Build successfull. Elapsed time: 00:01:19.
… Вася открыл глаза.
В офисе никого не было.
Среда разработки была открыта на экране монитора.
Курсор мигал на одной из неформатированных строк.
Вася потянулся к клавиатуре и нажал Ctrl+Backspace. Курсор побежал, унося с собой всё, что было написано за последние месяцы работы.
Оставив чистый исходный файл, Вася встал, посмотрел на консоль вывода компилятора и сказал: «Спасибо».
Теги: #Управление разработкой #Идеальный код #Фантастика #компилятор #истории #Вася
-
Не Только Nginx...
19 Oct, 24 -
Люди Против Pvs-Studio: Первый Дубль
19 Oct, 24 -
Кэширование И Сжатие
19 Oct, 24 -
Радио–Т №68
19 Oct, 24