UNIX-коаны Мастера Фу

Eric S. Raymond, “The Unix Koans of Master Foo”, public translation into Russian from English More about this translation.

Translate into another language.

Мастер Фу и Десять Тысяч Строк

Однажды Мастер Фу сказал заезжему программисту: — В одной строке shell-скрипта больше духа Unix, чем в десяти тысячах строк кода на Си.

Программист, гордящийся своим мастерством в Си, ответил: — Как же так? Ведь Си - язык, на котором реализовано само ядро Unix!

На что Мастер Фу ответил: — Это так. Тем не менее, в одной строке shell-скрипта больше духа Unix, чем в десяти тысячах строк Си.

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

Мастер Фу ответил: — Все что ты сказал правда. Но в одной строке shell-скрипта больше духа Unix, чем в десяти тысячах строк кода Си.

Программист посмеялся над Мастером Фу и встал, чтобы уйти. Но Мастер Фу кивнул на своего ученика Нуби, который писал строку shell-скрипта на соседней доске, и сказал: — Господин программист, обратите внимание на этот конвейер. Реализованный на чистом Си, разве он не охватывает десять тысяч строк?

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

—А сколько часов работы и отладки потребуется для реализации этого на Си? — спросил Нуби.

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

— И кто же лучше понимает дух Unix? — спросил Мастер Фу. — Тот, кто пишет десять тысяч строк, или тот, кто, понимая тщетность усилий, извлекает пользу, не кодируя?

Услышав это, программист достиг просветления.

Мастер Фу и Script Kiddie

Незнакомец из страны Вут пришел к Мастеру Фу, во время его завтрака со своими учениками.

— Я слышал о вашем величии, — сказал он. — Плз, научите меня тому, что постигли вы.

Ученики Мастера Фу смотрели друг на друга, смущенные варварским языком незнакомца. Мастер Фу только улыбнулся и ответил: — Вы хотите изучить Путь UNIX?

— Я хочу быть кулхацкером, - ответил незнакомец. — и повелевать всеми компьютерами.

— Я не учу этому Пути, — ответил Мастер Фу.

Незнакомец заволновался: — Чувак, Вы не более чем позер, — сказал он. — Если бы Вы что-нибудь знали, Вы научили бы меня.

— Существует путь, — сказал Мастер Фу. — Который принесёт тебе мудрость, — Мастер написал IP-адрес на клочке бумаги. — Взлом этого сервера не должен представлять для тебя особой трудности, так как его охрана некомпетентна. Возвращайся и расскажи мне, что ты найдешь.

Поклонившись незнакомец вышел. Мастер Фу закончил трапезу.

Прошли дни, затем месяцы. О незнакомце забыли.

Годы спустя, незнакомец из страны Вут вернулся.

— Будьте Вы прокляты! — сказал он. — Я взломал этот сервер, это было легко, как Вы и сказали. Но ФБР схватило меня и бросило в тюрьму.

— Хорошо, — сказал Мастер Фу. — Ты готов к следующему уроку. — Он написал IP-адрес на листе бумаги и протянул его незнакомцу.

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

Мастер Фу улыбнулся: — Здесь, — сказал он. — Начало мудрости.

Услышав это, незнакомец достиг просветления.

Рассуждения Мастера Фу о Двух Путях

Мастер Фу наставлял своих учеников:

— В учении дхармы есть направление, выражаемое мантрой Старейшины Макилроя: — Делай хорошо одну вещь, — которая подчеркивает, что программное обеспечение движется по пути UNIX, если оно ведет себя просто и последовательно, и обладает свойствами, которые могут быть легко смоделированы в голове пользователя и использованы другими программами.

— Но есть и другое направление в учении Дхармы, примером которого может служить великая мантра Старейшины Томпсона: — Сомневаясь, используй грубую силу, — и различные сутры о большей ценности 90% функций прямо сейчас, чем 100% позже, что подчеркивает надежность и простоту реализации.

— Теперь скажите мне: каким программам присущ дух UNIX?

Помолчав, Нуби заметил:

— Учитель, эти учения могут противоречить друг другу.

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

— Когда возникают подобные граничные ситуации, поведение программного обеспечения становится непредсказуемым и сложным. Конечно, это не путь UNIX?

Мастер Фу кивнул в знак согласия.

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

— Таким образом, попытка изначально охватить все граничные случаи, гарантируя "простоту описания", может на деле привести к созданию кода, который излишне усложнен или слишком неустойчив, или который в случае, если он переполнен ошибками, не будет завершен никогда. Конечно, это не путь UNIX?

Мастер Фу кивнул в знак согласия.

— Что же тогда присуще пути дхармы? — спросил Нуби.

Мастер ответил:

— Когда орел летит, забывает ли он, что его лапы касались земли? Когда тигр настигает свою жертву, забывает ли он о моменте, проведенном в воздухе? Три фунта VAX!

Услышав это, Нуби достиг просветления.

Мастер Фу и Методист

Когда Мастер Фу и его ученик Нуби посещали святые места, по вечерам Мастер Фу имел обыкновение выступать перед неофитами UNIX тех городов и сёл, где они останавливались на ночлег.

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

— Если при доводке вы не профилируете регулярно ваш код в поисках узких мест, то вы уподобляетесь рыбаку, который закидывает сеть в озеро, в котором нет рыбы, — сказал Мастер Фу.

— Верно ли тогда и то, — сказал консультант по методологии, — Что если вы не замеряете постоянно вашу производительность при управлении ресурсами, то вы походите на рыбака, закидывающего сеть в пустое озеро?

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

— Но, — сказал методист, — Почему же, уронив сеть в озеро, он искал её в лодке?

— Потому что он не умел плавать, — ответил Мастер Фу.

Услышав это, методист достиг просветления.

Рассуждения Мастера Фу о Графическом Пользовательском Интерфейсе (GUI)

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

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

Мастер Фу ничего не сказал, но указал на луну. Находившийся рядом пёс залаял на руку мастера.

— Я не понимаю вас! — сказал программист.

Мастер Фу всё так же молча указал на образ Будды. Потом указал на окно.

— Что вы хотите мне сказать? — спросил программист.

Мастер Фу указал на голову программиста. Затем он указал на камень.

— Почему вы не можете объяснить яснее? — требовал программист.

Мастер Фу задумчиво нахмурился, дважды щелкнув программиста по носу, бросил его в ближайший мусорный бак.

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

В этот момент, программист достиг просветления.

Мастер Фу и Старая Школа

Опытный Unix-программист, услышав о мудрости Мастера Фу, пришел к нему за советом. Подойдя к мастеру, он трижды поклонился и сказал:

— Мастер Фу, я серьезно обеспокоен. В годы моей юности, те, кто следовал Великому Пути Unix, использовали программное обеспечение, которое является простым и незамысловатым, как ed и mailx. Сегодня они используют Vim и mutt. Завтра, я боюсь, они будут использовать KMail и Evolution, и Unix будет подобен Windows — заплывшим и скрытым под GUI.

Мастер Фу сказал: — А какое программное обеспечение используете Вы, когда хотите сделать плакат?

Программист ответил: — Я...никогда не делал этого. Но я уверен, что смог бы использовать LaTeX или pic, оформив его без GUI, в характерном Пути Unix.

Тогда Мастер Фу сказал: — Кто сможет переправиться через реку: тот, кто мечтает о пароме, или же тот, кто едет на попутках к ближайшему мосту?

Услышав это, программист достиг просветления.

Мастер Фу и Инструментарий Shell

Новичок в Unix пришел к Мастеру Фу и спросил: — Я смущен. Ведь путь Unix — когда каждая программа сосредоточена на одной задаче и делает ее хорошо?

Мастер Фу кивнул.

Новичок продолжал: — Ведь путь Unix — когда колесо не изобретается снова?

Мастер Фу кивнул снова.

— Тогда почему, существует несколько инструментов со схожими способностями в обработке текста: sed, awk, Perl? С каким из них я получу лучшую практику в пути Unix?

Мастер Фу спросил новичка: — Имея текстовый файл, каким инструментом ты сделаешь его копию, где несколько слов заменено по твоему желанию?

Новичок нахмурился и сказал: — Регулярные выражения Perl излишни для такой простой задачи. Я не знаю awk, и недавно писал скрипты для sed. Имея некоторый опыт с sed, на данный момент я выберу его. Однако если задачу нужно выполнить только единожды, текстового редактора будет достаточно.

Мастер Фу кивнул и ответил: — Когда ты голоден — ешь; испытывая жажду — пей; будучи уставшим — спи.

Услышав это, новичок достиг просветления.

Мастер Фу и Встревоженный Новичок

Один начинающий послушник многому научился у Мастера, но чувствовал, что упускает нечто важное. Он долго размышлял над своими сомнениями, прежде чем набрался смелости и поведал Мастеру Фу о проблеме.

— Мастер Фу, — спросил он. — Почему пользователи Unix не используют антивирусы? А дефрагментаторы? Средства для удаления вредоносного ПО?

Мастер Фу улыбнулся и сказал: — Когда твой дом хорошо сконструирован, не требуется ставить подпорки для удержания крыши на месте.

Новичок ответил: — Не лучше ли всё равно использовать эти вещи, просто для надежности?

Мастер Фу дотянулся до ближайшего мотка верёвки и начал обвивать её вокруг ног новичка.

— Что вы делаете? — с удивлением спросил новичок.

— Обматываю твою обувь. — ответил Мастер Фу.

Услышав это, новичок достиг просветления.

Рассуждения Мастера Фу о Возвращении в Windows

Один ученик сказал: — Мы научились тому, что Unix — не просто операционная система, но также и стиль решения проблем.

Мастер Фу кивнул в знак согласия.

Ученик продолжил: — Тогда, Великий Путь Unix может быть применен к другим системам?

Мастер Фу немного помолчал, потом сказал: — В любой операционной системе есть дорога к Великому Пути, если только мы найдем её.

Ученик снова продолжил: — Тогда, что насчет Windows? Она предустановлена на большинство компьютеров, и хотя её инструменты крайне низкопробны, они легки для использования начинающими. Несомненно, пользователи Windows получат приемущество от философии Unix.

Мастер Фу кивнул снова.

Ученик сказал: — Как тогда просветленным в Пути Unix вернуться в мир Windows?

Pages: ← previous Ctrl next
1 2

© Copyright © 2003 Eric S. Raymond

Original (English): The Unix Koans of Master Foo

Translation: © onb, saturn721, Vadim, Michael_Dragunov .

translated.by crowd

Like this translation? Share it or bookmark!