?

Log in

No account? Create an account

Previous Entry | Next Entry

По наводке ЖЖ-юзера scheddi нашел в инете и спёр себе совершенно потрясающий текст. Воистину, истинное ДАО -- прекрасно...


Перевод Джоффри Джеймса (Geoffrey James)
Переложение Дюка Хилларда (Duke Hillard)
Перевод на русский язык Михаила Тарасова и Марка Шевченко



ДАО
ПРОГРАММИРОВАНИЯ

Оглавление

Книга 1. Молчаливая Пустота

Книга 2. Древние Учителя

Книга 3. Разработка

Книга 4. Кодирование

Книга 5. Сопровождение

Книга 6. Менеджмент

Книга 7. Корпоративная мудрость

Книга 8. Аппаратное и программное обеспечение

Книга 9. Эпилог

Книга 1
Молчаливая Пустота

Так говорил Учитель:
“Когда вы научитесь извлекать
коды ошибок из обыкновенной ловушки,
настанет время вашего ухода”.

1.1


В молчаливой пустоте сформировалось таинственное Нечто, и это было рождением. С тех пор Оно постоянно изменяется, находясь в одиночестве и неподвижности. Это исток всех программ. Мне неведомо Его имя, поэтому буду называть Его Дао Программирования.

Если Дао прекрасно, то и операционная система прекрасна. Если операционная система прекрасна, то и компилятор прекрасен. Если компилятор прекрасен, то и прикладные программы прекрасны. И пользователь доволен и живёт в гармонии с миром.

Дао уплывает вдаль и возвращается с утренним ветром.

1.2


Из Дао родился машинный язык. Из машинного языка родился ассемблер.

Из ассемблера родился компилятор. Сейчас существует десять тысяч языков.

У каждого языка есть предначертание, даже у самого простого. Каждый язык выражает Инь и Ян программирования. Каждый язык имеет своё место в Дао.

Но не программируйте на КОБОЛе, если можете этого избежать!

1.3


В начале было Дао. Из Дао появились Пространство и Время. Таким образом, Пространство и Время — это Инь и Ян программирования.

Программистам, которые не постигли Дао, всегда не хватает пространства и времени для выполнения их программ. А программистам, которые постигли Дао, всегда доступны время и пространство для достижения их целей.

А как же может быть иначе?

1.4


Мудрый программист слышал о Дао и следует ему. Обычный программист слышал о Дао и ищет его. Плохой программист слышал о Дао и смеётся над ним.

Но тот, кто не смеётся, так же далёк от Дао, как и тот, кто смеётся.

Чем выше звуки, тем труднее их услышать. Путь вперёд есть путь к отступлению. Великий талант — это мёртвый среди живых. Даже в совершенной программе есть ошибки.

Книга 2
Древние Учителя

Так говорил Учитель:
“Три дня без программирования
делают жизнь бессмысленной.”

2.1


Программисты древности были окружены тайной. Мы не можем измерить всю глубину их мудрости, но мы можем рассказать о них.

И кто может узнать секреты их сердец и умов?

Ответ существует только в Дао.

2.2


Великому Учителю Тьюрингу однажды приснилось, что он стал машиной. Когда он проснулся, то воскликнул: “Я не знаю больше, кто я — Тьюринг, которому снится, что он машина, или машина, которой снится, что она Тьюринг!”

2.3


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

Менеджер сказал: “Никогда больше я не должен посылать тебя на конференции. Эти программисты живут по ту сторону физического мира. Они считают жизнь абсурдом, случайным стечением обстоятельств. Они приходят и уходят, и нет границ их знаниям. Забывая ушедшее, они живут только ради своих программ. Почему они должны соблюдать социальные условности?

Они пребывают в Дао.”

2.4


Ученик спросил Учителя: “Я знаю программиста, который никогда не разрабатывал, не документировал и не тестировал свои программы. Но все считают его лучшим программистом в мире. Почему?”

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

Книга 3
Разработка

Так говорил Учитель:
“Когда программа тестируется,
поздно вносить исправления в проект”.

3.1


Как-то раз на большую компьютерную выставку пришёл человек. Заходя, он сказал охраннику у двери: “Я великий вор, прославившийся своими ограблениями. Будьте бдительны, на этой выставке я не останусь без добычи”.

Эта речь сильно обеспокоила охранника, так как внутри находилась компьютерная техника, которая стоила миллионы долларов — он следил за этим человеком очень внимательно. Но человек просто бродил от стенда к стенду, бормоча что-то про себя.

Когда человек выходил, охранник осмотрел его и обыскал его одежду, но ничего не нашёл.

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

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

Человек улыбнулся. “Я ворую идеи”, — сказал он.

3.2


Жил некогда на свете Учитель, который писал неструктурированные программы. Его ученик, который пытался подражать ему, так же стал писать неструктурированные программы. Когда ученик попросил Учителя оценить его прогресс, учитель отругал его за написание таких программ, сказав: “Что позволено Учителю, не позволено ученику. Ты должен постигнуть Дао до того, как структура станет трансцендентальной”.

3.3


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

“Операционную систему”, — ответил программист.

Волшебник недоверчиво хмыкнул. “Конечно, бухгалтерский пакет по сложности находится рядом с операционной системой, но он проще”, — сказал он.

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

Волшебник Ву кивнул и улыбнулся. “Это всё хорошо и прекрасно, но что из них проще отлаживать?”

Программист не дал ответа.

3.4


Менеджер пришёл к Учителю и показал ему требования на новое приложение. Менеджер спросил Учителя: “Сколько потребуется времени для разработки этой системы, если я назначу на неё пять программистов?”

“Один год”, — ответил Учитель.

“Но эта система нужна нам как можно скорее! Сколько потребуется времени, если я назначу десять программистов?”

Учитель нахмурился. “В этом случае потребуется два года.”

“А если назначу сотню программистов?”

Учитель пожал плечами. “Тогда разработка никогда не закончится”, — сказал он.

Книга 4
Кодирование

Так говорил Учитель:
“У хорошо написанной программы
есть свой собственный рай,
у плохо написанной — свой собственный ад.”

4.1


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

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

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

Если программа не соответствует этим требованиям, она будет никому не нужной. Единственный путь исправить положение — переписать программу.

4.2


Ученик спросил Учителя: “У меня есть программа, которая когда запускается, а когда и нет. Я следовал правилам программирования, но она всё равно не работает. Зачем же нужны эти правила?”

Учитель ответил: “Ты не получил желаемого, потому что ты не постиг Дао. Только дурак ожидает рационального поведения от людей. Почему ты ожидаешь его от машины, которая разработана людьми? Компьютеры только симулируют детерминизм, одно лишь Дао совершенно.

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

“Но как узнаю, что я достиг просветления?”, — спросил ученик.

“Твои программы начнут работать правильно”, — ответил Учитель.

4.3


Учитель объяснял природу Дао одному из своих учеников. “Дао присутствует во всех программах — даже в самых маленьких”, — сказал Учитель.

“Есть ли Дао в ручных калькуляторах?” — спросил ученик.

“Да”, — последовал ответ.

“А в видеоиграх?”, — продолжал ученик.

“Оно есть даже в видеоиграх”, — ответил Учитель.

“А в ДОС?”

Учитель кашлянул и чуть отодвинулся. “Урок на сегодня закончен”, — сказал он.

4.4


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

“Превосходно!”, — воскликнул принц, — “твоя техника потрясающа!”

“Техника?” — сказал программист, отворачиваясь от терминала. — “Всё, что я делаю, — это Дао, оно находится выше техники! Когда я впервые начал программировать, я увидел перед собой целую кучу задач. Через три года я больше не видел кучи. Вместо неё я пользовался подпрограммами. Но сейчас я их не вижу. Я весь пребываю в бесформенном ничто. Моё сознание праздно. Мой дух, свободный в работе без плана, следует своим собственным инстинктам. Короче, мои программы пишут себя сами. Правда, иногда возникают трудные проблемы. Я вижу как они приходят, я замедляюсь, я безмолвно наблюдаю. Потом я изменяю одну строку кода и трудности исчезают, как дымка. И я компилирую программу. Потом сижу и позволяю радости от работы заполнить меня всего. На момент я закрываю глаза и тогда выключаю компьютер.”

Принц Вонг сказал: “Если бы все мои программисты были такими мудрыми!”

Книга 5
Сопровождение

Так говорил Учитель:
“Даже если программа будет
состоять из трёх строчек,
когда-нибудь она потребует сопровождения.”

5.1


Часто открываемая дверь не нуждается в смазке.

Быстрый поток невозможно затормозить.

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

Программы загнивают, если ими не пользоваться.

Это великие тайны.

5.2


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

“Она будет готова завтра”, — ответил программист.

“Я думаю, твоя оценка нереалистична”, — сказал менеджер, — “подумай ещё раз.”

Программист подумал ещё немного.

“У меня есть некоторые идеи, которые я хочу реализовать. Всё вместе это займёт две недели”, — был его ответ.

“Ну, я не буду ходить к тебе всё это время”, — сказал менеджер, — “когда напишешь программу, просто скажи мне об этом сам.”

Программист согласился с ним.

Через несколько лет менеджер уходил в отставку. Идя на званный ужин, посвящённый этой отставке, он обнаружил программиста спящим у терминала. Тот программировал всю ночь.

5.3


Однажды ученику дали задание написать несложный финансовый пакет.

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

Когда Учитель спросил об этом у ученика, тот возмутился. “Не будьте таким нетерпеливым”, — сказал он, — “когда-нибудь я добавлю в программу финансовую часть.”

5.4


Бросит ли хороший фермер на произвол судьбы урожай, который он выращивает?
Проглядит ли хороший учитель даже самого скромного ученика?
Станет ли хороший отец морить голодом своего единственного ребёнка?
Откажется ли хороший программист от сопровождения своей программы?

(продолжение -- в следующем посте )

promo torin_kr december 5, 2015 19:43 26
Buy for 200 tokens
Этот пост -- заказной. Меня его попросила написать одна моя хорошая знакомая, с которой мы знакомы такое количество лет. что аж страшно становится. Как говорит в таких случаях мой младший брат -- "Да ну нафиг. Столько и не живут". Живут... к сожалению. Ладно, это было лирическое…

Comments

( 1 comment — Leave a comment )
(Deleted comment)
torin_kr
Jul. 23rd, 2013 05:44 am (UTC)
Через пару часов опубликую продолжение...
( 1 comment — Leave a comment )

Latest Month

June 2019
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Page Summary

Powered by LiveJournal.com
Designed by Akiko Kurono