Стивенсон Нил : другие произведения.

В Начале была Командная Строка. (Глава 16)

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:


В Начале была Командная Строка. (Глава 16)

LAV#UNDEFINED

Исходный текст: (с) Нил Стивенсон
Пер. с англ.: Лобанов Алексей, 2004

16.0

MEMENTO MORI

16.01

Когда линуховая машина наконец исплевала жаргонную начальную телеграмму, она приглашает меня, войти в систему с именем пользователя и паролем. В этой точке машина все еще выполняет интерфейс командной строки, с белыми буквами на черном экране. Нет окон, меню, или кнопок. Она не отвечает на мышь; она даже не знает, что мышь - "где-то рядом". Можно выполнять много программулей уже отсюда. Emacs, например, существует в консольной и ГРАФИЧЕСКОЙ версиях интерфейса пользователя (реально есть две версии графического интерфейса пользователя, отражающие какие-то "религиозные разногласия" между Ричардом Столлманом и некоторыми хакерами, которые с ним расплевались). То же справедливо для многих других юниховых программ. У многих ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ нет совсем, и многие из них способны работать из командной строки. (В смысле, работаете вы скажем в сессии G-Nome или KDE, или какой там оконный менеджер пленяет ваши взоры, - запускаете старый-добрый терминал в окошечке на одном из рабочих столов и в нем - любимый Vi в последнем его воплощении (прим. перев., специально для тех, кто уважает Столлмана, но НЕНАВИДИТ emacs))

16.02

Разумеется, поскольку у моего компьютера только один экран монитора, я могу увидеть только одну командную строку, так что вы могли подумать, что я мог только взаимодействовать с одной программой за один раз. Но если я удерживаю нажатой кнопку Alt и затем нажимаю функциональную клавишу F2 в верху моей клавиатуры, я обеспечиваюсь свежим, чистым, черным экраном с приглашением для входа в систему в верхней части. Я могу войти в систему здесь и запустить некоторую другую программу, затем нажать Alt-F1 и вернуться к первому экрану, который все еще делает то, что делал, когда я его покинул. Или я могу нажать Alt-F3 и войти в систему на третьем экране, или четвертом, или пятом. (При этом полная иллюзия, что сидишь за отдельным терминалом - хотя обычно все тоже самое можно сделать из окна терминала на рабочем столе, чтоб не париться с переключением экранов - прим. перев.) На одном из этих экранов я могу войти в систему в качестве себя самого, на другом как root (традиционное имя администратора системы), на следующем - я могу регистрироваться на каком-нибудь другом компьютере через Интернет (специально для Крупной Пакости - Интернет без кавычек - прим. перев. :)))))))))).

16.03

Каждый из этих экранов называется, по-юниховому, tty, что является сокращением от "телетайп". Так, когда я использую мою линуховую систему таким образом, я возвращаюсь прямиком в ту небольшую комнату в Средней Школе Эймса, где я впервые писал код двадцать пять лет тому "обратно", за исключением того этот tty - тише и быстрее чем телетайп, и способен выполнять гораздо более развитое программное обеспечение, как например, emacs или "ГНУсные" средства разработки. (от GNU development tools: в частности компилятор gcc - основное средство сборки системного ядра, базовых утилит и мощных прикладных программ, без которого не обходится практически ни одна некоммерческая инкарнация Юниха - прим. перев.)

16.04

Легко (легко по стандартам Unix, а не Apple/Microsoft), настроить линуховую машину так, что она будет запускаться непосредственно с ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ ПОЛЬЗОВАТЕЛЯ, когда вы ее запускаете. Таким образом, вы никогда не увидите экран tty вообще (не совсем верно: старт PC-совместимой системы все равно начинается в текстовом режиме - это не что иное, как терминал, куда ядро и самый главный процесс, "клон-отец" всех юниховых программ Init выводят свои бесконечные "телеграммы"... И еще остается класс программ, которые работают через графические окна, но выводят всякую диагностику на окно терминала, с которым связаны - в юниксе многие вещи, в том числе запуск программ гораздо быстрее выполняются через консоль, поэтому даже в таком пуристском варианте "чисто графического линуха" остается вероятность наткнуться на терминал. При старте "Виндов" тоже стоит нажать Esc, чтобы увидеть, что за ширмой "облаков" скрывается старая-добрая консоль: наследие "реального режима" процессоров семейства Intel x86 - прим. перев.). Однако, я все еще позволяю тачке загружаться в черно-белом экране телетайпа, типа вычислительного memento mori. (Как говорили латиняне, "помни о смерти": так телохранители говорили триумфатору Рима, чтоб он не забывал, откуда он взялся, весь из себя такой навороченный - прим. перев.) Обычно модно для писателя, держать человеческий череп на своем столе, как напоминание, что и он смертен, что все вокруг него - суета. Экран tty напоминает мне, что то же самое верно и для гладеньких интерфейсов пользователя.

16.05

Система X Window, которая является ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ ПОЛЬЗОВАТЕЛЯ Юниха, должна была работать на сотнях разных видеокарт с различными чипсетами, объемом видеопамяти, и шинами материнской платы. Аналогично, есть сотни разных типов мониторов на рынке новых и подержанных комплектующих, каждый с другой спецификацией, и значит вероятно свыше миллиона всевозможных сочетаний видеокарт и мониторов. Единственная вещь, которую они все умеют одинаково - то, что они все работают в режиме VGA, который является старым экраном командной строки, которую вы видите в течение нескольких секунд, когда запускаете "Виндов". Также и Linux всегда начинается в VGA, с интерфейсом телетайпа, поскольку сначала у него нет представления, какого рода аппаратные средства подключены к вашему компьютеру. Чтоб типа забраться дальше стеклянного телетайпа и в сам ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ, вы должны сообщить Linux точно, какие типы железяк у вас есть. Если вы сделаете это неправильно, вы получите чистый экран в лучшем случае, и в худшем может в натуре испортить ваш монитор, скормив ему сигналы, которые он не сможет обработать. (Ну, так было раньше - сейчас даже в популярных дистрибутивах Линуха появилась нормальная защита от идиотов и всякие автоопределители системных устройств - прим. перев.)

16.06

Когда я начал использовать Linux это приходилось делать "ручками". Я как-то раз затратил лучшую часть месяца, пытаясь заставить устаревший монитор, работать, и забил лучшую часть композиции книги чрезвычайно удручающими записками. В настоящее время, большинство линуховых поставок загружаются с программой, которая автоматически сканирует видеокарту и самонастраивает систему, так что получить работающую X Window почти так же легко, как и установить "яблочный" или "мелкомягкий" ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ. Критическая информация заносится в файл (текстовый файл ASCII, естественно) названный XF86Config, в который имеет смысл глянуть, даже если ваш дистрибутив создает его для вас автоматически. Для большинства людей он выглядит похожим на бессмысленные загадочные заклинания, которые и на самом деле таковы. В Apple/Microsoft системе нужна та же информация, чтоб запускать свой ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ, но она обычно запрятана где-то очень глубоко, и вполне возможно, в файле, который даже нельзя открыть и прочитать текстовым редактором. Все важные файлы, которые заставляют линуховую систему работать, вполне можно открыть. Они всегда текстовые файлы ASCII, так что вам не нужны специальные инструментальные средства, чтобы прочитать их (ну, графический "настройщик роялей" - это удобно, спору нет... Только бывают в жизни моменты, когда он "временно недоступен" - вот тогда люди начинают понимать, чем текстовые файлы лучше того же "реестра Windows" - прим. перев.). Вы можете просмотреть их всякий раз, когда вам вздумается, что хорошо, и... вы можете повозиться с ними и сделать вашу систему полностью раскуроченной, что уже не так хорошо. (Однако, в отличие от тепличных созданий, вроде "реестра" - легко поправимо: открываем любой редактор текстов и пытаемся вспомнить, как выглядели настройки до вашего вмешательства - прим. перев.)

16.07

Во всяком случае, допуская что мой файл XF86Config - совершенно правилен, я вожу команду "startx", чтобы запустить "оконную систему X". Экран с минуту моргает, монитор издает странные вибрации, затем предстает, как чистый серый рабочий стол с курсором мыши в середине. В то же самое время он запускает менеджера окон. X Window является прекрасной программулей низкого уровня; она обеспечивает инфраструктуру для ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ, и это - тяжелая промышленная инфраструктура. Но он не рисует окон. Они обрабатываются приложением другого типа, которое располагается поверх X Window, и называется оконным менеджером. Некоторые из них доступны и, разумеется, полностью свободны. Классический - twm (Оконный менеджер дяди Тома) но есть меньший и предположительно более эффективный вариант его, названный fvwm, тот, которым я как раз пользуюсь. Я положил глаз на совершенно другой менеджер окон, названный "Просвещение"(от enligtenment), которое может быть самый последний писк технологии, который я когда-либо видeл (с тех пор технология слегка продвинулась - прим. перев.), потому что (a) он - для Linux, (b) он - доступен для свободного пользования, (c) он разрабатывается очень узкой группой одержимых хакеров, и (d) он выглядит изумительно круто; это - своего рода менеджер окон, который можно показывать в фоне кина про "Чужих".

16.08

Во всяком случае, менеджер окон выступает в качестве посредника между X Window и любой софтиной, которую вы захотите использовать. Он делает рамки окон, меню, и так далее, пока сами приложения создают фактическое наполнение окон. Приложения могут быть любые: текстовые редакторы, веббраузеры, графические пакеты, или программные утилиты, как например, часы или калькулятор. Другими словами, с этой точки зрения, вы чувствуете, как если бы вы попали в параллельную вселенную, которая совсем как знакомая вам "Яблочная" или "Мелкомягкая", но немного и во всем другая. Прикольная графическая программа под Apple/Microsoft - Adobe Photoshop, но под Linux это - нечто названное GIMP. Вместо пакета Microsoft Office, вы можете купить что-то типа ApplixWare. Многие коммерческие программные пакеты, как например, Mathematica, Netscape Communicator, и Adobe Acrobat, доступны в Linux версиях, и в зависимости от того, как вы устанавливаете ваш оконный менеджер, вы можете заставить их выглядеть и вести себя так, как они это делали под MacOS или "Виндой".

16.09

Но есть один тип окна, которое вы увидите в линуховом ГРАФИЧЕСКОМ ИНТЕРФЕЙСЕ ПОЛЬЗОВАТЕЛЯ, который редок или не существует под другими ОСями. Эти окна названы "xterm" и содержат только строки текста - на этот раз черный текст в белом фоне, хотя вы можете заставить их быть другого цвета, если захотите (например, белым по черному - прим. перев.). Каждое xterm окно - отдельный интерфейс командной строки - терминал в окне. Значит даже, когда вы в полноценном режиме графического интерфейса пользователя, вы можете все еще поговорить с вашей Linux машиной через интерфейс командной строки. (Это в других ОСях называют эмуляцией командного режима, "сеансом ДОС" и т.п. Хардкорные извращенцы додумались до эмуляции компьютеров и... э... сетей внутри компьютеров, так что эмулировать теперь можно до состояния логического абсурда: один из вебсерверов компании VMware тех самых извращенцев работал под управлением Linux, запущенной на... виртуальном компьютере из-под Windows NT: теперь в принципе не надоть перезагружаться, чтоб поработать из-под другой ОСи - WMware несет шизофрению в массы!- прим. перев.)

16.10

Есть много хороших юниховые софтин, которые не имеют ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ ваще. Это могло быть из-за того, что они были разработаны прежде, чем появилась X Window, или поскольку люди, которые писали их, не хотели заморачиваться созданием ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ, или поскольку, им он просто не был нужен. В любом случае, те программы могут запускаться занесением их имен в командную строку окна xterm. Команда whoami, упомянутая ранее, - хороший пример. Есть другая, назвается wc ("подсчет словей"), которая просто возвращает количество строк, слов, и символов в текстовом файле.

16.11

Способность выполнять эти небольшие программные утилиты в командной строке - большое достоинство Unix, и внатуре нефиг дублировать их чистыми ГИП ОпСистемами. Команда wc например, - та штука, которую ллегче написать с интерфейсом командной строки. Она, вероятно, состоит из не более чем нескольких строк текста программы, и башковитый программист мог бы, вероятно, написать ее в одну строчку. В скомпилированной форме она занимает просто несколько байтов дискового пространства (существуют отморозки среди программистов, которые могли бы набрать и сам исполняемый код, делающий то же самое, что и результат обработки исходников компилятором: во всяком случае, Крис Касперски (не путать с антивирусником Касперским - того зовут Евгений и они не родственники) приводил пример программирования PC-совместимой машины из командной строки ДОС - прим. перев.). Но код, нужный, чтоб дать той же проге графический интерфейс с пользователем, должно быть разросся бы до сотен или даже тысяч строк, в зависимости от воображения программиста, захотевшего сделать это (надо быть ПОЛНЫМ отморозком, чтоб такого захотеть - прим. перев.). Скомпилированная в работоспособный кусок софта, она в основном состояла бы из кода графического интерфейса пользователя. Она бы медленно запускалась и расходовала бы много памяти (даже косвенно: оконная система, по-любому необходимая графической программе, как раз и сожрала бы большую часть доступной памяти - прим. перев.). Это не стоило бы затраченных усилий, и таким образом "wc" никогда бы не была написана в виде независимой программы. Взамен пользователи ожидали бы чтоб появилась примочка для подсчета слов в коммерческом пакете программ.

16.12

ГРАФИЧЕСКИЕ ИНТЕРФЕЙСЫ ПОЛЬЗОВАТЕЛЯ имеют тенденцию навязывать большие расходы на каждый отдельный кусок софта, даже минимальный, и эти потери полностью изменяют среду программирования. Небольшие программные утилиты больше не стоят написания. Их функции взамен, имеют тенденцию быть поглощенными программными пакетами общего назначения. По мере того как ГРАФИЧЕСКИЕ ИНТЕРФЕЙСЫ ПОЛЬЗОВАТЕЛЯ становятся сложнее, и навязывают все больше и больше расходы, эта тенденция становится более повсеместной, и программные пакеты вырастают до колоссальных размеров; и с некоторого момента, когда они начинают объединяться друг с другом, как Microsoft Word, Excel и PowerPoint объединились в Microsoft Office: колоссальный универмаг программного обеспечения занимает часть города, когда-то заполненную небольшими магазинами, которые все поглощены им.

16.13

Это - нечестная аналогия, поскольку, когда небольшой магазин оказывается поглощен, это означает, что какой-то мелкий лавочник потерял свой бизнес. Конечно, ничто типа этого не случается, когда "wc" становится включенным в один из бесчисленных пунктов меню "Мелкомягкого Ворда". Единственным реальным недостатоком является потеря гибкости для пользователя, но это недостаток, на который большинство клиентов, очевидно не обращает внимания или не беспокоится о нем. Наиболее серьезный недостаток универмаговского метода, что большинство пользователей хотят или нуждаются в небольшой доле тогог, что содержится в этих гигантских программных пакетах. Остальное - мусор, мертвый груз. А еще у одного пользователя в следующей клетушке будут совершенно другие мнения о том, что полезно и что не. ("Мастдай" пытался решить эту проблему - есть вариант выборочной установки, а благодаря модульности и языкам автоматизации приложений фишки того же ворда могут использовать совершенно другие программы... Но кто ж из нормальных пользователей заморачивается выборочной установкой или программированием? Нил явно не из их числа - прим. перев.)

16.14

Другая важная вещь, которую стоит упомянуть здесь, что Microsoft включил в натуре крутую примочку в офисный пакет: среду программирования на языке Бейсик. Бейсик - первый машинный язык, который я узнал, возвращаясь к тем лихим денькам, когда я использовал бумажную перфоленту и телетайп. (Как говорится, "и какой же хакер не знает бейсика..." - Прим. прев.) Используя версию Бейсика, которая приходит с Офисом, на котором вы можете написать ваши собственные небольшие программные утилиты, которые знают как взаимодействовать со всеми маленькими ключиками, прибамбасами, бубенчиками и свистульками в Офисе. Бейсиком проще пользоваться, чем языками, обычно используемыми в юниховом программировании командной строки, и Офис достиг намного, намного большего количества людей, чем инструментальные средства ГНУ. Таким образом, вполне возможно, что эта фишка Офиса, в конце концов, породит больше приколов, чем ГНУ. (Хотя нельзя сказать, не погрешив против истины, что в Редмонде придумали что-то новое - встроенные языки расширений имеются у многих юниховых программ: тот же ЛИСП напропалую используется в emacs для настройки и добавления возможностей... Просто в юнихе большинство задач гораздо проще решить иными средствами, не изобретая еще один велосипед - прим. прев.)

16.15

Но сейчас я говорю о прикладном программном обеспечении, не об ОпСистемах. И как я сказал, "мелкомягкие" софтины стремятся быть очень хорошими вещами. Я не пользуюсь ими часто, потому что я не отношусь к их целевому рынку. Если Microsoft когда-нибудь сделает пакет программ, которым, я воспользуюсь и заторчу, тогда действительно настанет время, чтобы сбывать их акции, потому что я окажусь в рыночным сегменте для одного.



Jan 9/ Y2K+4

(to be continued...)





 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"