Мода на головные уборы
АрхивСубъективные заметки о Linux
В конце прошлого года моя мечта о более мощном компьютере в конце концов осуществилась. Но поскольку старого верного коня выбрасывать было жалко, заодно я приобрел пару сетевых карточек. А купив на улице у мужичка кусок кабеля с разъемами и припаяв два резистора к тройникам, получил домашнюю сеть. Под Windows сеть продержалась считанные дни (не потому что упала, а потому что показалась не очень нужной), и я решил, наконец, удовлетворить свое любопытство к Linux. Голова после Нового года не болела, поэтому на две недели я заперся в своей комнате и погрузился в новый мир.
Хвост, ноги, хобот (Объекты исследования слепых мудрецов)
Поскольку большую часть сознательной жизни я проработал на так называемой платформе Wintel (от 8088/87 под MS-DOS 3.30 до Pentium II под Windows 98), то прежде всего меня интересовало, что дает Linux по сравнению с Windows?
Люди, имея дело с компьютерами, в той или иной мере исполняют роли программиста, системного администратора и пользователя (я исключаю из рассмотрения роли разработчиков и производителей железа, продавцов, ремонтников и полных "чайников"). Примерив на себя все три шкуры, попытаюсь описать свои впечатления.
Начав с Red Hat 5.0 и через Red Hat 5.2, я пришел к Mandrake 5.3. Сравнение дистрибутивов дало ощущение тенденции, куда идет Linux.
"Чудище обло, озорно, огромно, стозевно и лаяй" (Раннее описание паровоза)
Все начинается с установки. В этом отношении все достаточно просто и сложно одновременно. Просто - это вставить CD в привод, перегрузить компьютер и пройти по шагам инсталляции. При знании английского языка и обладании здравым смыслом это преодолимо и к цели приводит. Сложнее - установить правильно. Для этого нужно, как минимум, полистать Installation Guide, man, FAQ и How to - сопутствующую документацию, которой в избытке. Вообще, чтение документации - это необходимый и важный процесс при работе с Linux. Для Windows метод тыка чаще достигает результата.
Можно также вспомнить двухтомник Ричарда Петерсена "Linux: руководство по операционной системе" - очень полезное чтение для начала, дающее представление о предмете, хотя и сопровождается устаревшим дистрибутивом Caldera.
Хотя Linux на самом деле одна, несколько фирм (Red Hat, Caldera и др.) предлагают дистрибутивы, содержащие ядро системы и набор прикладных пакетов, немного отличающиеся по составу и процедуре установки. По историческим причинам я имел дело с дистрибутивами Red Hat ("Красная шапочка"). Процедура установки в них довольно ясна и построена на использовании RPM-файлов, что позволяет легко инсталлировать/деинсталлировать отдельные пакеты, подбирая нужную конфигурацию. На основе дистрибутива Red Hat построен дистрибутив Mandrake 5.3 (спасибо фирме IPLabs за то, что он у меня оказался в нужный момент и не был изуродован, как на позднее появившемся диске "Лучшие программы для Linux"), отличающийся тем, что установка графической среды KDE естественным образом интегрирована в процесс инсталляции.
Хотя в описаниях пакетов много места уделено процессу компиляции, делать это ни разу не понадобилось.
После установки пакеты обычно работают, но даже небольшая подстройка требует изучения документации. Если делать одинокую рабочую станцию, то настройки и не нужны. Для сетевой рабочей станции они минимальны и практически делаются во время инсталляции. А вот сервер требует времени и усилий.
В результате у меня получилась такая конфигурация: старый компьютер (DX2/66 с 8 Мбайт RAM) как сервер под Linux и новый компьютер (Celeron 300A со 128 Мбайт RAM) как рабочая станция с двойной загрузкой Linux/Windows 98.
Конечно, первое впечатление - это возврат к командной строке. Linux, что бы ни говорили, это все-таки Unix [1], имеющая уже тридцатилетнюю историю. Ради интереса я полистал книги по Unix середины 80-х. Так они не устарели!
Linux содержит в себе практически все средства, механизмы и инструменты традиционной Unix. Это непростая операционная система. Но эта непростота - лучше воровства. Linux - гармоничная и мощная система. Команды, ключи, конфигурационные файлы... В умелых руках - это мощный инструмент, хотя для неумелых - сущий кошмар. Но набрав в командной строке "mc", мы попадаем в Midnight Commander - близкий родственник Norton Commander. Уже легче. А набрав "startx", переходим в графический режим.
Можно говорить об отмирании текстового режима. Но рациональное зерно в нем есть до сих пор. Понятно, что графический режим съедает ресурсы, давая красоту и удобство. Для сервера более важно эффективное использование ресурсов.
Кстати, деление на серверы и рабочие станции для Linux - понятие условное. Все зависит от состава установленных пакетов и настроек. Масштабируемость поразительна. Все в одном флаконе.
В наше время трудно не согласиться с необходимостью графического интерфейса для рабочей станции - места пользователя. Запустив графический режим на старой машине (кстати, именно ее параметры рекомендованы в одном из руководств), я пришел к выводу, что такое использование Linux могло доставить удовольствие только фанатам. И только на новой машине все заиграло и заискрилось.
Можно ругать Windows сколько угодно, но ее широкое распространение есть отражение простого факта: по возможностям и свойствам эта система соответствовала большинству имевшихся у людей компьютеров и позволяла в приемлемом темпе решать на них конкретные задачи. Компьютеры, сделавшие возможным массовое применение Linux, появились только недавно. Чем, помимо прочего, можно объяснить растущую популярность Linux. Как отражение этого видна активность в создании графической среды для рабочих станций.
Linux как сервер
О работе в сети. Linux прекрасно приспособлена (рождена) для работы в сети.
Причем оказалось достаточным использовать только протокол TCP/IP. Понятно, что имеются средства для всех мыслимых сетевых служб, как для локальных сетей, так и для Интернета.
От соблазна установить все я удержался, но любопытство сыграло свою роль. Для сервера интересными показались Apache, DNS, Samba.
Apache - это известный Web-сервер, установленный на доброй половине Web-сайтов мира. Это прекрасная основа для Web-сайта и для интрасети. Неплохое описание настройки сервера можно найти в статье "Русское племя апачей" Артема Подстрешного ("Мир ПК" .3, 1999 г., стр. 70-77).
DNS - сервер службы имен, устанавливающий соответствие между IP-адресами и именами в сети. Это основа администрирования сети, избавляющая от необходимости отражать изменения конфигурации сети на отдельных рабочих станциях. Подспорьем для настройки оказалась статья Константина Пьянзина "Настройка серверов имен DNS" ("LAN. Журнал сетевых решений" .3, 1997 г., стр. 86-91).
Samba - как мне показалось, прекрасное средство интеграции Windows-клиентов в сеть. С точки зрения клиента Samba-сервер представляется как сервер Windows NT. Клиент включается в сеть естественно, получая при нужде все необходимые сервисы (файл-сервер, принт-сервер, доступ к Интернету, почту и т. д.). Все это было опробовано и прекрасно работало.
Настройка этих служб на стороне сервера часто требует кропотливой настройки конфигурационных файлов, что является нетривиальной задачей. А кто говорил, что быть сисадмином легко?
Большое впечатление произвела многосеансность. С рабочей станции через telnet я легко попадаю на сервер. Комбинацией клавиш переключаюсь с сеанса на сеанс и могу полноценно работать на обеих машинах с одной клавиатуры и глядя на один монитор. И никаких переключателей монитор - клавиатура - мышь!
Linux для пользователя
Если режим командной строки может отпугнуть простого пользователя, то последние веяния делают работу с Linux гораздо комфортнее.
Основу графического интерфейса в Linux образует Xfree86 - фундамент, делающий возможной работу в среде X-Window.
Над Xfree86 надстраиваются оконные менеджеры. Прикладные программы, соответственно, образуют наружный слой. Поскольку основа взаимодействия с графическим адаптером одна, то прикладные программы в принципе можно запускать под любым из оконных менеджеров.
Один из менеджеров - KDE (The K desktop environment). [2]
Что такое KDE? С точки зрения пользователя - графический интерфейс, до боли напоминающий Windows 98, хотя, на мой взгляд, отличающийся в лучшую сторону. Создан мощный фундамент дружественного графического интерфейса пользователя c возможностями, как минимум не уступающими интерфейсу Windows.
По-видимому, KDE претендует на звание стандартного оконного менеджера. Если Red Hat 5.0 содержала несколько надстроек над X-Window, каждая из которых достаточно экзотична, а в дистрибутиве Red Hat 5.2 набор пакетов KDE прикладывался отдельно, то Mandrake 5.3 добавила KDE в естественный процесс инсталляции, сделав его стандартным de facto графическим интерфейсом пользователя (кстати, с Mandrake 5.3 у меня закончилась эпопея с добыванием X-сервера для Matrox Millennium G200, которую до этого можно было использовать лишь в режиме 640x480x16 цветов).
Еще раз подчеркну, что KDE - не единственное решение. Во-первых, до него уже был целый ряд оконных менеджеров (например AfterStep, FVFM), которые наверняка кто-то использует. Нужно также упомянуть проект GNOME. Но множество вариантов скорее отражает неудовлетворенность пользователей и разработчиков. Мне показалось, что появление общепринятого стандарта еще впереди.
В этом смысле показательна конкуренция между проектами GNOME (на основе библиотеки gtk+) и KDE (на основе Qt). По отзывам, которые я встретил, KDE более готов и стабилен, но GNOME быстрее развивается. Что победит? Как видим, война стандартов есть и в Linux. Но это хороший признак. Linux - живая растущая система.
В дистрибутивы включен целый ворох прикладных программ, в том числе игрушки. Но тщательный поиск среди них полезного позволил выделить могучий графический редактор Gimp и электронную таблицу Ksiag. Сравнительно мощный редактор Maxwell оказался беспомощным перед русским языком. Хотя для любителей имеется TeX (точнее, Klyx). Нельзя не вспомнить о браузере Netscape. Часто наталкивался на упоминание StarOffice, установил, попробовал и - стер...
В целом набор прикладных программ, конечно же, победнее и поскромнее, чем для Windows. Но спрос рождает предложение, рост числа пользователей Linux подвигнет и уже подвигает на создание и портирование приложений многие фирмы, известные по Wintel-платформе. Хорошо это или плохо - другой вопрос, но разнообразия это прибавит.
В настоящий момент реальное использование Linux уже возможно, в качестве примеров - работа в Интернете и графика, но массовый переход на эту операционную систему кажется преждевременным. Хотя, судя по темпам ее распространения, все может поменяться очень скоро.
Linux для программиста
Самый важный момент: создание программ для Linux не сосредоточено внутри закрытых корпораций, а осуществляется открытым сообществом вольных программистов, разбросанных по всему миру и активно общающихся через Интернет.
Понятно, что этот процесс координируется, но не управляется. В этом смысле программы создаются стихийно, и говорить, например, о точных сроках выхода чего-либо не приходится. Но, что поразительно на первый взгляд, проекты доводятся до ощутимого результата, качество продукта хорошее, развитие стремительное, ошибки устраняются быстро. Хотя никто ни за что как бы не отвечает, всегда можно получить помощь и поддержку.
Как ни парадоксально, одним из "достижений" индустриального программирования является фактическое устранение большого числа индивидуумов и даже, как мне кажется, многих фирм от создания программ. Несмотря на появление инструментальных средств типа Delphi, C++ Builder и прочих Builder и Visual, сложность построения программ с графическим интерфейсом повысила порог вхождения в умение создавать программы.
Сотни, а может, тысячи функций API, сложные и иногда загадочные отношения между ними, наличие целых недокументированных пластов. Наличие сложных и неочевидных (появившихся благодаря сугубо историческим причинам) правил построения программ. За последние годы для платформы Wintel можно назвать несколько смен парадигм программирования. Голая Windows API, MFC, OWL, OLE, ActiveX, VCL. За каждым сокращением - существенные и принципиальные смены тенденций и моделей программирования.
Принятие за основу ООП (C++) что-то облегчило в программировании, но не устранило. Так, для нормальной работы с библиотеками классов ТРЕБУЕТСЯ изучение их исходного кода. Хотя они, по замыслу, созданы как раз для того, чтобы "простой" разработчик не углублялся в системные подробности. Где-то я встретил мнение: "На C++ легко написать плохой код".
Со мной можно поспорить, но индустриальный подход к программированию пытался сделать из программирования ремесло. Мне показалось, что Linux собрала вокруг себя людей, считающих программирование все же искусством. В этом, может быть, основная причина успеха.
Вот эпиграф к предисловию книги Бьярна Страуструпа, создателя C++: "Язык формирует наш способ мышления и определяет, о чем мы можем мыслить" (Б. Л. Ворф). Интересно, что основной язык программирования, формирующий способ мышления творцов Linux, - это все-таки С, а не C++.
Я уже сопоставлял KDE и GNOME. Теперь посмотрим на их основы - графические библиотеки Qt и gtk+.
- gtk+ - "побочный" продукт разработки графического редактора Gimp. Интересно, что библиотека написана на С, но использует свою систему типов данных, имеет объектную структуру и реализует концепцию событий. И если нижний уровень библиотеки довольно изощренный, то код, который приходится писать прикладному программисту, довольно прозрачен и прост.
- Qt - творение норвежской фирмы Troll Tech, написанное на C++, а раз так, то это иерархия-дерево классов. Построение интерфейса программы основано на идее "сигнал-слот" и реализует концепцию компонентного программирования. Интересно, что довольно новые в C++ исключения и RTTI (определение типа данных во время исполнения) в библиотеке не используются. Хочется еще отметить, что возможен перенос приложений для Qt на платформу Windows 95/NT (причем утверждается и возможность обратного переноса без изменения текста прикладных программ). На первый взгляд, по сравнению с gtk+ библиотека Qt более массивна и более профессиональна, документация лучше проработана. Но... библиотека Qt, хотя ее исходные тексты доступны, не совсем свободна. Поэтому регулярно возникают проблемы с ее разработчиками по поводу изменения кода библиотеки. Вплоть до появления желания написать свободный аналог Qt, к тому же на С.
Нужно отметить, что технология программирования (в смысле инструментария) под Linux слишком традиционна. По сравнению с Delphi и прочими Builder'ами. Но есть информация, что через некоторое время появится что-то подобное и здесь. Так, о создании инструментов говорит Troll Tech (QtEZ и Qt Architect). Также я собственными ушами слышал, что фирма Inprise подумывает о переносе своих инструментов под Linux.
Мне кажется, что Linux принципиально устраняет недовольство собой. Ну не нравится что-то - сделай лучше. Благо исходные тексты доступны, инструментарий есть. Хотя, конечно, этот путь осилит далеко не каждый, и для многих это достоинство Linux чисто умозрительное.
Нельзя не вспомнить, что программист - это все же профессия, то есть один из способов зарабатывать деньги. Идеология Linux требует смены модели зарабатывания денег на программном обеспечении. На продаже самих программ много не заработаешь. Важнее становятся сопровождение, консультации, разработки на заказ - то есть услуги, труд и время квалифицированных специалистов, а не стрижка купонов. Этот подход непривычен, и споры по этому поводу слышны часто.
Для чего все это?
Первым достоинством и первым недостатком Linux является то, что это все-таки Unix.
Это очень мощная, надежная и элегантная операционная система. Мне при всех варварских экспериментах не удавалось ее серьезно уронить. Хотя неоднократно некоторые приложения в графическом режиме выпадали в командную строку.
Это более мощные основы системы, MS-DOS в каком-то смысле - жалкая пародия.
Это более однородная масштабируемая среда для организации сети.
Хотя Linux и не делалась в рамках проекта GNU, тем не менее она полностью соответствует ему по духу. Linux - свободное программное обеспечение, что означает следующее:
- свободная система, бесплатная или почти бесплатная (хотя свободное и бесплатное - не одно и тоже);
- свободный доступ к исходным текстам (нет недокументированных особенностей, тайных закладок и тому подобных неожиданностей);
- доступное для контактов открытое сообщество разработчиков, активно работающих над системой;
- не приходится изобретать велосипеды;
- переносимость системы на разные платформы;
- возможность иметь всего одну операционную систему в устройствах от (условно) утюга до сервера;
- возможность иметь то, чего нас так долго лишали.
Специально для "настоящих" линуксоидов
Хотя Linux меня очаровала, линуксоидом я не стал.
Конечно, это вопрос терминологии. Но, по-моему, линуксоид - это термин религиозный. По жизни я атеист, поэтому фанаты всегда вызывали у меня определенное подозрение. Фанатизм обычно основан на слепой вере, а не на трезвом разуме.
При чтении страничек линуксоидов невольно возникает образ молодого, но бородатого, сидящего с баночкой пива за дохловатой машиной маргинала, не имеющего конкретных целей и задач, но желающего подняться над толпой виндусоидов.
Я, конечно, заранее извиняюсь перед не соответствующими этому образу людьми. Потому что появился дистрибутив "Русский Linux 6.0 Красная шапочка", в котором инсталлятор работает, наконец, по-русски. (Хотя непонятно, почему эта возможность до сих пор не введена в стандартный дистрибутив Red Hat наряду с языками прочих шведов.)
Почему такой образ? Потому, что чтение файлов документации и копание в исходниках выявило удручающую редкость русских имен среди авторов программ. Потому, что знания волшебных заклинаний мало для появления Мастера. Потому, что знание операционной системы необходимо, но не достаточно. Потому, что от копания в чужом до создания своего дистанция огромного размера. Потому, что от юзера до программера - пропасть, которую еще надо перепрыгнуть. Кому нечего сказать, тот громче всех кричит. Обидно, что пар уходит в свисток.
Одним из симптомов проявления загадочной русской души может послужить наличие множества русских кодировок (как минимум три - альтернативная, koi8r и Windows-1251). Вокруг этого замечательного многообразия наворачиваются всякие сложности (посмотрите, например, на русский Apache). И меня гложет мысль, а почему бы не оставить только одну? Например, подать руку слабому и перейти всем на Windows-1251. Ведь проблема лишь в том, чтобы договориться. Или нам гордыня перед пользователями ("юзерами", "ламерами") не позволяет? По большому счету, именно пользователи прикладных систем - самые героические люди. Они работают не на самом лучшем, а на том, что есть. Продираясь через синие экраны и заумь интерфейсов, чумея от глюков, которые есть продукт программистов, они все-таки решают свои задачи. Сняв проблему множества кодировок, можно облегчить им жизнь.
Хочу процитировать заключительные слова Чарли Калверта в "Borland C++ Builder. Энциклопедия пользователя": "...наша главная задача состоит отнюдь не в погоне за деньгами, не в завоевании власти, но в создании мира, благосклонного к нам и нашим детям".
Времена маргиналов от Linux, по моему мнению, уходят в прошлое. Приходит время обычных юзеров, программеров и сисадминов. Именно как сообщества свободных и равных.
Наступает пора сменить Linux интеллигентскую шляпу или цилиндр фокусника на рабочую кепку.
P. S. Эти заметки не ставили целью описать какие-то технические детали - для этого есть документация, а я не гуру. Это скорее свежий, не страдающий глубиной и оригинальностью, субъективный взгляд на предмет. Каждая из тем только затронута. Нельзя объять необъятное.
Этот взгляд предвзятый, но не злобный. Ввязываться в религиозные споры не желаю.
По жизни время между Windows и Linux делится сейчас примерно 50 на 50.
1 (обратно к тексту) - Здесь и далее - не в смысле торговой марки, а по функциональной сути.
2 (обратно к тексту) - Как известно, у нас каждый чудак - Бетховен. Чтобы не изобретать велосипед, скриншоты заимствованы на сайте www.linux.org.ru.
Сергей Козлов - выпускник МФТИ 1984 года, муж, отец, вольный программист-разработчик.