Сказки дядюшки Линуса.
Preface Судя по отзывам на linux.org.ru большинство народа не дочитывает статью до конца, а где-то в первой ее трети забывает, что речь идет о desktop системах и только о них. Я не спорю, что Linux в качестве сервера -- это то, что нужно админу. Но мы говорим о desktop, а посему, давайте мыслить в этом направлении. К тому же feedback welcome. Если кто-то аргументированно, т.е. со скриншотами (пожалуйста, не в почте), ссылками на источники информации, библиографией и т.п., докажет мне, что я где-то не прав, я без колебаний внесу в статью изменения, и помечу, что я их внес в Revision History с указанием фамилии/ника контрибьютора. На голый же флейм, извините, я отвечать не буду. Позволю себе, также, напомнить, что корни этой статьи -- в форуме "Клуб поклонников Linux" на сайте Компьютерры.
Толпа безумствует. Кругом только и слышно "Linux, Linux". При этом большинство людей не понимают, о чем идет речь, и принимают все, что говорится адептами Linux на веру, видимо из-за природной тяги верить в чудеса. Чудес же не бывает, и эта статья - попытка это показать. Не без аргументации, конечно. По ходу изложения я развенчаю множество мифов и легенд связанных с Linux и проведу его сравнительный анализ с двумя другими хорошо известными мне ОС - BeOS 4, как наиболее продвинутой в части архитектуры, и Windows NT 4 как прямого конкурента Linux. Здесь намеренно не упоминается Windows 95/98, т.к. эти ОС, по-моему, служат лишь для бета-обкатки того, что позже встраивается в Windows NT. BeOS является наиболее молодой из рассматриваемых здесь ОС. Скорость работы коллектива Be Inc вызывает искреннее восхищение. Притом, что коллектив этот состоит из 80 человек, BeOS уже поддерживает USB, видео, многоязычный ввод, имеет красивый и удобный интерфейс и богатейшие мультимедийные возможности. Это повод сильно призадуматься над эффективностью open source модели, ибо миф первый состоит в том, что она поразительно эффективна. Мы столько раз уже слышали про "десятки тысяч разработчиков по всему миру", что возникает легкое недоумение. Ведь числа 80 и 10000 различаются на несколько порядков. Следует изначально оговориться, что речь идет о desktop применении всех трех ОС, кроме тех случаев, где это оговорено особо. Далее по порядку.
Ядро Миф второй состоит в том, что Linux, якобы имеет исключительно быстрое, маленькое и устойчивое ядро. К тому же, бытует миф третий о том, что Linux имеет продвинутую архитектуру и использует самые передовые технологии. Хотя ядро Linux и можно назвать устойчивым, устойчвость Linux в целом, как и NT и BeOS не дотягивает до микроядерных архитектур. Почему? Ядра всех трех названных ОС в той или иной степени монолитные, причем у Linux даже больше чам у остальных. Посему, Linux можно уронить неотлаженным драйвером. Он, также, с большой вероятностью упадет от сбоя аппаратного обеспечения, что опять же вызвано его монолитноядерностью, а также тем, что программистам, работающим исключительно из чувства альтруизма, просто не хочется писать устойчивые к hardware ошибкам драйверы. Да и как они могут это сделать, не имея полной технической документации по устройствам, для которых пишут драйверы? Это ядро _не маленькое_. Если потрудиться и заглянуть в NT Diagnostics, то будет видно, что невыгружаемая память, занимаемая собственно ядром - примерно 5.5 - 6М. Вам кажется, что это много? А тепрь давайте вспомним, что у NT в составе ядра (не совсем "в составе" -- в нулевом кольце защиты процессора, который NT Diagnostics виден как "ядро") находится GDI, обеспечивающий графический сервис, который и не снился ни одной XFree. Там также находится большинство драйверов, включая графический. Что если мы все это опустим? Я думаю размер занимаемой ядром памяти вам уже не покажется таким большим. Достаточно сказать, что kernel32.dll имеет размер 365К (Windows NT Server 4.0 SP5)! Но вернемся к мифологии, а точнее к третьему мифу . "Передовым" технологиям Linux уже давно пора бриться. Где же, господа, вытесняющая многопоточность ядра и файловой системы как в BeOS? Где журналированная файловая система устойчивая к ошибкам как в NT и BeOS? Где хотя бы многопоточный TCP-IP стек как в NT? Где хоть одно нужное и работающее приложение с использованием CORBA? Где работающий UNICODE? Где, в конце концов, OOP в дизайне? Не спорьте, все это нужно Linux для того, чтобы он стал по-настоящему масштабируемым. И все это еще предстоит реализовать, в то время как Microsoft и Be Inc будут заниматься web, мультимедиа, визуальным и речевым машинным восприятием. "Чтобы стоять на месте, надо очень быстро бежать".
Требования к аппаратному обеспечению Миф четвертый , состоит в том, что Linux якобы нетребователен к аппаратному обеспечению. Это не совсем миф, потому что при использовании его, скажем в качестве файл-сервера небольшой организации и web сервера для статических web страниц вам понадобится, скажем, Р90 и 16М RAM. Это можно запустить даже на 486SX33 и 8М RAM, но, во-первых, не ждите большой производительности, а во-вторых, задайте себе вопрос: вам это надо, есть у вас такая машина? Иное дело, если мы запускаем одну из двух desktop систем для Linux: KDE или GNOME. Вот тут Linux уже нечем гордиться. Например, файловый менеджер gmc в GNOME занимает больше места в памяти, чем пресловутый Windows Explorer на целый мегабайт, при этом, замечу, не обладая даже близкой функциональностью. Минимальный предел для работы с графикой одинаков для всех трех ОС: 32М. А теперь вопрос. На кой ляд нужна пользователю desktop система без графики? Я думаю, ответ здесь очевиден. К тому же, память сейчас стоит недорого и 128М можно купить за $100. Так чего же, извиняюсь, не по делу "гнать волну"? Единственное, с чем я, пожалуй, соглашусь, так это с тем, что Linux нетребователен к дисковому пространству в случае, если не установлена XWindows и GNOME/KDE. Его в этом плане превосходит только BeOS (даже с GUI), имеющая к тому же в составе дистрибутива полноценную среду разработчика от Metrowerks и графический отладчик. В этом каждый желающий может убедиться сам. Миф пятый состоит в том, что "Linux работает на чем угодно" и "с каждым днем список поддерживаемого аппаратного обеспечения растет". У Linux есть, например нелады с видеокартами, LPT (и не только LPT) сканерами, МО дисками, большинством принтеров, некоторыми SCSI адаптерами, некоторыми сетевыми и звуковыми картами. Проблемы, которые в ближайшее время решены не будут.
Программное обеспечение Миф шестой состоит в том, что для Linux доступно множество хорошего бесплатного ПО. Предлагаю вам установить Linux, и, если справитесь, сходить на www.freshmeat.net и посмотреть, готовы ли вы, пользователь, пользоваться этими поделками и бета версиями. То, на что русскоязычному пользователю стоит взглянуть, можно пересчитать по пальцам: TEX/LaTeX, LyX, GIMP, Netscape Navigator, и еще пять шесть более-менее приличных программ. Даже при использовании этого, относительно доброкачественного ПО у неанглоязычного пользователя возникают проблемы, которые, в случае LyX блестяще описал Владимир Игнатов на сайте КТ. Я еще раз задаю вам вопрос: вам это надо? Здесь хуже Linux только BeOS, но есть два "но". Первое: давайте вспомним, сколько этой ОС лет. Второе: написание многоязычных приложений для BeOS не представляет большой сложности, т.к. в ней, в отличие от Linux UNICODE работает, и программировать под нее легче, так как она снизу доверху объектно-ориентированная. Нормального русскоязычного ПО под Linux/XWindows не приходится ожидать и еще по одной причине. Дело в том, что корректная руссификация Linux предусматривает KOI8-R в качестве основной кодировки. Миф седьмой состоит в том, что без нее жить нельзя. Почему KOI8-R это плохо? Как я уже говорил с UNICODE в Linux пока плохо (будем надеяться, что "пока"), хотя с TrueType шрифтами уже все наладилось более-менее. А теперь вопрос. Много ли вы знаете русских шрифтов в кодировке KOI8-R? Те, кто хоть раз видел руссифицированный Linux со шрифтами cronyx, поймут меня без дальнейших разъяснений. На слезу прошибает. Чем аргуметируют линуксоиды (и юниксоиды) жизненную необходимость KOI8-R? Все дело в том, что при пересылке русскоязычной почты через некоторые старые unix серверы с древним sendmail у байт-кодов, соответствующих буквам, обрезается старший бит, и в результате кодировка становится семибитной (а не восьми). Так вот, текст в KOI8-R при этом не теряет читаемости, он просто отображается английскими буквами. А теперь зададим себе вопрос. Почему бы не перекодировать сообщения при отсылке?
Linux - это бесплатно Это - миф восьмой. Начнем с того, что он все же стоит некоторых денег, причем иногда довольно значительных ($50-60 и это еще в России!). BeOS в России можно купить за $69, NT, правда, не так доступна по цене. Вспомним, однако, старую как мир истину о том, что время это деньги. Из трех рассмотренных здесь систем только для освоения Linux вам потребуется более 15 минут времени (если, конечно, раньше вы работали хотя бы в DOS, Win 3.11 или на Mac). И даже более недели, если вы в глаза раньше не видели UNIX. А может даже более месяца. Наконец, вам никогда его не освоить, если вы раньше не имели дел с компьютерами. No chances. В локальном масштабе это выливается в потерю вашего личного времени, которое для вас отнюдь не бесплатно. В глобальном... Давайте представим себе, что некоторая фирма Х решила перейти на Unix и переучить всех менеджеров и секретарш работать с ним. Какое время фирма будет непродуктивно простаивать и сколько ухлопает денег на обучение персонала? Я думаю, дешевле будет купить NT, если стабильность уж очень критична. Как говорил один небезызвестный персонаж: "На вещи надо смотреть ширше". Вы когда-нибудь видели человека, который, ранее не работая на компьютере, просто сел за NT и начал работать? Я видел. А на Unux такое себе и представить невозможно. Такая вот ТСО получается.
Linux бесплатен целиком и полностью. Миф девятый . Linux не бесплатен для вас лично. Об этом мы уже говорили в предыдущем абзаце (см. миф восьмой). Помимо этого пользователям Linux, даже таких лицензионно чистых дистрибутивов как RedHat и Debian следует быть крайне внимательными при использовании его в коммерческих целях. Так, например, в дистрибутиве RedHat были найдены компоненты, бесплатные для некоммерческого использования, но с какой-то совершенно невообразимой стоимостью лицензии в ином случае. Хотя, пожалуй, в нашей стране эта проблема не актуальна. Пока. Хочу предостеречь разработчиков Linux от использования в коммерческих целях библиотеки Qt от Troll Tech, на которой базируется KDE. В случае такого использования, каждый разработчик должен заплатить ни много ни мало $1000-$1550. Хотите бесплатный прогноз? Linux перестанет быть бесплатным совсем года через 2-3, ибо уже сейчас он сильно коммерциализируется (вспомним цену RedHat Linux в Америке - $99). И умрет, если Free Software движение не даст бизнесам заработать на нем большие деньги. Я не исключаю даже появление отнюдь не бесплатного Microsoft Linux, разительно отличающегося по качеству всего на свете от остальных дистрибутивов. Да, у него будет бесплатное ядро, да, может быть, Microsoft согласится использовать XFree, но она напишет свой Window Manager, стоящий денег и сделает так, чтобы порт, скажем, Word работал только с этим WM и прилагаемыми к нему библиотеками. Вот вам один из возможных вариантов развития событий, приводящий к "небесплатности" Linux. У вас, конечно, будет возможность работать с "бесплатным" дистрибутивом, но захотите ли вы с ним работать?
Можно хорошо заработать на поддержке. Этот миф, а он по счету десятый служит обоснованием большинства предлагаемых бизнес-моделей в мире Linux. Давайте на минутку отойдем от мира компьютеров и представим себе, что, скажем, вы пришли в магазин бытовой техники и хотите купить видеомагнитофон. У вас есть широкий выбор: либо бесплатный видеомагнитофон и платная поддержка, потому что пользоваться им самостоятельно вы вряд-ли сможете (Linux), и вам что-то там надо будет подпаять руками, заменить некоторые детали более новыми, найденными на свалке (Freshmeat), заново собрать лентопротяжный механизм, либо дорогой аппарат, понятный с первого взгляда, могущий все то же самое и, часто, лучше, но без лишней головной боли (NT) или не столь дорогой, но гораздо более быстрый и со своим, гораздо более бедным, но достаточно интересным набором фильмов (BeOS). Я думаю, вы, прикинув расходы нервов и денег на первую модель все же купите вторую или третью. Таким образом, опять же, Linux предстоит еще долгий и многотрудный путь как desktop системе.
Linux это легко и просто. Миф одиннадцатый , разделяемый, надо сказать, не всеми "поклонниками Linux". Давайте определим сначала термин "простота". Под простотой будем понимать простоту в установке, простоту в настройке и простоту в использовании. Я думаю никто здесь не будет спорить, что NT и BeOS удовлетворяют этим требованиям в полной мере. Что же касается Linux, то вашим основным занятием при освоении этого "шедевра" станут чтение электронного справочника man, а также разного рода HOWTO и Mini-HOWTO нечеловеческих размеров по вопросам, которые у desktop пользователя BeOS или NT вызовут лишь здоровый смех (dial-up, установка нового hardware, шрифтов, сетевых настроек) или даже удивление (установка кириллицы, необходимость прибегать к редактированию текстовых файлов для установки оптимальной частоты монитора и возможность таким образом этот самый монитор сжечь). Они-то все настраивают мышкой. Я могу назвать это приемлемым для себя, сетевого администратора (NT и Linux). Однако секретарша Лариса вряд ли сподобится прочитать Cyrillic-HOWTO по-английски (sic!), и понять, что там правда, а что автор написал просто "от балды", что устарело, а что нет, ибо не знает она английского. Не нужен он ей по жизни. Как не нужно ей по жизни и знать о, скажем, системном вызове fork, секъюрити и IP адресах DNS серверов. Ей просто нужно вести документооборот. Шеф ведь, мягко говоря, не оценит ее рвения, если заметит, что она полдня читает FAQ. Вот почему я утверждал и утверждаю, что Windows как desktop ОС альтернативы пока нет. Ну, если только MacOS...
Коммерческие ОС -- это зло, с которым надо бороться. Еще один, двенадцатый по счету миф, в который люди просто верят, даже не глядя на факты. Давайте на минутку поступимся моральными принципами, и посчитаем чужие деньги. О том, что Microsoft Corp. стоит $500 млрд. КТ уже недавно писала. Это неудивительно для компании, которая выпускает столь широкую, как у MS, гамму продуктов и продает ее за хорошие деньги, занимаясь попутно всем, что под руку попадется. Ведь Microsoft уже более 20 лет. Вспомним о, в общем-то, вполне довольных жизнью программистах, которым она дает интересную работу и платит хорошую зарплату, вспомним о миллиардах долларов, идущих на НИОКР, вспомним о том, что у MS-таки существует academic и volume pricing на многие продукты, и кое-что она-таки отдает бесплатно. Можно вспомнить также о гигантских вложениях в ряд ныне процветающих компаний (Apple тому пример). В общем и целом, становится ясно, что компания существует не зря. Теперь рассмотрим методы работы ведущего поставщика Linux -- RedHat, и иже с ним. В общем-то скомный коллектив программистов, который есть у этой компании, не дал миру еще ничего более-менее полезного. Почти все, что вы найдете на дистрибутивных дисках RedHat сделано другими людьми, и выпущено под GNU GPL. RedHat даже не сподобился заплатить этим людям royalty хотя бы из порядочности, сам при этом неплохо заработав. Я, например, слышал о $86 млн за прошлый год. Я считаю (и меня многие поддержат), что любой дистрибутив Linux, не содержащий коммерческого ПО, должен стоить чуть более цены носителя -- $5-6. В этом свете странно выглядит MSRP $99 за RH Linux в Америке. Это притом, что на НИОКР у них не уходит ни цента, и продают они, фактически, бета-версию. Справедливости ради, стоит отметить, что вы можете получить тот же RedHat по ftp, но как вы думаете, сколько вам будет стоить dial-up время, нужное для того, чтобы сгрузить 650Мб дистрибутива? Вы, также, не получите PostScript версии их руководства пользователя (со слухов -- очень даже толкового). Можно, конечно, найти Linux и за эти самые $5-6 (IPLabs), кстати, рекомендую, ребята кое-что подстрогали и русифицировали. Однако книжки вы также не получите. Даже в PostScript. SuSE поступает честнее: у них вы можете сгрузить и Linux (но уже 3Гб) и руководство к нему. Однако он даже менее "лицензионно чист" (да он и не претендует на лицензионную чистоту), чем RedHat. Таким образом, получается, что Linux -- коммерческая ОС, когда речь заходит о продажах, и некоммерческая -- когда нужно платить royalty разработчикам. Странный "альтруизм", вам не кажется? Даже BeOS стоит всего $95 (в России -- $65), а они на своей ОС пока денег не делают, вкладывая в ее развитие (читай -- НИОКР) почти все свои прибыли. Зададим себе еще один вопрос. Сколько талантливых программистов RedHat смог бы нанять на те самые $86 млн.? Я думаю, этих денег хватило бы для того, чтобы решить большую часть тех проблем, о которых я писал выше.
Все эти "новомодные" штучки типа OOP, RAD и компонентного программирования нам не нужны. Миф тринадцатый. Один из самых вредных и стойких. Ребята из Troll Tech (разработчики Qt), к счастью, поняли, что "штучки" эти жизненно необходимы при написании больших и очень больших программ и систем повышенной надежности меньшими силами и в более сжатые сроки, чем это могут себе позволить pure C разработчики. Проблемы традиционного С при разработке известны давно. Это, например, плохая управляемость проектов размером более 100 тыс. строк кода, трудности с управлением ресурсами, необходимость тщательного слежения за распределением памяти, плохие возможности повторного использования кода, кроме того, IMHO, объектная декомпозиция большинства задач (особенно больших) гораздо логичнее алгоритмической. Не секрет, что человек одновременно может эффективно следить не более чем за пятью-семью объектами. Отсюда вывод: от сложности надо уходить. Решается это все с помощью абстрагирования, инкапсуляции, наследования, агрегации и полиморфизма. Это -- взаимодополняющие и взаимопроникающие понятия, составляющие суть объектно-ориентированной парадигмы. Абстрагирование и интерфейсинг -- без этого большие системы не пишутся. Ни для кого не секрет, что OO код гораздо легче понять (читай -- усовершенствовать), чем старый добрый процедурный. Кто-то скажет, что OO код медленнее работает, однако здесь уже все зависит от степени кривизны рук программиста. Хотите убедиться? Поставьте себе BeOS, начисто лишенную процедурного наследия. Быстро работает? Потому, что спроектирована грамотно. Даже NT, изначально процедурная и обладающая процедурным API, быстро двигается в эту сторону, COM/DCOM тому пример, хотя это и "тяжелое" OOP, с попыткой разделить приложение на объекты физически, и уйти от необходимости использования единого языка программирования (теперь можно на VB, VBA, С, C++, Object Pascal и т.п.). Попробовала бы Microsoft "поднять" 35 млн. строк не объектно-ориентированного кода (W2K)! Я думаю, это не под силу даже ей. Живой и здравствующий пример действенности OO подхода -- Be Inc. Но не будем повторяться. А теперь еще один вопрос. Когда все это будет в Linux? Когда я смогу в Linux абстрагироваться от всего, кроме "моей" задачи, как я делаю это в Borland C++ Builder 4 или Metrowerks BeIDE? Когда я смогу использовать мой код повторно "как компоненты", не вспоминая, как конкретно работает каждая кнопка моего приложения и что нужно сделать, чтобы вставить ее в форму? Я даже не берусь утверждать, что это все будет вообще когда-нибудь, ибо пресловутая community проблемы не понимает. Я еще раз позволю себе отослать тех, кто не понял большую часть этого абзаца к книгам Бъерна Страуструпа и Гради Буча. Да, их исключительно тяжело читать, но они снимают многие вопросы типа "на кой это нам".
Стоит нам еще чуть-чуть поднатужиться и Microsoft -- конец. Миф четырнадцатый. Ну о продуктивности Linux сообщества мы уже говорили выше. О проблемах с инвестициями в НИОКР тоже. О несовершенстве Linux как desktop системы тоже сказано немало. Microsoft уже давно сделала себе репутацию непотопляемой компании. Давайте вспомним лишь несколько имен, которые она в своем, достаточно широком секторе рынка задвинула в глубокую тень: Netscape (Navigator/Communicator), IBM (OS/2), Novell (NetWare), Corel (WordPerfect)... Порывшись в памяти, список можно продолжить едва ли не до бесконечности, но не в этом суть. За 25 лет Microsoft утопила столько конкурентов, сколько еще ни одной компании не удавалось. В чем же причина? Кто мешал этим компаниям "задвинуть в тень" Microsoft? Она ведь не всегда была такой большой и сильной. Причин, собственно, две. Первая: г-н Гейтс -- блестящий стратег. У меня складывается впечатление, что он думает быстрее, чем все его конкуренты вместе взятые. Вся его империя построена, грубо говоря, на положительной обратной связи и "убойном предложении", как необходимом условии ее существования. Такими "убойными предложениями" были в разное время Windows 3.1/3.11,95/98, Windows NT 3.5,4.0, MS Office 6,95,97,2000 и множество других продуктов вышеозначенной компании. Ваш оффис может отказаться от них? Я думаю нет. Вы даже купите следующие версии. Вторая причина: Microsoft -- очень гибкая компания. Если Free Software Foundation разродится приемлемой бизнес-моделью, то я не исключаю, что Microsoft воспользуется и этим способом делания денег. Согласитесь, ей было бы очень неплохо продавать CD с операционной системой, которую бесплатно отлаживает и модернизирует community, за те же $99, не делая, согласно сложившейся моде, никаких инвестций в НИОКР. Можно также вспомнить о том, что Microsoft все больше занимается media, hardware и web, что делает ее просто непотопляемой. На нее работают самые талантливые программисты, ученые, дизайнеры, менеджеры, юристы, художники, вебмастеры, маркетологи, промоутеры, мотивируемые на труд хорошей зарплатой и реальной преспективой служебного роста. Все, включая внутрикорпоративный психологический климат, продумано до мелочей. Вопрос. Это как же нужно поднатужится, чтобы Microsoft настал конец? Уж не поэтому ли Гейтс не испугался Linux? Или, может быть, потому, что у него в кармане Windows 2000 затмевающая все, что было создано в области ОС до сих пор?