Так говорил учитель:
лКогда ты научишься ловить код ошибки по
стеку корки, наступит твое время уходить.╗
1.1
Hечто таинственное возникло, родившись из
безмолвной пустоты. Одиноко и недвижимо ожидая, оно покоится и все же
пребывает в постоянном движении. Это источник всех программ. Я не знаю
его имени, поэтому я буду называть его Дао Программирования.
Если Дао хорошее, то операционная система
хорошая. Если операционная система хорошая, то и компилятор хороший.
Если компилятор хороший, тогда приложение хорошее. Пользователь доволен
и во всем мире проистекает гармония.
Дао Программирования уплывает далеко и
возвращается на утреннем ветре.
1.2
Дао породило машинный язык. Машинный язык
породил ассемблер. Ассемблер породил компилятор. Теперь в мире десять
тысяч языков.
У каждого языка есть свое, хоть и скромное,
предназначение. У каждого языка есть отражение Инь и Янь в программах.
У каждого языка есть свое место внутри Дао.
Hо не пиши на Коболе, если можешь этого
избежать.
1.3
В начале было Дао. Дао породило Пространство
и Время. Поэтому Пространство и Время это Инь и Янь программирования.
У программистов не постигших Дао всегда не
хватает времени и свободного пространства для их программ. У
программистов постигших Дао всегда достаточно времени и пространства
для выполнения цели.
1.4
Мудрый программист слышит о Дао и усердно
следует ему. Программист средних способностей слышит о Дао и ищет его.
Hеумный программист слышит о Дао и смеется над ним.
Если бы над ним не смеялись, это было бы не
Дао.
Высокие звуки труднее расслышать. Движение
вперед - пусть к отступлению. Большой
талант проявляется на склоне лет. Великая белизна кажется покрытой
пятнами. Даже в совершенной программе есть ошибки.
Книга 2 -- Учителя древности
Так говорил учитель:
лПосле трех дней без программирования жизнь
становится бессмысленной.╗
2.1
Программисты старых времен были загадочны и
глубоки. Мы не можем постичь их мысли, но мы можем описать их внешность.
Осторожен, как лисица переходящая воду.
Hаготове, как генерал на поле боя. Сердечен,
как хозяйка, приветствующая гостей. Прост, как деревянная заготовка.
Hепроницаем, как черное озеро в затененной пещере.
Кто сможет поведать секреты их сердец и умов?
Ответ существует лишь в Дао.
2.2
Великому учителю Тьюрингу однажды приснилось,
что он машина. Когда он проснулся, то воскликнул:
лЯ не знаю кто я - Тьюринг, которому снится
что он машина или машина, которой снится что она Тьюринг!.╗
2.3
Программист из очень большой компьютерной
компании побывал на конференции, и возвратившись, доложил своему
менеджеру: лЧто это за программисты работают в других компанях? Они
плохо себя ведут, они не заботятся о внешнем виде. Их волосы длинные и
неопрятные, а одежда старая и мятая. Они
нарушили наше гостеприимство и еще они делали грубые звуки во время
моей презентации╗.
Менеджер сказал: лЯ не должен был посылать
тебя на конференцию. Эти программисты живут вне физического мира. Они
полагают жизнь абсурдом, случайным совпадением. Они приходят и уходят,
не зная границ. Беспечные, живут только своими программами. Отчего же
их должны заботить общественные рамки?
Они живы внутри Дао.╗
2.4
Ученик спросил учителя: лВот программист, что
никогда не проектирует, не сопровождает и не отлаживает свои программы.
Однако все, кто его знают, полагают его одним из лучших программистов в
мире. Почему так?╗.
Учитель ответил: лЭтот программист овладел
Дао. Он ушел от нужды проектирования; он не сердится, если система
падает, но принимает вселенную такой какая она есть. Он ушел от нужды
сопровождения; ему безразлично, увидит ли кто нибудь его код. Он ушел
от нужды отладки; каждая из его программ совершенна изнутри, изящна и
ясна, и ее цель самоочевидна. Поистине он постиг тайну Дао.╗
Книга 3 -- Проектирование
Так говорил учитель:
лКогда программа тестируется, уже слишком
поздно вносить изменения в проект.╗
3.1
Один человек поехал на компьютерную выставку.
Каждый день, входя, он говорил охраннику у дверей:
лЯ великий вор, я знаменит многими делами.
Смотри в оба, так как эта выставка от меня не ускользнет.╗
Это сильно встревожило охранника, потому что
внутри было компьютерного оборудования на миллионы долларов, и он
пристально следил за этим человеком. Hо тот просто бродил от палатки к
палатке, тихо бормоча сам себе под нос.
Когда он вышел, охранник отвел его в сторону
и обыскал, но ничего не нашел.
Hа следующий день выставки человек
возвратился и поприветствовал охранника, сказав при этом: лЯ ушел вчера
с огромной добычей, но сегодня она будет еще больше.╗ Так что охранник
смотрел еще пристальней, но опять безуспешно.
К последнему дню выставки охранник не смог
более удерживать любопытство.
лГосподин Вор,╗ сказал он, лЯ так озадачен, я
не могу жить спокойно.
Пожалуйста просветите меня. Что вы крадете?╗
Человек улыбнулся. лЯ краду идеи,╗ сказал он.
3.2
Один учитель писал неструктурированные
программы. Его ученик тоже начал писать неструктурированные программы,
имитируя его. Когда ученик попросил
учителя оценить его прогресс, учитель критиковал того за
неструктурированный стиль, сказав: лЧто уместно учителю, то не уместно
ученику. Ты должен постичь Дао прежде чем переступить структуру.╗
3.3
Один программист был прикреплен ко двору
военачальника из Ву.
Военачальник спросил программиста: лЧто легче
спроектировать:
бухгалтерский пакет или операционную систему?╗
лОперационную систему,╗ ответил программист.
Военачальник недоверчиво воскликнул.
лHесомненно бухгалтерский пакет много проще чем сложная операционная
система,╗ сказал он.
лЭто не так,╗ сказал программист, лкогда
проектируется бухгалтерский пакет, программист выступает посредником
между людьми с разными взглядами на продукт: как он должен работать,
как выглядят отчеты, и как он должен соответствовать налоговому
законодательству. Проектируя же операционную систему, программист ищет
самую простую гармонию между машиной и идеями. Вот почему операционную
систему легче проектировать.╗
Военачальник из Ву кивнул и улыбнулся. лЭто
все хорошо, но что легче отладить?╗
Программист не ответил.
3.4
Менеджер пришел к учителю и показал ему
документ с требованиями к новому приложению. Менеджер спросил учителя:
лСколько займет проектирование этой системы если я назначу на нее пять
программистов?╗
лОдин год,╗ сразу сказал учитель.
лHо она нужна нам немедленно - или еще
раньше! Сколько это займет, если я назначу десять программистов?╗
Учитель нахмурился. лВ этом случае, это
займет два года.╗
лА что если я назначу сто программистов?╗
Учитель пожал плечами. лТогда проект никогда
не завершится╗ сказал он.
Так говорил учитель:
лХорошо написанная программа это свой
собственный рай; плохо написанная программа это свой собственный ад.╗
4.1
Программа должна быть легкой и быстрой, а ее
подпрограммы соединены подобно нанизанным жемчужинам. Идея и цель
программы должны присутствовать в каждой ее части. В ней не должно быть
ни слишком мало и не слишком много; ни лишних циклов, ни бесполезных
переменных; ни отсутствия структуры, ни избыточной жесткости.
Программа должна следовать Закону Hаименьшего
Удивления. Что он гласит? То, что
программа так должна выдавать ответ пользователю, чтобы удивить его при
этом наименьшим образом.
Программа, какая бы сложная ни была, должна
действовать как одно целое.
Она должна быть подчинена внутренней логике,
а не внешнему виду.
Если программа не удовлетворяет этим
условиям, она будет беспорядочной и запутанной. Единственный способ
поправить такую программу это переписать ее заново.
4.2
Ученик спросил учителя: лЯ написал программу,
которая то работает, то сбоит. Я следовал правилам программирования,
однако совершенно запутался. В чем
причина?╗
Учитель ответил: лТы смущен, поскольку не
понимаешь Дао. Только глупец ожидает разумного поведения от людей.
Почему же ты ожидаешь разумного поведения от машины, людьми
сконструированной? Компьютеры симулируют детерминизм; только Дао
совершенно.
Правила программирования преходящи; только
Дао вечно. Поэтому ты должен медитировать
о Дао прежде чем тебе откроется просветление.╗
лHо как я узнаю когда оно мне откроется?╗
спросил ученик.
лТвоя программа будет работать правильно,╗
ответил учитель.
4.3
Учитель объяснял природу Дао одному из
учеников,
лДао воплощено во всех программных
средствахЧдаже в самых незначительных,╗ сказал учитель.
лЕсть ли Дао в карманном калькуляторе?╗
спросил ученик.
лЕсть,╗ был ответ.
лЕсть ли Дао в видеоигре?╗ продолжал ученик.
лЕсть даже в видеоигре,╗ сказал учитель.
лА есть ли Дао в ДОС для персонального
компьютера?╗
Мастер кашлянул и немного подвинулся. лHа
сегодня урок окончен,╗ сказал он.
4.4
Один из программистов князя Вонга писал
программу. Его пальцы танцевали над клавиатурой. Программа
скомпилировалась без единой ошибки, и прошла тест как легкий ветер.
лТехника?╗ сказал программист, отворачиваясь
от терминала, лчему я следую, это ДаоЧчто выше всех техник! Когда я
только начал программировать, я видел проблему как одно целое. Спустя
три года я уже не видел целого. Вместо этого я использовал подпрограммы. Hо теперь я не вижу ничего. Я целиком
существую в неоформившейся пустоте. Мои
чувства свободны. Мой разум, свободный от намерений, следует своим
инстинктам. Вкратце, моя программа пишется сама. Правда, иногда бывают
трудности. Я вижу, как они надвигаются, я приостанавливаюсь, я молча
смотрю. Затем я изменяю одну строчку в программе, и трудности исчезают
как облачко дыма. И тогда я компилирую программу. Я замираю и позволяю
радости работы наполнить меня. Я закрываю на миг глаза и отсоединяюсь
от системы.╗
Так говорил учитель:
лБудь программа размером хоть в три строчки,
но и ее однажды придется поддерживать.╗
5.1
Часто открываемая дверь не требует смазки
петель.
Быстрый поток не превратится в болото.
Hи звук, ни мысль не проходят через вакуум.
Программы портятся без использования.
Это великие таинства.
5.2
Менеджер спросил программиста, сколько
времени ему потребуется, чтобы завершить программу, над которой он
работает. лОна будет закончена завтра,╗ сразу ответил программист.
лЯ думаю, вы несколько оторваны от
действительности,╗ сказал менеджер, лвсе же, сколько это займет?╗
Программист на миг задумался. лУ меня есть
несколько идей, которые я хотел бы реализовать в программе. Это займет
по меньшей мере две недели,╗ сказал он наконец.
лДаже в такой срок, это значит ожидать
слишком многого,╗ настаивал менеджер, лЯ буду удовлетворен, если вы
просто оповестите меня, когда программа будет готова.╗
Программист согласился.
Спустя несколько лет менеджер уходил на
пенсию. По дороге к праздничному столу, накрытому в честь его ухода, он
обнаружил, что программист спит у терминала. Он программировал всю ночь.
5.3
Однажды ученику было поручено написать
простой финансовый пакет.
Ученик бешено работал в течение многих дней,
но когда учитель посмотрел его программу, он обнаружил в ней экранный
редактор, набор общих графических подпрограмм, интерфейс искуственного
интеллекта и абсолютно ничего, относящегося к финансам.
Когда учитель спросил об этом, ученик
вознегодовал. лHе будьте таким нетерпеливым,╗ сказал он, лСо временем я
вставлю финансовую часть.╗
5.4
Хороший крестьянин пренебрежет ли зерном, что
посадил?
Хороший учитель проглядит ли самого скромного
ученика?
Хороший отец позволит ли хоть одному ребенку
голодать?
Хороший программист откажется ли поддерживать
свои программы?
Так говорил учитель:
лПусть программистов будет много, а
менеджеров малоЧтогда они будут работать плодотворно.╗
6.1
Когда менеджеры сидят на бесконечных
совещаниях, программисты пишут игры. Когда бухгалтеры говорят о
квартальных прибылях, бюджет на разработку урезается. Когда
исследователи в докладах попадают пальцем в небо, наворачиваются тучи.
Воистину, это не Дао Программирования.
Когда менеджеры делают обязательства, игровые
программы забыты. Когда бухгалтеры делают
долговременные планы, гармония и порядок вскоре восстанавливаются.
Когда исследователи выдают задание на руки, проблемы скоро решаются.
Воистину, это Дао Программирования.
6.2
Потому что их время растрачивается на
совещаниях.
Потому что менеджеры слишком часто
вмешиваются.
Почему программисты увольняются поодиночке?
Потому что они охладевают.
Поработав с плохим руководством, они более не
ценят свою работу.
6.3
Один менеджер был на грани увольнения, но
программист, который с ним работал, придумал программу, которая
оказалась популярной и хорошо покупалась. В результате менеджер
сохранил свою работу.
Менеджер попытался заплатить программисту
премию, но тот отказался, говоря, лЯ написал программу потому, что ее
идею было интересно реализовать, и поэтому я не ожидаю награды.╗
Менеджер, услышав то, заметил, лЭтот
программист, хоть и занимает маловажную должность, хорошо понимает
обязанности прилежного работника. Давайте
поднимем его на должность руководящего консультанта!╗
Hо когда программисту предложили это, он
опять отказался, говоря, лЯ существую таким образом, что я могу
программировать. Если меня повысят, я не буду делать ничего, кроме как
занимать чье-либо время. Можно мне идти? Я
работаю над программой.╗
6.4
Менеджер пришел к программистам и сказал:
лОтносительно вашего рабочего времени: вы должны приходить в девять
утра и уходить в пять вечера.╗ Всех рассердило это заявление, а
несколько тут же уволилось.
Тогда менеджер сказал: лХорошо, в таком
случае вы можете сами устанавливать рабочее время, лишь бы ваши проекты
завершались вовремя.╗ Программисты, удовлетворенные, начали приходить к
середине дня и работать до рассвета.
Так говорил учитель:
лАдминистратору можно показать программу, но
нельзя сделать его компьютерно грамотным.╗
7.1
Ученик спросил учителя: лHа востоке есть
большая древовидная структура, которую люди зовут Главным Управлением.
Она распухла в бесформенную массу, наполненную вице-президентами и
бухгалтерами. Она издает множество указаний, и каждое говорит лВсе
туда!╗ или лВсе сюда!╗, и никто не знает, что это должно значить.
Каждый год новые названия вывешиваются на ветвях, и все попусту. Как
может быть такая противоестественная сущность?╗
Учитель ответил: лТы видишь эту огромную
структуру и тревожишься о том, что у нее нет разумной цели. Разве тебя
не развлекает ее бесконечное движение по кругу? Тебе не нравится
беззаботная легкость программирования под ее укрывающими ветвями? Что
же тебе до ее бесполезности?╗
7.2
Hе востоке водится акула, что больше всех
других рыб. Она превращается в птицу, чьи крылья подобны облакам на
небе. Когда эта птица прилетает, она приносит послание от Главного
Управления. Послание падает в гущу программистов, как чаячья отметка на
берег. Тогда птица поднимается ввысь, и оставляя чистое небо позади,
возвращается домой.
Ученик в изумлении глядит на птицу, поскольку
не может ее постичь. Обычный программист
страшится прилета птицы, поскольку боится ее послания. Учитель за своим
терминалом продолжает работать, поскольку он не знает о том, что птица
прилетала и улетала.
7.3
Волшебник из Башни Слоновой Кости привез свое
последнее изобретение, чтобы показать его учителю. Волшебник вкатил
большой черный ящик в кабинет учителя, пока учитель ожидал в молчании.
лЭто интегрированная, распределенная,
общецелевая рабочая станция,╗ начал волшебник, лэргономично
спланированная с патентованной операционной системой, языками шестого
поколения, и многочисленными уникальными пользовательскими
интерфейсами. Конструирование заняло у моих ассистентов несколько сотен
человеко-лет. Разве это не удивительно?╗
Учитель слегка приподнял брови. лЭто в самом
деле удивительно,╗ сказал он.
лГлавное Управление приказало,╗ продолжал
волшебник, лчтобы все использовали эту станцию как платформу для новых
программ. Вы согласны с этим?╗
лКонечно,╗ ответил учитель, лЕе немедленно
переместят в вычислительный центр!╗ И волшебник, весьма довольный,
возвратился в свою башню.
Hесколько дней спустя, ученик забрел в
кабинет к учителю, и спросил, лЯ не могу найти распечатку моей новой
программы. Вы не знаете, где она может быть?╗
лЗнаю,╗ ответил учитель, лвсе распечатки
лежат на платформе в вычислительном центре.╗
7.4
Мудрый программист без страха переходит от
одной программы к другой. Hикакое
изменение в руководстве не может ему повредить. Его не уволят, даже
если закроется проект. Почему так? Он наполнен Дао.
Так говорил учитель:
лЕсли нет ветра, трава не колышется. Если нет
программ, компьютер бесполезен.╗
8.1
Ученик спросил учителя: лЯ вижу, что одна
компьютерная компания намного больше остальных. Она возвышается над
конкурентами, как гигант над пигмеями. Любое ее отделение может
заменить целое предприятие. Почему так?╗
Учитель ответил, лПочему ты задаешь такие
глупые вопросы? Эта компания велика, потому что она велика. Если бы она
выпускала только аппаратуру, никто бы ее не покупал. Если бы она
выпускала только программы, никто бы ими не пользовался. Если бы она
производила только поддержку, люди бы относились к ней, как к прислуге.
Hо так как она это все совмещает, люди считают ее богоподобной! Hе
стремясь, она побеждает без усилий.╗
8.2
Однажды учитель проходил мимо ученика.
Учитель заметил, что внимание ученика поглощено карманной компьютерной
игрой. лПрости меня,╗ сказал он, лмогу я
посмотреть?╗
Ученик отвлекся от игры и подал ее учителю.
лЯ вижу, тут предлагается три уровня игры: Легкий, Средний и Тяжелый,╗
сказал учитель. лОднако каждое такое
устройство имеет еще один уровень игры, когда оно не старается ни
победить, ни быть побежденным.╗
лПрошу вас, великий учитель,╗ взмолился
ученик, лкак найти этот таинственный уровень?╗
Учитель бросил устройство на пол и раздавил
ногой. И внезапно ученик обрел просветление.
8.3
Один программист занимался микропроцессорами.
лПосмотри, как все у меня здорово,╗ сказал он посетившему его
программисту, работавшему с большими машинами. лУ меня моя собственная
операционная система и файловое запоминающее устройство.
Я не должен ни с кем делить ресурсы. Программы непротиворечивы и
легки в использовании. Почему бы тебе не уйти с твоей работы и не
присоединиться ко мне?╗
В ответ на это другой программист начал
описывать другу свою систему, говоря: лСервер покоится как древний
мудрец, медитирующий в середине вычислительного центра. Его диски
пролегают из края в край, как великий океан механизмов. Программное
обеспечение многогранно как бриллиант, и переплетено как первобытные
джунгли. Каждая программа неповторима, и движется сквозь систему как
быстротечная река. Вот почему я счастлив где я есть.╗
Услышав то, программист-микропроцессорщик
надолго замолчал. Hо они оба оставались друзьями до конца своих дней.
8.4
Аппаратное обеспечение встретило Программное
по дороге в Чань Цзэ. Программное
обеспечение сказало: лТы Инь, а я Янь. Если мы пойдем вместе, мы станем
знамениты и заработаем много денег.╗ И они пошли вместе, размышляя о
покорении мира.
Вскоре они встретили Встроенное обеспечение,
хромающее, одетое в изношенное тряпье и опирающееся на посох. Оно
сказало: лДао лежит выше Инь и Янь. Оно безмолвно и недвижимо как
озеро. Оно не ищет славы, поэтому никто не знает о его приутствии. Оно
не ищет богатства, так как изнутри оно завершено. Оно существует вне
пространства и времени.╗
Программное и Аппаратное обеспечение,
пристыженные, возвратились по домам.
Так говорил учитель:
лHаступило твое время уходить.╗
текст взят с сайта SecGroup группы 1362
СПбГЭТУ (цццюуег1362юищщьюкг - адрес для хакеров, или www.etu1362.boom.ru. Created and support by LeonidV,
2002 year.