огу открыть под своим именем, другое – под именем root (системный администратор), а с третьего и вовсе зайти на удаленную машин через интернет.
Каждое из этих окошечек на языке Unix называется tty (сокращенно от teletype, телетайп). Поэтому всякий раз, открывая окошко в Linux, я словно бы переношусь назад в ту самую школьную комнатку в моём родном городе, где двадцать пять лет назад написал свою первую программу. Просто tty тише и быстрее, чем телетайп, и поддерживают такое мощное ПО, как Emacs и GNU.
В Linux вы легко (легко по стандартам UNIX, а не по стандартам Apple/Microsoft) сконфигурите вашу машину так, чтобы после включения она сразу же загружала ГПИ. В этом случае вы никогда не увидите окошек tty. Однако я до сих пор гружусь в телетайпном белые–буквы–на–черном–экране режиме. Это моё memento mori, если хотите. В старину маститые писатели, бывало, держали на письменном столе человеческий череп, чтобы он напоминал им о суетности и бренности мира. Окошки tty предостерегают меня от соблазна пасть жертвой мишурного блеска пользовательского интерфейса.
Оконная система X Window System – ГПИ в среде Unix — должна поддерживать тысячи разных видеокарт на разнообразных чипсетах, огромное количество отличающихся друг от друга типов памяти и материнских плат. Кроме того, не стоит забывать о несметной армии мониторов (от новехоньких до бэушных), которые предлагает нам рынок, и так как каждый монитор отличается особыми техническими требованиями, то, следовательно, существует несколько миллионов всевозможных комбинаций материнских плат и дисплеев. Единственное, что роднит их всех – то, что все они могут работать в алфавитно–цифровом стандарте VGA, старейшем режиме работы командой строки, который в течение нескольких секунд можно наблюдать и при загрузке Windows. Linux всегда загружается в текстовом режиме, ибо поначалу система понятия не имеет, какое оборудования подключено к компьютеру. Если вам претит работа со «стеклянным телетайпом», и вы мечтаете запустить Linux в ГПИ, то сначала вам потребуется точно и достоверно сообщить системе, какое аппаратное обеспечение установлено на вашей машине. Если вы ошибетесь, то в лучшем случае получите пустой экран, а в худшем — сожжёте дисплей, подав на него не тот сигнал.
Когда я осваивал Linux, всё приходилось делать вручную. Как‑то я почти целый месяц убил на то, чтобы заставить систему опознать монитор. Свидетельница этой отчаянной и затяжной борьбы, моя записная книжка, была испещрена невнятными закорючками, горестно оплакивающими мою тяжкую долю. Стоит, правда, признать, что монитор тот был очень уж нестандартным. Сейчас большинство дистрибутивов Linux поставляются с программой, которая автоматически определяет тип видеокарты и настраивает систему наилучшим образом, так что запустить X Window теперь так же легко, как ГПИ на машинах с ОС от Apple и Microsoft. Важнейшая системная информация записывается в обычный текстовый файл XF86Config, в который имеет смысл заглянуть, даже если ваш дистрибутив создает его автоматически. Для большинства пользователей всё, написанное в нём, загадочно и необъяснимо, но не в этом и суть. Подобный файл с похожей информацией существует и в MacOS, и в Windows, однако запрятан он так далеко, что не всегда найдёшь, а если даже и найдёшь, то вряд ли откроешь и прочитаешь с помощью обычного текстового редактора. В Linux все системные файлы открываются без труда. Это всегда обычные текстовые файлы, не требующие специальных программ, чтобы их прочесть. С одной стороны это хорошо, есть возможность в любой момент на них поглазеть, с другой стороны это плохо, так как можно случайно повредить их и угробить операционную систему.
Предположим, с моим файлом XF86Config всё в порядке, я ввожу команду startx и запускаю X Window System. Монитор на минуту гаснет, раздается волнующий писк, и на экране, на подложке серого фона, возникает рабочий стол с курсором мышки посредине. Потом загружается оконный менеджер. Сама по себе система X Window System ГПИ не является, она не рисует окна и менюшки, предоставляет это делать другим программам — оконным менеджерам, которые ставятся поверх X Window. Некоторые из них, разумеется, в свободном доступе. Самый известный и популярный — twm (Tom's Window Manger — оконный менеджер Тома[18]), однако существуют и другие варианты, например, более легкий и, возможно, более шустрый fvwm, которым пользуюсь я. Сейчас я положил глаз на оконный менеджер Enlightenment. Это, скажу я вам, нечто! Совершенно ни на что не похожее, самое «хипповое» приложение, которое я когда‑либо видел. Во–первых, оно написано под Linux, во–вторых, абсолютно бесплатно, в–третьих, создано группой хакеров, по–настоящему одержимых программированием, а в–четвертых, просто–напросто великолепно. Это такой оконный менеджер, который естественно вписался бы на задний план фильма «Чужие».
В любом случае, оконный менеджер – посредник между X Window и вашим программным обеспечением. Он определяет, как должны выглядеть рамки окон, меню и кнопочки, то есть формирует поле деятельности для приложений. Приложения могут быть любыми — текстовыми редакторами, браузерами, графическими пакетами или утилитами, такими, как, например, калькулятор или часы. Это похоже на параллельную вселенную — вроде бы всё, как в знакомом до боли мире, где царствуют Apple и Microsoft, и, однако же, чуть–чуть по–другому. Вместо знаменитого Adobe Photoshop, идущего на «ура» под MacOS и Windows, вы ставите The GIMP, вместо Microsoft Office — покупаете ApplixWare[19]. Большинство платных программ таких, как Mathematica, Netscape Communicator, Adobe Acrobat имеют Linux–версии, и если вы подобающим образом настроите оконный менеджер, невозможно будет отличить, в какой системе данные программы трудятся — в MacOS, Windows или Linux?
Но вряд ли где ещё, кроме 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.