Любов і піраньї - Кидрук Максим Иванович. Страница 3
Утім, трьох років роботи з програмними кодами вистачило, аби я відкрив для себе одну просту, але далеко не очевидну істину: за своєю суттю процес написання будь-якої комп’ютерної програми цілком і повністю відтворює процес становлення людського індивіда в суспільстві. Іншими словами, програмування — це наче дзеркало життя. Всі базові закони та правила, на основі яких створюються комп’ютерні програми, можна напряму, без змін та адаптації, застосовувати у житті.
Не буду заглиблюватись у філософію і не завалюватиму вас надокучливими програмістсько-світоглядними поняттями, ідеями та переконаннями. Якщо ви програміст або маєте хоч якийсь стосунок до програмування, ви зрозумієте мене без зайвих слів. Коли ж ви далекі від програмування, просто повірте мені на слово, а при нагоді попросіть знайомого програміста розказати вам про співвідношення між законами coding’у та головними житейськими принципами. Натомість перейду відразу до суті.
Одним із найголовніших законів, золотим правилом програміста, є аксіома: коли все працює — нічого не чіпай!
Поясню детальніше на прикладі з власного досвіду. Іноді «програмер» мусить не просто створювати «користувацькі» додатки та прикладні бібліотеки «з нуля», а й перероблювати чи виправляти програмні тексти своїх колег. Повірте, інквізиторські тортури — то ніщо, порівняно з намаганнями розібратись у чужому коді! Позаяк шляхів вирішення однієї проблеми безліч, то й алгоритми розв’язків, написані різними людьми, можуть бути абсолютно різними. Настільки різними, як арктична пустеля і тропічні джунглі. Через це іноді легше застрелити розробника, а потім застрелитися самому, ніж розбиратися у послідовності команд чужої програми.
Проте буває навпаки. Трапляються випадки, коли молоді недосвідчені програмісти з власної ініціативи беруться переробляти коди колег. Ось, скажімо, Вася, Петя чи Коля відкриває у debugger’і [5] відредагований і скомпільований код, написаний його товаришем, якимось Сашком, Славком чи Микитою, дивиться на виструнчену послідовність циклів, рекурсій [6] і підпроцедур та й каже:
— Ото вже цей Сашко (Славко чи Микита)! Хто ж так програми пише? Ай-яй-яй! От неекономне використання ресурсів! І чого його тільки в універі навчали? Це ж примітивна задача, зовсім простенький алгоритм, а він «роздув» програмний код до п’ятнадцяти тисяч рядків! Та тут можна все прописати, вклавшись максимум у п’ять тисяч…
Після таких слів Вася (Петя чи Коля), почісуючись від справедливого обурення, запасається пивом, закочує рукави і береться безжально правити вихідні коди, створені Сашком (Славком чи Микитою)… Днів так через три, маючи перед собою п’ятдесяттисяч хаотично переплетених рядків програмного коду і абсолютно неробочу кінцеву програму, марно намагаючись знайти помилку у рядку за номером 40243, Вася (Петя чи Коля) задумається над тим, що життя — то дуже інтересна штука, що з вибором професії можна було б не поспішати, і що Сашко (Славко чи, трясця його матері, Микита) не такий уже й дундук, яким видавався три дні назад.
Хворобою під назвою «патологічний потяг до оптимізації» страждають усі без винятку молоді програмісти. Потрібно щонайменше три роки стажу, щоби «програмер» нарешті розкумекав: код робочої програми (цебто, програми, яка працює відповідно до заданого алгоритму правильно і без збоїв), хай який недосконалий чи неоптимальний, нізащо, за жодних умов не можна змінювати чи оптимізувати. Навіть коли програма робить усе правильно, а ти не знаєш чи не розумієш, чому і як вона працює, все одно — не слід нічого чіпати!
Я веду до того, що те саме правило можна (і треба, чорт забирай!) застосовувати до людського життя. Чуваки, якщо у вашому житті все в порядку, заклинаю: не намагайтеся зробити його кращим!!!
Станом на початок осені 2009-го мені всього вистачало. Все працювало злагоджено, гармонійно і ритмічно. Всього було вдосталь — як я вже казав, то був феншуй, глибокий і всеосяжний консонанс між ангелами і демонами в моїй душі. Я був задоволений усім і жив на повну губу, але, як то завше буває, вказуючи на скалку в чиємусь оці, я не бачив дровиняки, котра стирчала з власного.
Словом, все було просто чудово, мов у кіно, — блін, мов у казці! — поки одного дня я не надумав, що настав час зробити таке чудове життя ще кращим, цебто, висловлюючись програмістськими термінами, проапґрейдити його, і… вирішив закохатися.
Твою дивізію вперед…
Що ж на цей раз? Звали її… хм… звали її… ну, скажімо, Маруською її звали. А що? Гарне ім’я. Це ж не якась там Тракторина чи, прости Господи, Даздрапєрма.
Маруська працювала асистентом якихось дуже серйозних проектів у американському посольстві в Києві, що стосувалися боротьби з хабарництвом у щільних рядах народної української влади. Вона файно лопотіла англійською (з чудовим американським акцентом), але жахливо цілувалася, прокушуючи мені губи до крові. Вона була гарною, такою гарною, що аж очі різало. Ефектна (люблю це слово!) синьоока блондинка з кучерявим від природи волоссям. Середнього зросту, з ідеальною фігурою.
Маруська мала живий і веселий характер. Могла легко вписатися в будь-яку компанію і підтримати розмову на будь-яку тему. Іноді, у колі близьких людей і тільки при доконечній потребі, могла соковито лайнутися, що, проте, лиш додавало їй певного шарму, якоїсь хлопчачої прямолінійності та відчайдушності. До Марусі залицявся голова податкової адміністрації міста Києва, хтось із вищих київських ментів, два череватих депутати від Партії регіонів і одне підстаркувате мурло з Канади, яке, за його словами, походило з відомого графського роду. У них у всіх були квартири в Києві, дорогі блискучі машини, дружини, діти і великі животи, словом, усе, про що тільки може мріяти сучасна синьоока кучерява білявка [7].
На той час, коли я познайомився з Маруською, до моїх активів можна було зарахувати лиш кілька виданих книжок про 3D-моделювання, півтисячі шикарних знімків з фіордів на півночі Норвегії, півтора десятка захопливих історій із джунглів на півдні Мексики, два гарних меча, прикуплених під час поневірянь Європою, незакінчене PhD у Швеції і дев’ятнадцять модельок пасажирських літачків у масштабі 1:500. Звісно, я міг би посперечатися, але, по суті, я програвав тим товстомордим пердунам по всіх статтях.
А проте, панове, чудеса таки трапляються у нашому світі! Сталося так, що ми з Маруською… ні, не закохалися до нестями один в одного. Спочатку ми просто потоваришували.
Вперше ми зустрілися задовго до подій, про які йдеться у цій книзі. Нас познайомила наша спільна подруга. Я тоді був ще зовсім молодим, а Маруська зустрічалася з іншим хлопцем, а тому певний час ми з нею підтримували чисто офіційні стосунки. Проте якось зовсім непомітно ми почали зближуватись. Я не знаю, що вона знайшла в мені, але мені імпонував її розум, простота та невичерпна енергійність (іншими словами, таке ж саме, як і в мене, шило у задниці). А потім… я поїхав на тривале навчання до Швеції, причому більшість, хто мене знав, пророкували, що я навіки застрягну в Стокгольмі.
Незважаючи на від’їзд, я не поривав контактів з Маруською. Ми повсякденно переписувалися в Інтернеті, я регулярно надсилав їй свої фото та описи мандрівок Європою, вона ж слала знімки себе прекрасної, зроблені під час різноманітних відряджень у Сполучені Штати та ділових поїздок разом з міліціянтами і депутатами (борцями з корупцією) по Україні.
Тож якийсь час ми з Маруською просто дружили. Дружили, дружили, аж поки я не осягнув, що діло зайшло надто далеко і якось ми вже дуже сильно дружимо. Це, ясна річ, почало мене непокоїти. Я дедалі частіше починав думати про неї не тільки як про друга, однак півтори тисячі кілометрів, що розділяли Стокгольм та Київ, утримували мене від будь-яких рішучих кроків. Я взагалі не був певен, чи прагну стосунків з настільки впевненою в собі, самодостатньою та рішучої жінкою. Ну, ви мене розумієте… Така як візьме в оборот, то забудеш, як маму рідну звати…
[5] «Bug» з англ. означає «жучок». На програмістському слензі так називаються помилки в тексті програми. Відповідно «debugger» — це спеціалізований модуль, який допомагає розробникам відшуковувати помилки у щойно написаному коді. Якщо помилок не знайдено, debugger компілює код, цебто створює з нього виконавчий *.exe файл програми.
[6] рекурсія — виклик функції чи процедури з неї самої (ред.).
[7] Білявки — без образ! Вважайте, що я написав це у стані афекту!