Unix-way

Master Foo & MCSE

Однажды к Мастеру Фу явился знаменитый Windows-администратор и спросил его совета:
— Я слышал, ты могущественный волшебник в мире Unix. Не согласишься ли на обмен секретами, от которого мы оба только выиграем?

— Хорошо, что ты ищешь мудрость, — ответил Мастер Фу, — Но в Великом Пути нет секретов.

Администратор выглядел обескураженным:
— Но ведь говорят, что ты — Великий мастер Unix-систем, кто знает глубочайшие их секреты! Как и я в Windows: я сертифицированный инженер Microsoft. У меня имеются и другие знаки отличия, которые в мире встретишь нечасто. Я помню наизусть даже самые мрачные закоулки реестра. Я могу рассказать всё о Windows API, даже те легенды, которые в самом Редмонде уже полузабыты. Что за тайное знание даёт тогда тебе твою силу?

Мастер Фу ответил:
— У меня нет ничего. Ничто не скрыто, нечего и раскрывать.

Возмущённый администратор воскликнул:
— Отлично! Скажи мне тогда, если нет у тебя секретов: что же мне нужно знать, чтобы стать таким же могущественным в Великом Пути как ты?

Мастер Фу промолвил:
— Человек, что принимает секреты за знание, похож на того, кто в поисках света так крепко хватается за свечу, что тушит её пламя и обжигает свою руку.

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

Master Foo Discourses on Returning to Windows

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

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

Студент продолжил:
— Значит, Великий Путь подходит и другим операционным системам?

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

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

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

Студент сказал:
— Что ж, тогда возвращаются ли те, кто достиг просветления в Великом Пути, в мир Windows?

Мастер Фу ответил:
— Чтобы вернуться в Windows нужно просто загрузить её.

Студент воскликнул, распаляясь:
— Мастер Фу, если это так легко, почему тогда так много раздутых и сломанных приложений под Windows? Ведь и с графическим интерфейсом и модными цветами должна быть возможность писать элегантные приложения, но такое почти не случается. Что же тогда происходит с теми просветлёнными, кто возвращается в Windows?..

Мастер промолвил:
— Разбитое зеркало уже не отразит;
Опавшие цветы не вернутся на старые ветви.

Услышав это, все присутствующие обрели просветление

 

Master Foo and the Script Kiddie

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

— R слышал, чт0 тbl э1337ен, — начал он, — Пожалуйс7а, обуч1 меня вс3му, что зн@ешь.

Ученики мастера переглянулись, смущённые варварским языком странника. Но Мастер только улыбнулся и ответил:
— Ты желаешь обучиться Пути Unix?

— Я х0чу бытb магом-хакер0м! — отвечал странник, — и овлад3ть всеми ящиками мира!

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

Странник выглядел взволнованным:
— Чув@к, да тbl пр0ст0 позеR! — воскликнул он, — Знай ты х0тb что-н1будь, ты бы ра55казал мне!

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

Странник поклонился и вышел. Мастер закончил свою трапезу.

Шли дни, за ними месяцы. Странник был позабыт.

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

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

— Ты свихнулся?? — отпрянул тот. — После всего того, что со мной было, я и на милю не подойду к чужим ящикам!

Мастер Фу улыбнулся.
— Здесь, — промолвил он, — и начинается мудрость.

Услышав это, странник обрёл просветление.

 

Master Foo and the End User

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

Он поклонился Мастеру трижды.
— Я хочу научиться Великому Пути Unix, — начал он, — но командная строка приводит меня в замешательство.

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

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

Ученик начал, заикаясь, отвечать, но ничего не смог сказать.

Мастер Фу обернулся к пользователю.
— Расскажи мне, — спросил он, — почему ты ищешь Великий Путь?

— Я недоволен программным обеспечением, которое окружает меня, — сказал пользователь, — Оно не работает надёжно и не радует глаз и душу. Услышав, что Путь Unix, хоть и сложнее, но cовершеннее, я пытаюсь отбросить все барьеры и предрассудки.

— И чем занят ты в миру, — спросил Мастер, — что заставляет тебя бороться с программным обеспечением?

— Я архитектор, — ответил пользователь, — на многих домах в этом городе моя печать.

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

Услышав это, ученик обрёл просветление.

 

Master Foo and the Hardware Designer

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

Он сказал:
— Ходят слухи, что вы великий программист. Как много строк кода вы пишете в год?

Мастер Фу ответил вопросом:
— Как много квадратных дюймов кремния вы изготавливаете в год?

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

— А почему нет? — поинтересовался Мастер Фу.

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

Мастер Фу улыбнулся, затем поклонился ему.

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

 

Master Foo and the Ten Thousand Lines

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

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

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

На лице программиста отразилось огорчение:
— Но ведь через Си мы познаём благодать патриарха Ритчи! Мы становимся одним целым с операционной системой и машиной, достигая несравнимой производительности!

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

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

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

— А сколько часов бы потребовалось, чтобы написать и отладить такую программу? — поинтересовался Ньюби.

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

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

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

 

Master Foo and the Unix Zealot

Фанатик Unix, прослышав о мудрости Мастера Фу в Великом Пути, пришёл к нему за советом.

Мастер Фу сказал ему так:
— Когда Патриарх Томпсон изобрёл Unix, он не осознал этого. Позже он пришёл к пониманию, и не изобрёл более ничего.
— Когда Патриарх Макилрой изобрёл конвейер, он знал, что это преобразит программы, но он не знал, что это преобразит сознание.
— Когда Патриарх Ритчи изобрёл Си, он обрёк программистов на тысячу адов переполнения буфера, повреждения памяти и разыменования нулевого указателя!
— Воистину, патриархи были слепы и глупы!

Фанатика немало разозлили такие сентенции Мастера:
— Эти просветлённые, — возразил он, — завещали нам Великий Путь Unix. И если мы будем насмехаться над ними, мы потеряем всякое достоинство и переродимся как звери или инженеры Microsoft!

— Бывает ли код твой истинно чист от ошибок и упущений? — вопросил Мастер Фу.

— Нет, — признал фанатик, — такое не под силу человеку.

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

После этих слов на фанатика снизошло озарение.

 

Master Foo and the Programming Prodigy

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

В конце-концов молодой гений пришёл посетить Мастера, который встретил его с почтением и предложил ему чай. Гений принял его с ответной почтительностью и объяснил цель своего визита:
— Я пришёл к Вам, — сказал он, — в поисках оценки архитектуры и кода моего последнего проекта. Ибо проект этот исключительной сложности, и я не знаю никого, кто мог бы на равных объять его. Только признанный мастер, такой как Вы (и здесь гений низко поклонился), может обладать должной проницательностью.

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

Гений выглядел очень польщённым такой оценкой Мастера, но тот продолжил:
— Однако, я вижу один существенный недостаток.

— Недостаток? — встрепенулся гений, — Какой недостаток?

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

— Я не ищу сотрудничества с иными программистами, — свысока ответил гений, — Меня постигало разочарование каждый раз когда я считал, что нашёл того, кто может сравниться со мной мастерстве. Поэтому я работаю один.

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

— Кто эти «другие», о которых вы говорите? — потребовал ответа гений.

Мастер Фу ответил:
— Все будущие ты.

Услышав это, гений обрёл просветление.

 

Master Foo and the Nervous Novice

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

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

Послушник ответил:
— Не лучше ли всё равно использовать их — просто чтобы быть уверенным?

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

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

Мастер Фу ответил просто:
— Завязываю тебе шнурки.

Услышав это, послушник обрёл просветление.

 

Master Foo and the Editor Wars

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

Обнаружив, что они исходят от одного из новичков, он осведомился:
— В чём твоя трудность?

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

Мастер Фу кивнул:
— Как, — спросил он, — решил бы эту трудность Мастер Великого Пути?

Ученик подумал пару минут, потом ответил:
— Ну, это очевидно. Я напишу лучший редактор на свете. Он будет делать всё, чего я захочу. Он будет делать всё, чего захочет кто угодно. И мир станет лучше, потому что…

… Тут речь ученика прервалась резким ударом посоха Мастера по затылку.

— М… Мастер? — спросил ученик, осторожно потирая ушиб, — В чём я был неправ?

— Глупец! — сказал Мастер Фу, — неужели ты думаешь, что я хочу учиться ещё одному редактору?

Услышав это, ученик обрёл просветление.

 

Master Foo and the Old Hand

Опытный Unix-программист, прослышав о мудрости Мастера Фу, пришёл к нему за наставлением. Подходя к Мастеру, он поклонился трижды и сказал:
— Мастер Фу, я серьёзно обеспокоен. В молодости моей в ходу у тех, кто следовал Великому Пути, были простые и незатейливые программы — ed, mailx. Сегодня они используют vim и mutt. Завтра, я опасаюсь, они освоют KMail и Evolution, и Unix станет таким же как Windows — раздутым и испещрённым всевозможными графическими интерфейсами.

Мастер Фу сказал:
— Но какую программу использовать, если нужно нарисовать плакат?

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

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

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

 

Master Foo Discourses on the Two Paths

Мастер Фу наставлял учеников:
— В пути дхармы есть учение, примером которому служит изречение Патриарха Макилроя: «Делай одну вещь, и делай её хорошо», которое демонстрирует, что программа тогда следует пути Unix, когда имеет простое и соответствующее поведение, с понятными пользователю и иным программам параметрами.
— Но есть и иное учение дхармы, примером чему служит великая мантра Патриарха Томпсона «Будучи в сомнении используй грубую силу», наравне с различными сутрами о получении 90% прямо сейчас, нежели 100% поздно, что демонстрирует ясность и простоту реализации.
— Скажите мне теперь, каким программам более присущ дух Unix?

После некоторого молчания Ньюби заметил:
— Учитель, но эти учения могут противоречить друг другу.
— Простая реализация алгоритма не покрывает все узкие места, такие как исчерпание ресурсов, состояние гонки или тайм-аут транзакции.
— Когда такое случается, поведение программы становится сбойным и непредсказуемым. Ведь не может это быть духом Unix?

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

— Но с другой стороны, хорошо известно, что идеальные алгоритмы на деле хрупки. И очередная попытка покрыть узкое место ведёт к взаимодействию и с кодом центральной логики программы, и с кодом из других узких мест.
— Таким образом, желание покрыть все узкие места сразу в стремлении достичь «простоты описания» может на деле привести к переусложнённому и хрупкому коду или к такому, который из-за обилия ошибок никогда не заработает. Ведь и это не дух Unix?

И снова Мастер одобрительно кивнул.

— Какое же учение дхармы верно, в таком случае?

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

Услышав это, Ньюби обрёл просветление.

 

Master Foo Discourses on the Unix-Nature

Ученик сказал Мастеру Фу:
— Нам говорили, что компания Novell удерживает истинную власть над Unix.

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

Ученик продолжил:
— Но также нам говорили и то, что компания OpenGroup также удерживает истинную власть над Unix.

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

— Как такое возможно? — поинтересовался ученик.

Мастер Фу ответил:
— Novell действительно удерживает власть над кодом Unix, но код Unix — это не Unix. OpenGroup действительно удерживает власть над именем Unix, но имя Unix — это не Unix.

— Что же тогда такое дух Unix? — спросил ученик.

Мастер Фу сказал:
— Не код. Не имя. Не мысль. Не вещь. Вечно меняясь, остаётся тем же.
— Дух Unix прост и пуст. Из-за этой простоты и пустоты он мощнее тайфуна.
— Двигаясь согласно законам природы, он неумолимо расцветает в умах программистов, ассимилируя проекты в своё естество. Все программы, которые хотят состязаться с ним, должны стать таким как он — пустыми, пустыми, глубоко пустыми, совершенным ничто, да будет так!

Услышав это, ученик обрёл просветление.

 

Master Foo and the Shell Tools

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

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

Новичок продолжил:
— Разве также не в том Путь Unix, что колесо не до́лжно переизобретать?

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

— Почему тогда есть похожие по возможностям инструменты в обработке текста?

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

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

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

Услышав это, ученик обрёл просветление.

 

Master Foo and the Methodologist

Во времена когда Мастер Фу со своим студентом Ньюби путешествовал по святым местам, обычаем Мастера было давать наставления неофитам Unix, коротая время до ночлега в попутных городках и деревнях.

В один из таких дней среди внимающих был и методолог.

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

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

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

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

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

После этих слов на методолога снизошло озарение.

 

Поднято с Хабра.