Идея этой заметки, как легко догадаться, навеяна замечательной книгой Эрика Реймонда The Art of Unix Programming (в русском переводе - Искусство программирования для Unix). Каковую стоит прочитать каждому - даже тем, кто и в мыслях не держал сочинять программы ни для Unix, ни для какой-либо другой операционной системы. В ней идеолог движения Open Source наглядно демонстрирует, как, руководствуясь полутора десятками основополагающих принципов, следует сочинять программы. И, более того, приводит примеры программ, написанных на основе этих принципов. Однако далеко не только программирования это касается - и ниже я постараюсь показать, почему. Связь времен не распадается.
Как известно, программы сочиняются не сами для себя (хотя для разработчиков Open Source сочинение программ - в определенной мере самоцель). А в том числе и для того, чтобы их (хоть некоторые) использовали в реальной работе. И тут мы приходим к тому, что искуссно (мастерски, артистично - к этому я еще вернусь) сочиненная программа предъявляет к своему пользователю определенные требования. Главное из которых - умение столь же мастерски (а возможно, и артистично) использовать заложенный в ней создателем потенциал (подобно тому, как кровная и выезженая лошадь требует от своего наездника соответствующего умения верховой езды - но и к этой аналогии еще придется обратиться). Можно сказать, что чем больше мастерства (артистизма) вложено в программу разработчиком, тем более высокие требования она предъявляет к тем же качествам пользователя. И вот именно этому я и хотел бы посвятить свои заметки.
Для начала - о заглавии. Как назвал свою книгу Эрик - я уже говорил. Но следует помнить, что английское Art передается русским словом "искусство" не вполне адекватно. Также, как и производное от него слово Artist означает вовсе не обязательно актера на сцене, а художника - творца в самом широком смысле этого слова. То есть русским эквивалентом к нему выступил бы Поэт (который, как известно, в России больше, чем поэт). Потому я, не будучи поэтом в собственном смысле слова ("поэм не создал"), и позволил дать своим заметкам такое заглавие - Поэтика работы в Unix.
Отказался я и от напрашивающегося в заглавие слова - "использование". Во-первых, потому, что оно вызывает вполне определенные ассоциации (из старого советского анекдота - "Встретились я и моя компания. Использовали..."). А во-вторых, потому, что, как, говоря словами Эрика, "проектирование и реализация программного обеспечения должны быть радостным искусством", так не менее радостным должно быть и его применение для решения своих задач - и слово "использование", подразумевающее потребительское отношение к деятельности творцов, тут невместно...
Ну вот, вводные слова сказаны, пора переходить к предмету обсуждения. Однако и тут начать придется с седой "бронзовой" древности...
Где-то близ середины второго тысячелетия до нашей эры (или, как нынче принято говорить среди бывших коммунистов-атеистов, до Рождества Христова), на просторах Ближнего Востока появились "колесничные народы" - индоевропейцы, выходцы из евразийских степей. Наиболее известны из них арии, давшие правящую династию царства Митанни. Но к тому же общевосточному колесничному койнэ принадлежали, вероятно, и касситы - покорители Вавилонии, и гиксоссы, завоевавшие Нижний Египет, в него органично вписались хетты Анатолии и микенские греки-ахейцы. А отклики колесничной культуры достигли кельтов на Западе, индоариев Индии на Юге и Китая эпохи Чжоу - на Востоке.
"Колесничные народы" повернули ход мировой истории. Именно от них идет дискретная (но, тем не менее, никогда не прерывавшаяся полностью) традиция индивидуального мастерства, нашедная свое воплощение и в учении дзэн (чань) Дальнего Востока, и в современной европейской цивилизации. Если раньше (да, в большинстве случаев, и по сей день) исход боевых действий определялся численностью участников с той и другой стороны (как выражался Буонопарте, большие батальоны всегда правы), то тут впервые вступил в игру фактор интеллектуальный - технологическое превосходство и личное умение.
Действительно, давайте посмотрим, что такое боевая колесница. Это - предельно высокотехнологичное, по меркам того времени, изделие: каждая ее деталь - платформа, ось, обод и спицы колеса, - изготовлена именно так (и из того материала), как это предписано техзаданием. Что требует мастера - изготовителя.
Однако: колесница без движущей силы мертва. И потому ей требуются адекватная запряжка - пара лошадей совершенно определенного экстерьера. Но и этого мало: эта пара должна быть обучена и выезжена должным образом. И потому мастерство конской выездки - вторая составляющая успеха "колесничных народов". Благо, это запечатлено в дошедшем до наших дней хеттском трактате Киккуле - вероятно, митаннийца по происхождению (Филис, система выездки которого легла в основу подготовки красноармейской конницы - отдаленный его последователь).
Высокотехнологичная колесница и идеально обученная конская запряжка - хорошо. Однако техника в руках дикаря - это кусок металла. И любые технические средства требуют того, кто мог бы ими управлять. То есть третий компонент колесничного войска - это мастер-возница, не случайно их имена фигурируют в поэмах Гомера наравне с именами базилевсов...
И, наконец, конечный пользователь этого аппаратно-программного, как сказали бы мы сейчас, комплекса: колесничный боец. Ведь это ради него, ради его успеха делается колесница, растятся и обучаются кони, ради эффективности его действий управляет ими возница. А потому он обязан соответствовать по своим качествам тем усилиям, которые затратило на все эти дела общество.
К чести его, колесничного бойца, заметим: все исторические источники говорят, что он им соответствовал. Подтверждением чему будет и Махабхарата, и Записки о Галльской войне Цезаря, Гая Юлия, и более поздние свидетельства ирландских скел.
Я знаю, что среди моих читателей есть немалое количество POSIX'ивистов, которые по совместительству являются (или являлись в недалеком прошлом) рукопашниками-единоборцами. Так вот, вне зависимости от школ, в традициях которых вы обучались, - истоки вашего искусства лежат в той самой "бронзовой" древности колесничных бойцов...
Не правда ли, если присмотреться к компонентам, определившим успех "колесничных народов", можно увидеть картину, знакомую по IT-индустрии? В основании которой:
* прозводители аппаратных средств,
* разработчики движущей их силы - программного обеспечения, как системного, так и прикладного,
* сисадмины, обеспечивающие бесперебойное функционирование и харда, и софта.
И, как венец пирамиды, - конечные пользователи. То есть - мы с вами. Так неужто нам не стыдно было бы отстать от конечных пользователей колесничных комплексов древности? И не совершенствовать свое умение применять на деле те средства, которые с искусством и любовью обеспечили нам создатели всех ступеней базиса? И не западло ли полагать, что все для нас уже сделано - остается только тупо тыкать мышкой туда, куда предписано?
О блоге
Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.