Весь Нил Стивенсон в одном томе - Нил Стивенсон
Но вряд ли где ещё, кроме Linux, вам встретиться окошко под названием xterm. Обычное окошко — черные буквы на белом фоне, цвет которых вы вольны изменить в любое мгновение. Каждое окошко xterm — самостоятельный интерфейс с командной строкой, этакое tty в окне. Поэтому, даже если вы с головой погрязли в ГПИ — режиме, вы всё — равно не утратили возможность общаться с Linux — системой посредством командной строки.
Довольно много программного Unix — обеспечения вообще обходится без ГПИ. Возможно, его создали до появления X Window, или, возможно, программистам совершенно не хотелось заморачиваться с разработкой ГПИ, а, может, они в нем просто не нуждались. Так или иначе, для вызова любой такой программы достаточно ввести ее имя в командной строке окошка xterm. Наглядное тому подтверждение — уже упоминавшаяся команда whoami. Есть ещё одна, wc (сокращенно от word count, счетчик слов), которая сообщает количество строк, слов и букв, набранных в текстовом файле.
Запуск подобных утилит из командной строки — неоспоримое преимущество Unix, ибо попробуйте сделать хоть что‑то похожее в операционных системах, работающих под ГПИ. Возьмем, к примеру, команду wc, ничего не стоит сесть да написать такую программку для операционной системы с командной строкой. Пара строчек кода (а какой‑нибудь умница — программист вообще обойдется одной строкой) и — готово. Программка маленькая, всего‑то несколько байт памяти, места на диске практически не занимает. Чтобы написать подобную программку в операционках с ГПИ, потребуются сотни, даже тысячи строк кода, а если программист попадется с воображением, то и десятки тысяч. Такая программа страдала бы неизлечимым ГПИ — синдромом — медленно и неохотно загружалась и жрала бы память как не в себя. Овчинка выделки не стоит, поэтому вряд ли такая программа, как самостоятельная и независимая утилита, увидела бы свет. Пользователям пришлось бы дожидаться, когда выйдет коммерческий пакет, в который добавили бы встроенную функцию — счётчик слов.
Склонность ГПИ усложнять любое, даже самое минимальное программное обеспечение постепенно полностью меняет стиль программирования. Теперь бессмысленно писать маленькие утилитки. Их замещают функциями, встроенными в громадные, всеохватывающие программные пакеты. Аппетиты ГПИ растут, он усложняет всё вокруг, программные пакеты превращаются в вечно голодных монстров и начинают поглощать друг друга, как, например, Microsoft Office поглотил Microsoft Word, Excel и Power Point. Все это напоминает ситуацию с гипер — маркетом Wal‑Mart — чудовищных размеров исполин, обосновавшийся на окраине города, сживает со свету расположенные по соседству маленькие частные магазинчики.
Сравнение не совсем уместное, потому что когда магазинчик не выдерживает конкуренции с Wal‑Mart, его владелец разоряется и теряет всё. Ничего подобного с программами, конечно же, не происходит, они становятся компонентами бесчисленных пунктов меню, как это случилось, например, с утилитой wc, которую встроили в Microsoft Word. Единственный по — настоящему серьезный изъян в этом случае — потеря гибкости программного продукта, однако большинство пользователей этого либо вовсе не замечает, либо делает вид, что так и надо. Но с Wal‑Mart тоже не всё гладко. Ведь большинству покупателей всего‑то и нужно — одна баночка того, бутылочка другого, а их заставляют брать целые упаковки. И что потом делать со всем этим добром? Хотя, конечно, у каждого пользователя свой взгляд на то, что ему нужно, а что нет.
Стоит отметить ещё одну важную деталь — в состав Office входит язык программирования Basic. Basic — мой первый язык программирования, я выучил его ещё в школе, работая с телетайпом и перфолентами. На Basic можно создавать собственные утилиты, которые знают, как вести себя со всеми этими «наворотами», «фишечками» и «мулечками», которыми кишмя кишит «офисный» пакет. Basic легче, чем языки программирования, обычно используемые в Unix, поэтому именно Office, а не остальные ГПИ — «прибамбасы», завоевал сердца пользователей. Может, как раз благодаря ему и зародится вскоре новое поколение хакеров, сильнее тех, кто придумали GNU.
Однако сейчас я веду речь о приложениях, а не об операционных системах. И, как я уже отметил, приложения от Microsoft очень и очень недурны. Я редко ими пользуюсь — они пишутся в расчёте на другую аудиторию. Но если вдруг когда‑нибудь Microsoft создаст пакет прикладных программ, который я полюблю и с которым стану работать, пусть взвинчивает цены на акции, я намерен скупить их все!
Хакеры тоже плачут
Работать с Linux — задача не для слабонервных. Всякий раз, когда мне предстоит что‑нибудь грандиозно тяжелое — например, установить X Window или подсоединить интернет, я беру толстую тетрадку и тщательно записываю последовательность действий. Таких тетрадок, описывающих борьбу и поражения, за годы моего общения с Linux накопилось три с половиной штуки. Если всё идет как надо, и я спокойно работаю, то у меня даже мысли не возникает что‑либо записать. Так что эти тетрадки — чтиво довольно‑таки безрадостное. Но смысл в них есть. Внести изменения в Linux — значит открыть и откорректировать множество коротеньких текстовых файликов: где‑то заменить слово, где‑то — запятую. Мелочь, казалось бы, но для операционной системы жизненно важны именно эти мелочи.
Большинство файлов, отвечающих за работоспособность системы, не что иное, как командные строки, ставшие таким длинными и сложными, что даже истинные хакеры — «линуксоиды» не в состоянии напечатать их без ошибок. Когда работаешь с чем‑то таким же могучим, как командная строка Linux, на создание одной — единственной команды с легкостью может уйти полчаса. Например, есть удивительно мощная, грандиозная программа find, которая сканирует диски в поисках заданного по определенным критериям файла. Одно «краткое руководство пользователя» (man) к этой программе занимает одиннадцать страниц настолько содержательного текста, что при желании из них получилась бы целая книга. Но если вам эта команда покажется просто «цветочком», всегда есть возможность заняться «ягодками» — перенаправить вывод одной запутанной Unix — команды на вход другой, не менее головоломной. Капризная команда «pon», подключающая интернет, требует настолько детализированной информации, что запустить её, задав все параметры с помощью аргументов командной строки, практически нереально. Для работы с ней вам придется создать три или четыре разных файла. Вам потребуются dialing script — программка, которая напрямую общается с модемом, выдает на модем AT — команды и считывает ответы, файл параметров /etc/ppp/options, который может содержать до шестидесяти параметров, необходимых для установления PPP — соединения, и файл secrets, где хранятся пароли.
Допустим, где‑нибудь в подлунном мире и живет такой Unix —