Pull to refresh

Элементы стиля: UNIX как литература

Reading time7 min
Views2.4K
Original author: Thomas Scoville
(by Thomas Scoville)

В начале 80-х я работал в исследовательском отделе местной телефонной компании Кремниевой долины. Мой отдел состоял в основном из кандидатов наук и одаренных хакеров. Как вы понимаете, контора была UNIX-ориентированной.

Менеджер группы был исключением: ни научного звания, ни технического образования. Он явно отдавал себе в этом отчет. Мы подозревали, что он (ошибочно, как мы думали) не очень уверен в уровне своего образования и ума. Однажды произошла история, которая подтвердила наши подозрения: он сообщил нам, что его пугает учёность нашего отдела, и что он будет предпринимать шаги, чтобы что-то сделать с этим. Выход он нашел неожиданный: “Мне надо повышать уровень интеллекта”, сказал он, “Я собираюсь выучить UNIX.”

Надо сказать, нас это изрядно повеселило: разве UNIX может превратить его в гения [..]? Мне представился перефраз старой рекламы: “… и эти старшие инженеры никогда на вас больше не посмотрят свысока”.

Но что-то во мне соглашалось: “Ведь он ведь в чем-то прав, не так ли? Юниксоиды-таки отличаются от остальных людей, разве нет?”. Годы спустя, до меня дошло, куда клонил мой старый начальник. Я по-прежнему думаю, что он направился не туда, но оглядываясь назад, я думаю, что он подметил вернее, чем мне тогда казалось.

Без сомнения, общество юниксоидов достаточно технически замкнуто и по-ботански зашорено, но по моему опыту, полиглоты и гуманитарии встречаются здесь чаще обычного, что подозрительно. Сознаюсь, мои доказательства фрагментарны и анекдотичны. Например, если бы кто-то стоял у меня за спиной, пока я набирал в командной строке, и я набрал бы намёк на классику:

if test -z `ps -fe | grep КТО`
then
echo ^G
fi
# Посмотрим, по ком звонит колокол

то коллеги-юниксоиды c большей бы вероятностью бы распознали намёк и подыграл бы так, как не смогли бы ни VMS-ники, ни мейнфреймщики из IBM, ни бедолаги, работающие с MS-DOS.

Будучи сам гуманитарием (хотя я благоразумно не упоминаю об этом в резюме), я удивляюсь, с чего бы так? Моё первоначальное объяснение – историческая связь UNIX с университетскими лабораториями типа Беркли – не выдержало проверки временем; много юниксоидов вышло из заведений с незначительным компьютерным уклоном или вовсе без такового. Должна была быть какая-то связь, но внятной гипотезы у меня никакой не было.

И только когда я начал интересоваться у сбежавших от UNIX-a о том, что им в нём не нравится, что-то начало вырисовываться.

Некоторые из полученных объяснений имели отчетливо популистскую окраску – люди ощущали снобистский душок, исходящий от юниксоидов, и реагировали на это с пролетарским негодованием, обычно направляемым в адрес таких утонченных вещей, как опера или балет. Это можно понять: до недавнего времени UNIX был языком общения в высших компьютерных кругах. Более загруженные, прикладники и непривилегированные мира компьютерного протестовали против этой ауры привилегированности. Адепты UNIX-а исторически были избалованным слоем общества, гордящимся своими тяжело добытыми знаниями. Но эти классовые различия нынче быстро пропадают. Сейчас UNIX-специалисты встречаются чаще, и дешевые и бесплатные разновидностей UNIX-а работают на недорогом оборудовании. Однозначно, юниксоиды нынче не так изнежены, во времена Windows.

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

Но большинство жалоб было на то, что он слишком текстово-ориентированный. Люди действительно ненавидели командную строку, со всеми утилитами, их непонятными параметрами и аргументами, которые им надо запоминать. Они ненавидели всё это стучание по клавишам. Один неверный символ, и всё надо начинать сначала. Что интересно, эти жалобы чаще всего исходили от пользователей GUI-ориентированных Макинтоша или Windows. Люди же, которые прозябали в свое время в ДОС-е в .bat-скриптах, или провели свои ранние дни на символьных терминалах многопользовательских не-UNIX компьютеров, значительно реже грустили по такому поводу.

Хотя я понимал, как людей может отталкивать необходимость запоминать такие намеренно загадочные названия утилит как grep или cat, меня продолжала озадачивать их нелюбовь к стучанию по клавишам. Затем до меня дошло, что можно связать эту жалобу с засилием “интеллектуальной элиты” в UNIX-лавках. Общей нитью было “писачество”: подозрительно большой процент моих коллег-юниксоидов в ходе карьерного роста уже обзавелся навыками работы с текстом и словами. Они были завзятыми читателями и писателями, а в UNIX эти умения очень на руку. UNIX был в каком-то смысле литературой для них. Внезапно стал понятен большой процент полиглотов, гуманитариев и ненасытных книгоглотателей в UNIX сообществе. Более того это указало на более важный момент: в мире, всё более загруженном визуальными образами (через телевизор, кино, .jpg-файлы), UNIX по-прежнему основан на культуре слова.

UNIX-программисты выражаются с использованием богатого словаря системных утилит с их параметрами, с гибкой, разнообразной грамматикой и синтаксисом. Для энтузиастов UNIX этот язык становится их вторым я. Однажды, я слышал разговор в местном ресторане: “где-то тут в меню были креветки под соусом, стоили меньше десятки”. Ну-ка, поглядим…  cat меню | grep креветки | test -lt $10...”, и хотя это синтаксически не совсем верная и не настолько остроумная беседа, обедающий из Microsoft-ориентированной лавки вряд ли смог бы так ненапряжно выразить свою мысль.

В UNIX текст в командной строке, STDIN, STDOUT, STDERR — это главный механизм интерфейса: системные утилиты здесь похожи на элементы конструктора (Лего) для работников слова. Пайпы и фильтры соединяют одну утилиту с другой, а текст невидимо течёт между ними. Работа с шеллом, производными от awk/lex, с разнообразными утилитами — это буквально танец слов.

Работа в командной строке, руки уравновешены над клавиатурой и не отрываются частыми хватаниями мыши – это поза привычная для писателей (особенно для тех старых ребят, которые когда-то работали за телетайпами или электрическими печатными машинками). Здесь предъявляются те же требования, что и при написании эссе. И тут и там требуются сочинительские способности. И тут и там требуется детальное знания грамматики и синтаксиса. В обоих случаях мастерство позволяет получить мощные, лаконичные выражения.

Рискуя навлечь на себя гнев и технарей и писателей, я также предположу, что UNIX предлагает кое-что еще, похвальное в литературе: когерентность, целостный стиль, который писатели называют “голосом”. Уже после краткого знакомства с UNIX тебе становится понятным, что центральная его часть является результатом работы нескольких отлично согласованных умов. Я никогда не встречал Ричи, Кернигана или Томпсона, но после пятнадцати лет UNIX-а я воображаю, что мог бы их поприветствовать как друзей, познав что-то, имеющее форму их мыслей.

Мне могут возразить, что UNIX так же точно визуально-ориентирован как и другие операционные системы. Особенно в современных версиях UNIX изрядно графического пользовательского интерфейса. На практике, однако, центральная часть UNIX-а их не поощряет, и весь GUI служит традициям культуры слова, не заменяя ее. Посмотрите на экраны большинства UNIX-компьютеров. Половина окон – это терминалы с командной строкой или консольным редактором vi, который там запущен.

Нигде трения между культурами слова и визуального образа так не представлены как в контрасте между UNIX и Windows. Как только этот расхваленный убийца UNIX-а появился несколько лет назад (речь о Windows NT – прим. перев.), поддерживаемый полной верой и кредитом Редмондовского тяжеловеса, я взялся за него без единого предубеждения. Но Windows оставил меня холодным. Что-то было в нем, глубоко неудовлетворительное. У меня было невыносимое чувство [..] что там не было “там”. Сознаюсь, я уже знал краеугольные камни системного и сетевого администрирования от UNIX-а, и признаю, что ковыряние в registry пораздражало меня пару дней, но когда я вскоре уже стал разбираться, я оглянулся назад на UNIX с чувством, что меня понизили с машиниста шагающего экскаватора до ковырятеля палочкой. Windows просто не предполагала пространства для маневра. Windows-подход “годится на любой размер”, “наведи и тыцни”, “мы уже всё за тебя подумали” заставил меня тосковать по этим загадочными параметрам в командной строке и по “man -k”. Мне хотелось изготавливать мои собственные решения с помощью собственного набора инструментов, а не натягивать свои идеи на визуально-однотипный, подготовленный, советский мир Microsoft Foundation Classes.

Windows определенно была слишком близка к культуре визуальных образов, чтобы быть мне комфортной. Бесконечные диалоги, наведи и тыцни, бегание по экрану мышкой, одно за одним выпрыгивающие окна, требующие моего внимания. Опыт работы был почти исключительно реактивный. Каждая задача требовала обязательно графический интерфейс, загруженный коварными предположениями о том, как визализировать (и, следовательно, концептуализировать) операцию. Я не мог думать “за пределами рамок”, потому что всё буквально было самими рамками. Не было возможности даже для секундного предположения, что задачу можно решать как-то иначе.

Я соглашусь, что Windows сделало мою жизнь легче в некоторых смыслах. Я обнаружил, что мне нужно меньше запоминать (названий утилит, аргументов, синтаксиса), и больше распознавать (компонентов решения, связанных с чекбоксами, радио-кнопками и выпадающими меню). Я тратил меньше времени на стучание по клавишам. Определенно, моя правая рука потратила много времени, гоняя мышу по десктопу. Но после нескольких месяцев у меня появилось усталось, унылое чувство, похожее на утомление, которое чувствуешь после продолжительного переключания каналов на телевизоре или играния в компьютерные игры: слишком много времени потрачено на реагирование, недостаточно времени потрачено на активные анализ и выражение. Короче, истощение от потока образов.

Единственный луч света, который освещал мое пребывание в мире Windows была стремительная популярность Перл-а. Перл как-то пробрался в Windows-лавки как язык для CGI-скриптов для Web-разработки, но народ быстро разобрался в его мощи и применял его далеко за пределами Web-разработки: для системного администрирования, контроля за исходным кодом, для распространения файлов, сетевого администрирования. Ирония заключается в том, что Перл сам по себе является подмножеством UNIX фич, наспех собранных в скриптовый язык. В литературных терминах, если UNIX – это “Война и Мир”, то Перл – это его “краткое содержание” для нынешних школьников.

Мастерство в UNIX, как и мастерство в языке, дает настоящую свободу. Цена свободы всегда велика, но заменить свободу нечем. Лично я бы заплатил за мою свободу, вместо того, чтобы жил бы в пиксельном, с весело выпрыгивающими окошками, подземелье типа Windows. Я надеюсь, что когда народ немного повзрослеет и будет менее впечатляться поверхностным удобством, теряя реальную свободу, они затоскуют по этой свободе и ответственности, которую дает UNIX. И когда они затоскуют, UNIX удовлетворит их нужду.

1998 Miller Freeman, Inc.
Tags:
Hubs:
+62
Comments86

Articles

Change theme settings