Пингвины и капуста

Пингвины и капуста

"Дама Ваша убита!"
А.С.Пушкин, "Пиковая Дама"
"В нечленораздельных выкриках я не слышу аргументов"
ф.Бисмарк

На статью уважаемого Германа Иванова о распространенных мифах про Linux и Windows наверняка будет много откликов — не в прессе, так в сердцах. Уважаемый Герман Иванов наступил на давно и хорошо изученные в форумах грабли, а потому, полагаю, огребет по полной программе. И поделом. Сначала я пробежал его текст поверхностно, потому что бездоказательную ругань на тему "слон сильнее кита" производить легко. Но потом споткнулся о фразу, которая уже годится для возбуждения иска по статье "клевета". Вот эта фраза:
"Юзер под win-32 сам выбирает, чем ему слушать музыку (...). И он не платит вынужденно деньги за софтину, которой кто-то решил его принудительно осчастливить".

От такого неприкрытого хамского передергивания у меня прямо дыхание сперло. Это значит, Linux-сообщество принудительно заставляет бедную несчастную домохозяйку платить за ненужный ей набор софта Python-developer'a, в то время как win-32-юзер совершенно самостоятельно может выбирать 1,5-2 Gb Windows'ких программ, решительно не имея возможности отключить что-либо из подаренного добрым дядей Билли, без того чтобы не грохнуть систему. Ставлю в известность всех, кого это касается, что не RedHat, а Microsoft в судебном порядке обязали исключить из поставки компоненты, ненужные для работы собственно системы. Сообщаю также, что одним из пунктов обвинения против Microsoft являлась "продажа компонентов, ненужных пользователю, без возможности исключения последних". Конкретно речь шла об Internet Explorer. Суд закончился не так давно, и его решение легко найти, например, вот здесь: http://www.internet.ru/article/lentanews/2002/05/24/7670.html .

Думаю, не одного меня оскорбила эта фраза. Попыхтел я немного, а потом подумал: наверное, Герман Иванов просто не знает, о чем пишет. Он пытается сравнивать политику двух торговых компаний, одна из которых производит Linux-дистрибутивы (RedHat, раз уж взят такой пример), а другая — Windows-дистрибутивы. Никакая из этих компаний не имеет отношения ни к Linux, ни к понятию free, ни к Сообществу, а только к прибыли. Просто RedHat пытается извлекать деньги из хорошей идеи, а Microsoft из плохой. А бесплатный труд разработчиков используют и те, и другие. Так, Microsoft снизила цену на ту же WindowsXP, в первую очередь, под давлением open-source-систем, и именно уничтожающая критика open-source-сообщества заставила Windows меняться. Иначе она бы до сих пор стоила $300 без офиса, как это было еще сравнительно недавно.
Скажем откровенно, я не писал бы этого текста, если бы не обозлился. Может быть, уважаемый X-Stranger и прав пытаясь примирить фанатов обеих систем. X-Stranger не стал разогревать конфликт. А я подумал о людях, которые на основании статей уважаемого Германа Иванова сделают неверный вывод как о Linux, так и о Windows. А вопрос явно заслуживает более исчерпывающего освещения, чем приведенное на развороте.
И я уже собрался было привести сравнительную таблицу качества программ по критериям "корректность, полезность, надежность, эффективность" — и т.д. (всего десять согласно Хювенену-Сеппяйнену "Мир Лиспа"), но спохватился, что Герман Иванов строит свои доводы на почве сравнения профессионализма систем — так при чем же тут домохозяйки, то бишь конечные пользователи, end-user? Тогда и я решил рассмотреть linux-based-системы и windows-clones с точки зрения профессионалов.
Начнем с определений. Определение профессионала, приведенное Германом Ивановым, безусловно, верно, но неполно. Герман Иванов правильно замечает, что профессионал в области А есть человек, берущий деньги за работу или услуги в области А. Однако, в рамках современной законодательной базы, человек, берущий деньги за оказываемые им услуги или за товары, несет определенную ответственность за качество услуг или товаров. Ответственность все меняет. Профессиональный инженер-конструктор, расчетчик (которым я являюсь) не пойдет покупать программу у лоточника совсем не потому, что она там дешевле, и не потому, что ее релиз там неполон, и уж совсем не потому, что лоточник не поможет эту программу инсталлировать.

Профессиональный инженер-конструктор, ставящий свою подпись под расчетами прочности, пойдет покупать расчетные программы только у тех продавцов, на которых в случае сбоя программы можно будет переложить ответственность за ошибку в расчете. Действительно, у нас в стране принято использовать пиратские копии, но каждый, кто это делает, применяет их на свой страх и риск. В "случае чего" такой человек будет нести все виды ответственности, в том числе и уголовную. Раз уж мы пытаемся тут корчить из себя профессионалов, так давайте вспомним и о том, что любой риск имеет свои границы.
Ага, скажет искушенный читатель, так чем же тут Linux лучше? Ведь первая строка инструкции к каждой свободной программе "NO WARRANTLY ABSOLU-TED", смысл которой: "Никаких гарантий не даем". Потому-то Linux и стоит так дешево.
А что, спросит его читатель более искушенный, разве лицензионное соглашение любой официально купленной программы не содержит условия, что "Программное обеспечение поставляется as is ("как есть"), и производитель не несет никакой ответственности за последствия его применения"? Ведь закон о том, чтобы заставить производителей софта нести ответственность за ошибки, еще только рассматривается в тех же США и, скорее всего, не будет принят. Если производителя невозможно прижать за баги в официально выпущенном продукте, то за пиратские копии своего продукта любой производитель может уже и вас прижать. Согласно закону об авторском праве.
Теперь возвратимся к примеру Германа Иванова. Вот на лотке Linux и Windows. Допустим, что стоят они одинаково. Допустим, что и набор программ в обоих комплектах примерно одинаков: система, офис, браузеры, наборы для разработчика. Теперь допустим, что вы, как профессиональный администратор, хотите собрать компьютерный клуб... Какую статью Закона РБ об авторском праве вам зачитают в участке, если вы купите Windows, и какую — если вы купите Linux?

Если ситуация кажется вам чересчур гипотетической, то на Украине она в порядке вещей. Около года назад США заявили, что прекратят гуманитарную помощь Украине из-за того, что там-де процветает индустрия пиратских компактов. В Киеве немедленно изобразили борьбу с пиратством: рейд по компьютерным клубам закрыл несколько из них под предлогом использования нелицензионного Windows. На linux.org.ru обсуждалось, что из-за этого многие киевские администраторы вынуждены покупать ALT-Linux, несмотря на его (тогда еще) сырость и неприятность.
Но допустим, что мы занимаемся такой деятельностью, которая лицензированию не подлежит, и никто нас не бьет и не пинает за пиратскую Windows+VisualBasic, на которой мы творим свои гениальные произведения. Как мы — профессионалы — сможем получить прибыль от своих программ в условиях чисто пиратского рынка? Пока крадут у Билли, мы злорадствуем, но почему мы думаем, что у нас красть не станут?
И опять спросит читатель: а чем лучше отдавать даром программы под Linux? Ведь за них тем более не заплатят! Все верно, но работая под Linux вы с самого начала знаете, на что идете. С программами под Linux можно смело выходить на западный рынок. С программами под Windows тоже можно. До тех пор, пока какой-нибудь вредный буржуй не поинтересуется лицензионной чистотой продукта. Или до тех пор, пока наша страна не решит войти в какую-нибудь международную торговую организацию, требующую соблюдения каких-нибудь там авторских прав.
На этом вопрос о лицензировании закрываем — умному достаточно.
Рассмотрим вопрос о языках программирования, которых под Linux'ом якобы нет. Как справедливо замечает Герман Иванов, по способу выполнения программ языки делятся на две группы. Программа на компилируемом языке перед выполнением преобразовывается так, что может в дальнейшем исполняться самостоятельно на любом компьютере под данной операционной системой. Программа на интерпретируемом языке называется обычно скриптом (script) и исполняется специальной программой-интерпретатором. Скрипт не запустится на той машине, где интерпретатора нет. Теоретически считается, что интерпретируемые языки медленнее, но у них есть существенные преимущества в разработке: написанный скрипт можно тотчас оттестировать; если в скрипте ошибка, то ее в любой момент возможно исправить. Скрипт все время существования читабелен для программистов, которые будут его поддерживать и дорабатывать. Что важно: редактируя скрипт, программист правит не исходные тексты, которые потом компилятор неизвестно как превратит в машинный код. Редактируя скрипт, человек напрямую объясняет машине, какие именно стандартные команды и какие именно параметры ему нужны.

Опять же, если мы корчим из себя профессионалов, то давайте вспомним, что при поддержке сайтов и удаленного доступа как такового основное время затрачивается не на разбор команды, а на ожидание прихода ее из Сети. Компилируемый язык здесь имеет очень малое преимущество по скорости, а по легкости разработки и поддержки скрипт превосходит его на порядки. Резерв развития для скриптового языка — все слова скрипта для ускорения распознавания переводить в байткод четко оговоренного формата. Байткод тоже не является командами конкретного процессора, а предназначен для интерпретации программой-сервером. (Тем, что Герман Иванов назвал хостом. Вообще программу, предоставляющую любые услуги, принято называть сервером, а программу, эти услуги запрашивающую, — клиентом. Хост же в общепринятой терминологии — компьютер, где эти программы установлены).
Восхваляемый Германом Ивановым язык Java работает именно так.

Теперь рассмотрим, какие языки есть на Linux-платформе.
Во-первых, наследники недоброй памяти Алгола: С, С++ (про C# не слышал, врать не буду). Их стандартные компиляторы (gcc, egcc), может быть, и не слишком круты по чересчур профессиональным меркам, но размер готовой программы у них в 2-3 раза меньше, чем у той же пиратской копии Visual C++. Это любой из вас может проверить самостоятельно. Кроме того, могучее преимущество пингвиновой модели программирования в том, что с Linux'ом идут его исходники. Можно учиться не на хладном трупе пузырьковой сортировки, а на живой активной системе, уже доказавшей свою полезность.
Во-вторых, языки "университетской волны": Паскаль, Оберон, Модула и другие порождения Никлауса Вирта. В Сети есть компиляторы freepas, есть Оберон, и Модула тоже есть. В свое время я интересовался этими и другими языками и нашел без труда все, что мне было надо. (Причем для Linux'а компилятор Модулы почему-то оказался меньше, чем для W'95-98, ровно в 10 раз — но это к делу не относится). Языки эти имеют принципиально иную модель распределения рабочей памяти, нежели С-С++ линия, почему и является возможным построение на их основе среды типа Delphi. Уместно будет назвать их языками, выросшими на крови С-линии. Среда разработки Kylix, о которой народ пока отзывается достаточно осторожно, себя еще не проявила, но когда она разовьется достаточно, то программистов на ней будет, может быть, еще и побольше, чем сейчас на Delphi под Windows.
В-третьих, языки функциональные: LISP'ы всех мастей и иже с ними. Есть и их компиляторы, и находятся они несложно.
В-четвертых, стековые языки типа Forth'а. (К особо крутым профессионалам просьба: не путать с фортраном). Покажите-ка мне форт-систему под Windows?
В-пятых, есть много ассемблеров. При этом, благодаря более ясной и логичной модели памяти, писать на ассемблере под Linux проще, чем под тот же Windows. И не надо, пожалуйста, верить мне на слово — убедитесь сами.
В-шестых, есть Java, ADA и многое другое, чего я просто не знаю.
И только в-седьмых наступает очередь скриптовых языков, и хорошо бы, чтобы под Windows было их хоть вполовину столько, сколько их есть под Linux'ом! Приведу только две задачи: назовите мне Windows-аналог языка Tcl/Tk для управления графическим интерфейсом и объясните мне, как с помощью штатных средств Windows заставить машину делать резервную копию указанных разделов диска каждую вторую субботу месяца? Еще раз подчеркиваю — с помощью штатных средств, а не сторонних программ. Причем не WindowsNT (о которой Герман Иванов даже не упомянул, и зря — сильный козырь в руках сторонников Билли), а именно Windows 95-98. Раз уж мы взялись изображать из себя профессионалов, то неплохо бы ознакомиться с действительным положением дел, прежде чем делать заявления на публику. Если несколько крикливых товарищей во всех форумах пишут, что им-де ничего, кроме С/С++, не надо, то на этом основании рано, мне кажется, делать выводы об отсутствии под Linux'ом огромной армии программистов на других языках, которым некогда визжать на форумах — они работают.

Однако, несмотря на обилие языков, на job.ru действительно мало вакансий для программистов под Linux. На Linux'е деньги делаются несколько иными способами, и бизнес-модель там другая. "До тех пор, пока у людей есть проблемы, они будут платить за их разрешение, — говорит Ричард Столлмен. — При этом неважно, что каждая вторая мышка получает свой сыр бесплатно". Если вас интересует, кто такой Столлмен и каковы в теме подробности, то, уж извините, отсылаю вас к google. Пусть вас тоже удивит результат.
В программировании под Linux есть и еще одна важная особенность: среда динамична. Да, у разработчиков нет средств управления большими и сверхбольшими проектами. Но и без этого они исправляют ошибки куда быстрее и лучше, чем производители Windows или коммерческих Unix. Так что даже поневоле закрадывается крамольный вопрос: может быть, отсутствие навороченных сред разработки скорее благо, чем проблема? Криворукие мальчики наплодят меньше монстров; а мастер все равно инструменты для себя делает сам.
Теперь оставим языки и посмотрим на другие свойства операционных систем. У профессионалов, знаете ли, принято интересоваться, на какой файловой системе будет лежать их драгоценная информация — все те нетленные творения, кои создаст из грубой цифровой массы воспетый в балладах VisualBasic. Тем же профессионалам порой хочется, чтобы никто не шарился по их каталогам, не крал идеи, не занимал самовольно все процессорное время и так далее. Кроме того, профессионалы порой спрашивают, в каком виде хранит система их личную информацию — а то ведь не все хакеры еще с халявным Инетом ходят.

В Linux'е для обеспечения безопасности системы от пользователей, равно же и пользователей друг от друга, предназначена целая система доступа. Авторизация, хранение паролей в зашифрованом виде, четкая принадлежность каждого файла в системе определенному лицу, которое только и может управлять доступом. Есть система квотирования ресурсов между пользователями. В частности, именно поэтому, сколько бы ни было их в системе, сама система не повиснет. Вас интересует результат всех этих сложностей? Пусть-ка так называемые профессионалы назовут мне хотя бы одну вирусную эпидемию среди Linux-машин, равную по мощи Meliss'e или Чернобылю!
В Windowsе 95-98, как нарочно, понятия об авторизации пользователя нет. Захотел снести системные файлы — не вопрос! Захотел пароли украсть — вот они, в незашифрованом виде, еще и файл называется password — это чтобы хакер случаем мимо не прошел. Да, действительно, ХР и 2000 немного лучше в этом отношении, но тут у всей линии Windows родовое проклятие: она изначально однопользовательская. Вся безопасность на нее потом надета — как седло на корову. Попытка скрестить Windows с NT привела только к излишнему разрастанию объема.
Теперь рассмотрим еще такой вопрос, как масштабирование систем. Пусть-ка господа профессионалы назовут мне какой-либо суперкомпьютер или там кластер под ОС Windows. Не жмитесь, ребята, ведь у вас так много примеров, правда?
Думаю, вопрос можно закрывать. Linux масштабируется как вширь, так и вглубь, а Windows подобными средствами не обладает в принципе. Linux можно поставить на гигантский кластер из 3800 двухпроцессорных серверов, а можно перекомпилировать ядро так, что оно поместится в стек процессора полностью. Windows на карманных персональных компьютерах тоже бывает маленький, но Windows CE не совместим полностью с обычным Windows по модели использования памяти, в силу чего и с исполнимым кодом проблемы. Linux же остается Linux'ом даже на наручных часах.

Однако есть недостатки и у Linux'а. Серьезные недостатки, а не надуманные бледные тени типа проблем с драйверами. С новым железом работают хорошо далеко не все системы — это не критерий вообще. Лучше всего распознает железо BeOS, и где она теперь? Важно не то, сколько драйверов к системе сейчас, а то, как быстро они появляются и как быстро их разработчики реагируют на ошибки в своих продуктах. Системе простятся любые огрехи, если она выполняет свою главную функцию: надежно предоставляет прикладным программам ресурсы.
Здесь уместно небольшое лирическое отступление о компьютерах Apple-Mac. Макинтоши также очень дороги, система там закрытая, распространены они еще меньше, чем тот же Linux, форматы файлов у них собственные... В итоге человек, купивший Макинтош, зависит от Apple куда больше, чем пользователь Windows от Microsoft.
Спрашивается, почему MacOS-линию не ненавидят столь же яростно, как Windows? Не потому ли, что покупателю Макинтоша есть за что платить, в отличие от приобретателя той же Windows?
Подумайте над этим, если угодно. Я же выполню свое обещание и назову реальные недостатки Linux'a.
Во-первых, это большой размер системы. Я считаю тупиковой ветвью Linux'a разработку для него монструозных Windows-подобных графических сред типа Gnome и KDE. Оконное пространство и рабочий стол можно организовать без них. Я пользуюсь icewm поверх X'ов, и у меня есть сколько угодно рабочих столов. (У Windows до сих пор только один). Я могу назначать любые кнопки для taskbar'a без каких-либо перекомпиляций. На кнопки я могу подвесить как программу, так и скрипт с любыми параметрами. При этом кнопка остается кнопкой: ее нельзя, как ярлычок, случайно стереть или затащить куда не надо, она всегда внизу экрана, и ее не может заслонить окно открытого приложения. Возможность налепить сколько угодно ярлычков у меня сохраняется. Плюс к этому, каждый член моей семьи, включая жутко любопытных до Инета детишек, имеет свой пароль и свою дисковую квоту и не может ни стереть чего не надо, ни забить винт под завязку. А если даже кто и подхватит Linux-вирус, то разрушения ограничатся его личными разделами, а не всей системой.
При этом ни Gnome, ни KDE не занимают место у меня на винчестере. Вся инсталляция (с бо-ольшой кучей библиотек к C/C++, Python'y и иным вещам) весит около 900 Мb. Своп-раздел — 64 Мb. Попробуйте так урезать Windows, а потом расскажите мне, какая функциональность у нее осталась.

Тем не менее, для системы это излишний вес. Я видел операционную систему QNX, которая при базовой функциональности, достаточной для запуска нормального графического браузера и подключения к Интернету, весит 1.44 Mb (одну целую сорок четыре сотых мегабайта), в силу чего помещается на дискету. Вот идеал, к которому следует стремиться — а не плодить окноподобных монстров. (Однодисковые версии Linux'а тоже есть, но их функциональность здорово уступает полномасштабным).
Во-вторых, с горечью отмечаю, что Linux все-таки сложно настраивать. Проистекает сложность из отсутствия стандарта, почему разные программы и разные релизы держат свои конфигурационные файлы кто где. Если что-то не так, поди найди концы!
В-третьих, из-за того же отсутствия стандарта Linux все еще не слишком хорошо локализуется. То есть, если купил и поставил русский релиз, то все нормально, а когда выкачаешь из Сети чего-нибудь дикорастущее, которое лезет за шрифтами неизвестно куда, трудно обойтись без пляски с бубном.
В-четвертых, Linux не является системой реального времени, как, например, QNX. В чем разница: система реального времени обрабатывает любой запрос к ней за конечное время. Всегда. Для этого в системе совершенно другая архитектура, распределение памяти, обработка вызова и прочие спецсредства. Итог: QNX не тормозит никогда. Вообще никогда. Пингвин, увы, иногда тормозит.
В-пятых, Linux имеет тяжелое ядро и распределяет память хоть и надежнее Windows, но все же не самым лучшим образом. Откуда проистекает общая не слишком высокая производительность мультимедийных задач под Linux. Как ни крути, а не слишком много под Linux проигрывателей того же MP4.
В-шестых, из-за отсутствия стандарта многие выкачанные из Сети программы при установке лезут за настройками не туда, в итоге не ставятся или компилируются боком.

Что же мы видим в итоге наших рассуждений? Уважаемый Герман Иванов, взявшись сравнить две системы с профессиональной точки зрения, принятую на себя задачу не выполнил.
Во-первых, он сравнивал не системы, а производящие их компании, конкретно политику RedHat против Microsoft.
Во-вторых, проблемы релизов RedHat он распространил на все Linux-based-системы.
В-третьих, он совершил грубый подлог, приписав Linux-сообществу политику Microsoft, за которую компания Microsoft официально наказана судебным решением. Допуская, что Герман Иванов был неверно информирован в этой области, тем не менее, считаю его слова оскорблением для меня лично как для Linux-пользователя. Я много раз оказывался в прямо противоположной ситуации: имея возможность выбирать 3-4 браузера для Linux, под Windows я был вынужден пользоваться только Internet Explorer'ом, аналогично было и с mp3-player'ами.
Я слишком хорошо отношусь к "Компьютерной Газете", чтобы иметь к ней претензии в данном конкретном случае, но если отбор публикаций не станет лучше, то я пересмотрю свое мнение.
В-четвертых, претендуя на профессиональную оценку, уважаемый Герман Иванов не привел критериев сравнения систем, не рассмотрел ни одного вопроса полностью и не привел никаких доказательств своим словам. Та грязь, которую он вылил на Linux-based-системы, при внимательном рассмотрении не выдерживает критики. У Linux действительно есть недостатки — я привел часть из них здесь, — но как раз о настоящих недостатках уважаемый Герман Иванов не сказал ни слова! Как же после этого верить, что он знает предмет спора?
В-пятых, для своего сравнения уважаемый Герман Иванов выбрал пиратскую копию Windows. Допустим, что я фанат Windows и хотел бы поддержать Билли. Я купил бы пиратскую копию или лицензионную? На каких позициях стоит уважаемый Герман Иванов? Да, у нас в стране используются пиратские копии многих программ — спрос велик, а цена не соответствует ему нисколько. Но почему я должен отказываться от честности хотя бы там, где ее проявление ничего мне не стоит?

Теперь пора, наконец, и вывод сделать. Он будет неожиданным: если надо выбирать между Linux и Windows, я выбираю QNX — систему со всеми достоинствами Linux'а, но лишенную недостатков оного.

С уважением, КоТ


Компьютерная газета. Статья была опубликована в номере 48 за 2002 год в рубрике soft :: ос

©1997-2024 Компьютерная газета