15 июля 2014 в 22:54

Дао программирования, часть 1 перевод


Книга 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
Автор оригинала: Geoffrey James
Вячеслав Голованов @SLY_G
карма
265,2
рейтинг 2,0
Редактор Хабрахабра
Похожие публикации
Самое читаемое Разработка

Комментарии (16)

  • +5
    Спасибо за перевод! Жду второй части.
  • +1
    Отлично!
  • +25
    Эх, и раритет же вы откопали — возраст этому тексту этак четверть века, если не больше. Примерно в то же время, когда появился первый перевод, по интернету гулял текст «Вначале было Слово… и слово было два байта»…
    Вообще в переводе (тем более современном) он слегка теряет в своей красоте, что ли. Винтажное «to snatch the error code from the trap frame» выглядит куда как лучше чем современное «выхватывать ошибочный код из эксепшена» (тем более что вы не совсем точно переводите, дословно это скорее «выхватывать код ошибки из ловушки»).
    Но вообще текст хорош, спору нет.
    • +6
      Я честно говоря, так и не понял, что такое frame trap. Это что-то из глубокой ассемблерной науки.
      • +4
        Ну почти. Trap Frame создаётся когда выбрасывается исключение и содержит значения регистров процессора и адрес инструкции, вызвавшей исключение. Trap Frame и сейчас есть, его никто не отменял и в отладчике его можно посмотреть. Впрочем «выхватывать ошибочный код из эксепшена» — тоже имеет право быть, почему бы и нет.
    • 0
      Может всё же лучше «выхватывать код ошибки из исключения»?
  • +6
    я просто оставлю это здесь
    taopooh.narod.ru/5/dao_prog.html
  • +4
    Эта статья должна была начаться с части 0.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +13
    > Великому мастеру Тьюрингу однажды приснилось, что он — машина. Когда он проснулся, он вскричал: «Я не знаю, то ли я Тьюринг, которому снится, что он машина, то ли я машина, которой снится, что она – Тьюринг!»

    — Эх, Петька, Петька, — сказал Чапаев, — знавал я одного китайского коммуниста по имени Цзе Чжуан. Ему часто снился один сон — что он красная бабочка, летающая среди травы. И когда он просыпался, он часто не мог взять в толк, то ли это бабочке приснилось, что она занимается революционной работой, то ли это подпольщик видел сон, в котором он порхал среди цветов. Так вот, когда этого Цзе Чжуана арестовали в Монголии за саботаж, он на допросе так и сказал, что он на самом деле бабочка, которой все это снится. Поскольку допрашивал его сам барон Юнгерн, а он человек с большим пониманием, следующий вопрос был о том, почему эта бабочка за коммунистов. А он сказал, что она вовсе не за коммунистов. Тогда его спросили, почему в таком случае бабочка занимается подрывной деятельностью. А он ответил, что все, чем занимаются люди, настолько безобразно, что нет никакой разницы, на чьей ты стороне.
    — И что с ним случилось?
    — Ничего. Поставили его к стенке и разбудили.
    — А он?
    Чапаев пожал плечами.
    — Дальше полетел, надо полагать.
    — Понимаю, Василий Иванович, понимаю, — сказал я задумчиво.

    (с) Чапаев и Пустота
  • +8
    Дао, выраженное словами, не есть истинное Дао.
  • –8
    Чо автор курил, интересно?
    • +2
      Распечатки древних эхоконференций на вот такой бумаге:
  • 0
    Спасибо за перевод!!!
    Жду с нетерпением следующей части))
  • +1
    Спасибо, мой день начался прекрасно

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.