"На Крыльях Надежды. Проза" - читать интересную книгу автора (Озорнин Прохор)

Книга Рыцаря Программирования


"Если нет ветра, трава не колышется. Если нет программ, компьютер бесполезен"

Так говорил Великий Программист


“К востоку от города, в живописной долине стоит огромный вычислительный центр с множеством сверхмашин”, - промолвил человек.

Мальчик заметил, что он облачен в необычные, невиданные им ранее одежды, а на голове у него находится странного вида шлем. Он никогда не встречал его раньше. “Видишь?”,- продолжил человек. “Ты пойдешь туда и расскажешь другим обо всем, что найдешь там”.

“Но как я проберусь туда?”, - спросил мальчик.

“Тебе решать”, - ответил незнакомец.

Мальчик задумался и опустил голову. Когда же он вновь поднял ее – говорившего человека уже не было.

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

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

Так прошло много месяцев, незнакомец так и не вернулся, и мальчик позабыл его; теперь он был непреложно уверен, что должен найти этот центр и разгадать его тайну. По звукам, приносимым ветром, он определит, где тот находится, и тогда проникнет в него. Он потерял интерес к школе и к тем, с кем дружил прежде. Он сделался излюбленной мишенью для насмешек и острот своих сверстников, твердивших: “Он не такой, как мы. Часами он слушает ветер, вместо того, чтобы играть с нами.”

И все потешались над ним.

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

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

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

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

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

- Что вы здесь делаете? – спросил он.

- Жду тебя, - ответил он.

Хотя минуло уже много лет, человек выглядел точно так же, как и раньше, в день их первой встречи.

Он протянул ему чистую тетрадь.

- Пиши: “В то мгновение, когда человек, решивший стать Рыцарем Программирования, делает свой первый шаг, он познает лежащий перед ним Путь”.

- А кто такой “Рыцарь Программирования?”

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

Он никогда не считал себя Рыцарем Программирования. А человек, похоже, прочитал его мысли, и сказал: “На это способны все. И хотя никто не считает себя Рыцарем Программирования, каждый человек может стать им.”

Мальчик проглядел страницы тетради. Человек снова улыбнулся.

“Пиши о Рыцаре Программирования”, – ответил он.


* * *


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

Рыцарь Программирования чтит основное положение И. Цзина: "Настойчивость полезна". Он знает, что упрямство не имеет ничего общего с настойчивостью. Ибо бывают проекты, работа над которыми длится дольше, чем это необходимо, и они истощают силы и гасят воодушевление. И в такие минуты Рыцарю приходит на ум: "Затянувшийся проект в конце концов уничтожает и пыл его работников" . И тогда он прекращает работать над программами, и дает передышку самому себе, вновь возвращаясь в мир, который другие считают единственно существующим. Но никогда не упустит он момент вдохновения, чтобы вновь продолжить свое творение.

Рыцарь Программирования знает, что иные алгоритмы имеют свойство повторяться. Часто сталкивается он с трудностями, которые некогда уже преодолевал, и оказывается в сложном положении, из которого уже выходил с честью, и это смущает его дух: ему кажется, что если все повторяется, то он топчется на одном месте, не в силах двинуться вперед.

"Я ведь уже писал это", - сетует он сердцу своему.

"Писал, - отвечает ему сердце. - Но так и не реализовал до конца свои идеи."

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

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

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

Рыцарь не проводит дни свои в стремлении создать программу, которую предназначили ему другие.

Рыцари стремятся, чтобы никогда не померкла для мира полезность их программ.

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

Рыцарь Программирования не боится показаться безумным. Вслух и в полный голос он разговаривает сам с собой, скользя глазами по бессмысленным для непосвященных строкам текста.

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

Рыцарь Программирования порой кажется сумасшедшим, но это всего лишь притворство.

"Настоящий Рыцарь Программирования сам выбирает себе то, что хочет написать", - так сказал Великий Программист.

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

Но есть программисты, которых это не устраивает. Они стараются показать ему его незнание и несовершенство созданного им, вызвать его на ссору, сделать все, чтобы вывести его из себя. И в такие минуты сердце говорит ему: "Отринь оскорбление, оно не усилит твои способности. Ты лишь впустую потеряешь время, пытаясь помочь ему постигнуть Дао Программирования".

Рыцарь Программирования не тратит времени понапрасну, ибо знает: то, что должно быть написано - будет написано.

Иногда Рыцарь Программирования вспоминает слова Великого Программиста: "После трех дней без программирования жизнь становится бессмысленной."

Каждый язык и каждая технология приветствуют его. Он ощущает свое кровное родство с ними, он чувствует, что часть его Души заключена в бессмысленных для других потоках цифр, в строках текста и том, что его современники называют "компьютерным железом". И тогда, принимая опыт и помощь других Рыцарей и Божьих Знамений, он позволяет своей Стезе вести его туда, где ожидают своего сотворения мириады программ, востребованные жизнью.

Порой бывает, что ему некогда ночевать, порой его мучает бессонница. "Ничего, - думает Рыцарь, - Это входит в профессию. Меня же никто не заставлял идти таким путем. Я сам так решил."

В этих словах заключена вся его мощь: он выбрал свою стезю, и ему не на что сетовать, не на кого жаловаться.

Время настанет - через столько-то столетий, - когда Вселенная придет на помощь Рыцарям Программирования, и останется глуха и безразлична к тем, кто не постиг красоту Творчества.

Написанные ранее программы требуют обновления.

Новые идеи требуют пространства.

Дух и разум требуют новых вызовов.

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

Важное - пребудет, бесполезное – сгинет.

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

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

Но вот, уже продвигаясь по пути создания программы, создает Рыцарь, что существуют трудности и препятствия, которых не принимал в расчет. Если он станет дожидаться пришествия Музы Программиста и бояться допустить ошибки, то никогда не сдвинется с места; чтобы сделать первый шаг, нужна смелость - ибо все предусмотреть невозможно, особенно при проектировании, особенно при кодировании.

Рыцарь Программирования знает свои слабые стороны. Но и знает и то, чем одарен.

Иные жалуются: "Нам не представилось возможности". Быть может, они правы, но Рыцарь никогда не даст себе перестать программировать по этой причине - нет, он напряжет до последнего предела силы и дарования.

Рыцарь знает, что программисты не боятся сложных программ, ибо уверены в своей силе. И тогда Рыцарь старается постичь, на что же он может рассчитывать. И он проверяет свое вооружение, а состоит оно из трех вещей - Знания, Вдохновения и Веры. Если в наличии и первое, и второе, и третье, Рыцарь без колебаний продолжает путь.

Рыцарь Программирования знает, что никакого программиста нельзя считать глупцом, и жизнь научит люБого - пусть даже для этого потребуется время.

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

"Заказчики неблагодарны", - замечают по этому поводу иные его товарищи.

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

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

Всякому Рыцарю Программирования уже случалось создавать недостойный код.

Всякому Рыцарю Программирования уже случалось брести неверным путем.

Всякому Рыцарю Программирования уже случалось терзаться из-за сущих пустяков.

Всякому Рыцарю Программирования уже случалось приходить к выводу, что он - не Рыцарь Программирования.

Всякому Рыцарю Программирования уже случалось поступаться своим творческим долгом.

Всякому Рыцарю Программирования уже случалось говорить новому заказчику "да", когда хотелось сказать "нет".

Всякому Рыцарю Программирования уже случалось ненавидеть те программы, которые он когда-то любил.

Вот потому он и вправе называться Рыцарем Программирования, потому что прошел через все это и не утратил надежды стать лучше, чем был.

Рыцарь всегда помнит слова, изреченные Великим Программистом: "Хорошо написанная программа это свой собственный рай; плохо написанная программа это свой собственный ад".

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

Рыцарь Программирования не изменяет своих решений. Прежде чем приступить к новому проекту, он предается продолжительным размышлениям - оценивает степень своей готовности, меру своей ответственности, свой долг перед командой. Стараясь сохранить душевное равновесие, он кропотливо исследует каждый свой шаг - так, словно от него зависит все. Но в тот миг, когда решение принято, Рыцарь уже движется вперед без оглядки: у него нет сомнений в правильности сделанного им выбора, и, даже если обстоятельства оказываются не такими, как он представлял, Рыцарь не сворачивает с избранной стези. И, если его решение было верным, он одерживает победу в битве - пусть даже будет она более долгой, чем представлялось прежде. Если же решение было ошибочным, он потерпит поражение и вынужден будет все начинать сначала - но уже во всеоружии горького опыта.

Рыцарь Программирования, однажды начав писать программу, идет до конца. Рыцарь знает, что наилучшие наставники - это люди, вместе с которыми он каждый день пишет код.

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

Рыцарь Программирования знает - самая маленькая и неизвестная никому программа в один день может стать тем, что потребуется миллионам.

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

На одной скрижали написано: "Думай в первую очередь о себе. Твои программы - твоя интеллектуальная собственность. Стремись продать их подороже". На другой читает Рыцарь такие слова: "Кто ты такой, чтобы писать великие вещи? Неужели ты не видишь насколько мало и неполезно созданное тобой?".

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

Порой Рыцарь вспоминает одну из легенд, передаваемых из поколения в поколение Рыцарями Программирования друг другу:

"Однажды учитель проходил мимо ученика. Учитель заметил, что внимание ученика поглощено карманной компьютерной игрой. "Прости меня," сказал он, "могу я посмотреть?"

Ученик отвлекся от игры и подал ее учителю. "Я вижу, тут предлагается три уровня игры: Легкий, Средний и Тяжелый," сказал учитель. "Однако каждое такое устройство имеет еще один уровень игры, когда оно не старается ни победить, ни быть побежденным." "Прошу вас, великий учитель," взмолился ученик, "как найти этот таинственный уровень?" Учитель бросил устройство на пол и раздавил ногой. И внезапно ученик обрел просветление".

Рыцарь верит, что способен преобразить мир.

Рыцарь Программирования иногда думает: “То, что я не сумел создать, не будет создано никогда”. Это не совсем так: он должен творить, но должен и покорно ждать, пока найдется тот, кто вынесет его творение на свет.

Рыцарь умеет сохранить равновесие между самостоятельной работой и работой командной.

Потребность создавать программы заложена в самом его естестве, подобно потребность есть и пить, подобно потребности любить труд. Если солнце заходит, а не Рыцарь не испытал счастья от созданного им за день – значит, что-то неправильно.

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

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

Не следует забывать: порой мощь разнообразных обстоятельств действеннее самого изощренного хитроумия. Долго может длиться его битва над созданием работающего кода и битва эта истощает силы. И когда сроки работы над заданием подходят к концу, ни блеск, ни ум, ни убедительность доводов, ни то, что называют “шарм”, не могут предотвратить беду.

И потому Рыцарь Программирования отдает должное грубой силе времени, противостоящей ему.

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

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

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

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

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

“Сумасшедший”, - говорят о нем любители продумывать каждую деталь заранее, расходую драгоценное время.

“Строит воздушные замки”, - говорят скептики.

“Как может он выбирать то, что лишено логики?”, - недоумевают третьи.

Но Рыцарь знает: наитие – это азбука, с помощью которой можно постичь Дао, и потому продолжает прислушиваться к голосу внутри себя.

Рыцарь Программирования всегда стремится к совершенству. За каждой строкой его кода – столетия мудрости и размышлений. Каждая программа, каждый алгоритм должен сочетать в себе всю силу и проворство Рыцарей прошлого. Каждое движение его мысли и рук чтит те движения, которые предшествующие поколения Рыцарей пытались передать нынешним через Традицию.

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

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

Рыцарь Программирования совершенствует красоту своего кода.

Рыцарь Программирования преображает свой разум.

Рыцарь Программирования учится строить великое.

Рыцарь Программирования никогда не свернет со своей стези.

Рыцари Программирования преобразят этот мир.


 * * *


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

Великий Программист встал.

“Прощай, - сказал он. Теперь ты понял, что значит наш путь – он нераздельно слит с магическим и манящим миром машин, миром цифр, миром технологий. Но это и мир с шумом ветра, криками чаек, шелестом весенней листвы – потому что мир в мире гораздо большем. Ты сможешь полюбить наш мир.”

“Скажи мне, кто ты?”, - спросил мальчик. Но голографический образ Великого Программиста уже таял, сопровождаемый мерным шелестом и тихим гудением машин.


07.02.2005