![](https://habrastorage.org/getpro/habr/post_images/d01/0a8/d8e/d010a8d8e2294fec4371e08c60de9a89.jpg)
Книга 1
Безмолвная пустота.
И сказал Великий Программист: «Если ты научился выхватывать ошибочный код из эксепшена, значит пришла пора тебе уходить».
1.1
Нечто загадочное образуется, возникает из безмолвной пустоты, в ожидании оно одиноко и недвижно, однако в то же самое время находится в постоянном движении. Это исходник всех программ. Я не знаю его имени, поэтому я буду звать его Дао Программирования.
Если Дао велико, то операционная система велика.
Если операционная система велика, то компилятор велик.
Если компилятор велик, тогда приложение велико.
Пользователь доволен, и в мире наступает гармония.
Дао программирования уплывает далеко, и возвращается с утренним ветром.
1.2
Дао породило компьютерный язык. Компьютерный язык породил ассемблер. Ассемблер породил компилятор. Теперь существует десять тысяч языков. Каждый из них имеет своё предназначение, пусть и скромное. Каждый язык выражает Инь и Янь программного обеспечения. Каждый язык имеет своё место в Дао. Только не нужно программировать на COBOL, если этого можно избежать.
1.3
В начале было Дао. Дао породило Время и Место.
Поэтому Время и Место – это Инь и Янь программирования.
Программистам, не постигшим Дао, всегда не хватает времени и места для их программ. Постигшим Дао всегда хватает места и времени для достижения их целей.
И как может быть иначе?
1.4
Мудрый программист, услышав о Дао, следует ему. Средний программист, услышав о Дао, ищет его. Слабый программист, услышав о Дао, смеётся над ним.
Не было бы смеха, не было бы и Дао.
Самый высокий звук труднее всего услышать. Движение вперёд – это вид отступления. Великий талант проявляется поздно. Даже идеальная программа содержит ошибки.
Книга 2
Древние мастера.
И сказал Великий Программист:
«После трёх дней без программирования жизнь теряет смысл»
2.1
Древние программисты были загадочны и глубоки. Мы не можем постичь их мысли, поэтому мы только описываем их внешность.
Начеку, словно лиса, пересекающая поток.
Внимательный, как генерал на поле битвы.
Приветливый, как хозяйка, встречающая гостей.
Простой, как необработанное дерево.
Непроницаемый, как тёмные озёра в пещерах.
Кто может раскрыть секреты их сердец и умов?
Ответ лежит лишь в Дао.
2.2
Великому мастеру Тьюрингу однажды приснилось, что он — машина. Когда он проснулся, он вскричал: «Я не знаю, то ли я Тьюринг, которому снится, что он машина, то ли я машина, которой снится, что она – Тьюринг!»
2.3
Программист из большой компании посетил конференцию, и по возвращению, отчитываясь перед менеджером, сказал: «Что за программисты работают на другие компании? Они ведут себя плохо и не следят за собой. Их волосы длинны и неухожены, их одежда мятая и старая. Они разгромили апартаменты и издавали неприличные звуки на моей презентации»
Менеджер ответил: «Нельзя тебя отправлять на конференции. Эти программисты живут за пределами физического мира. Жизнь для них – абсурд, случайное совпадение. Они приходят и уходят, не зная границ. Без забот они живут, думая только о своих программах. Зачем им задумываться над социальными условностями? Они живут в гармонии с Дао»
2.4
Новичок спросил Мастера: «Вот программист, который не занимается дизайном приложений, документацией или тестами. И тем не менее все, кто его знает, считают его одним из лучших программистов в мире. Почему так?»
Мастер ответил: «Этот программист познал Дао. Он преодолел рубежи дизайна — его не выводит из себя падение системы, он принимает это без озабоченности. Он преодолел рубежи документации — ему уже всё равно, кто увидит его код. Он преодолел рубежи тестирования — все его программы совершенны внутри себя, безмятежны и элегантны, их цель очевидна. Воистину, он познал тайну Дао»
Книга 3
Дизайн.
И сказал Великий Программист:
«Когда программу тестируют, уже слишком поздно менять её дизайн»
3.1
Жил однажды человек, который пошёл на компьютерную выставку. В первый день, входя, он сказал охраннику: «Я великий вор, известный своим искусством краж. Предупреждаю тебя, эта выставка не избегнет хищений».
Речь эта взволновала охранника, потому что на выставке было представлено компьютерного оборудования на миллионы долларов, поэтому он зорко следил за человеком. Однако человек просто ходил от стенда к стенду, тихонько напевая про себя.
На выходе охранник отвёл человека в сторону и обыскал, но не нашёл ничего.
На второй день выставки человек вернулся и упрекнул охранника, говоря: «Вчера я ушёл с отличным уловом, а сегодня он будет ещё лучше». Охранник следил за каждым его движением, но безуспешно.
На последний день выставки охранник более не мог сдерживать своё любопытство. «Уважаемый вор»,- сказал он,- «я озадачен так, что не могу найти покоя. Прошу, просвети меня. Что же такое ты крадёшь?»
Человек улыбнулся, и сказал: «я краду идеи».
3.2
Жил однажды Великий Программист, писавший неструктурированные программы. Начинающий кодер в попытках раздразнить его также начал писать неструктурированные программы. Когда новичок попросил мастера проверить его труд, мастер критиковал его за неструктурированность, говоря: «что можно Мастеру, нельзя новичку. Сначала ты должен постичь Дао, а потом преодолевать рубежи структурированности».
3.3
Жил однажды программист при дворе военачальника Ву. Военачальник спросил его: «Что проще разработать – модуль для бухгалтерии или операционную систему?»
«Операционную систему» — ответил программист.
Военачальник недоверчиво хмыкнул. «Уж наверняка модуль для бухгалтерии тривиален по сравнению со сложностью ОС», — сказал он.
«Не так это», — сказал программист. «При разработке модуля для бухгалтерии программист работает посредником между людьми с разными представлениями о предмете, о том, как он должен работать, какие отчёты выдавать и как поступать с налогами. Операционка же не ограничена внешними проявлениями. При разработке ОС программист ищет простейшей гармонии машины и идей. Поэтому ОС легче разработать.»
Военачальник Ву кивнул и улыбнулся. «Это всё хорошо, ну а что же тогда легче дебажить?»
Ничего не сказал программист ему в ответ.
3.4
Менеджер отправился к Великому Программисту и показал ему техзадание для новой программы. Менеджер спросил Мастера: «Сколько времени займёт у вас разработка этой системы, если я назначу вам пять программистов?»
«Один год» — быстро ответил Мастер.
«Но нам она нужна вчера! Как долго вы будете её разрабатывать, если я вам дам десять программистов?»
Мастер нахмурился, и сказал: «тогда два года».
«А если я назначу вам сотню программистов?»
Мастер пожал плечами: «В таком случае, она никогда не будет завершена»
Часть 2