К сожалению, во времена безальтернативного владения Microsoft персональными компьютерами, народ прошел ликбез на DOS/Windows системах. Ассоциация “компьютер – Windows” крепко засела в народном подсознании. И именно этот фактор, а не сомнительные достоинства Windows являются доминантой в развитии компьютерного бизнеса. С точки зрения пользователя ничего неприятного в этом нет – Windows отлично заточена под стандартного пользователя. Это с точки зрения программиста революционные катаклизмы Windows представляют большую угрозу, которая, в масштабах страны и мира вырастает в большие экономические убытки. Но, во-первых, не каждый программист умеет программировать под Linux и не каждый программист осознает угрозу революционных изменений в ОС. Во-вторых, переход программиста из одной операционной системы в другую гораздо более сложен, чем освоение очередного творения Microsoft. И, в-третьих, работа программиста во многом определяется предпочтениями массового пользователя, а его, массового пользователя, и так все устраивает. Так можно ли, и нужно ли менять такое положение вещей? Мне кажется, что нужно. Я низкоуровневый программист и меня беспокоит появление API Win1024 за три года перед моим выходом на пенсию. Я боюсь остаться без работы имея огромный и никому не нужный опыт работы. Опять же, в масштабах страны в этом нет ничего хорошего. Имея более чем десятилетний опыт программирования и пользовательской работы под Windows я хочу заявить, что удобство и простота Windows это мифы, такие же мифы как и неудобство и сложность Linux. Windows также как и Linux имеет проблемы совместимости, которые в Linux более решаемы. Процесс инсталляции и деинсталляции приложений под Windows имеет огромное количество недостатков, которые отсутствуют в пакетных версиях Linux. А недостаток приложений по некоторым позициям не является принципиальным недостатком операционной системы – он легко восполняется. Почему бы не запустить государственную программу поддержки Linux – программистов уже, наверное, достаточно, а экономический выигрыш очевиден сразу по многим позициям. Справедливости ради надо сказать, что Linux известен среди государственных чиновников, известны также неудобства и угроза, связанная с использованием Windows в государственных масштабах в России. Делаются даже шаги навстречу Linux, но шаги эти очень мелкие и, пока, не принципиальные. Возможно ли изменить ситуацию без государственного вмешательства? Наверное да, и, наверное, именно так и произойдет. Я бы назвал 2003 год переломным для Linux. Теперь он может полноценно заменить Windows на большинстве десктопов, предоставив пользователю все преимущество Unix систем практически даром. Поэтому, сегодня Linux в России интересен не только профессионалам. Интерес к Linux проявляется и у студентов, и у школьников. Сегодняшние студенты и школьники вкусив прелести Linux уже не захотят расставаться с этой удивительно красивой операционной системой, и лет через пять ... . Именно в студенчестве складываются предпочтения и привычки такого рода. Потом люди работают, и у большинства из них нет времени на изучение вопроса о том, какая ОС лучше. Кстати, Microsoft понимает эту угрозу и тратит десятки миллионов долларов на то, чтобы отвлечь студентов и школьников от Linux. Субъективная оценка недостатков Windows. Все познается в сравнении. Считая себя человеком, умеющим профессионально выполнять, стоящие передо мной, задачи в этих двух, совершенно разных платформах, осмелюсь выразить свое мнение о Windows, как о системе, потенциально обладающей множеством недостатков. И как показывают последние разработки Microsoft этот потенциал еще не выработан, и нас еще ожидают “приятные” сюрпризы. Итак, приведу список недостатков Windows платформы. Нестабильность архитектуры. Это очень серьезный недостаток, следствием которого является скорое моральное устаревание знаний. Особенно губительно для немолодых программистов. Внутренняя сложность операционной системы. Реестр, работа с устройствами и пр. Возможно, Windows – это рай для пользователей (сомнительный рай, с моей точки зрения), но, уж точно, ад для программистов. Отсутствие хорошей документации по операционной системе для программистов. MSDN – очень похвальный труд, но, к сожалению, не полный. К тому же, судя по качеству текстов, написан не программистами. Да и распространяется он, отнюдь, не бесплатно. Ограниченные возможности (в особенности сетевые возможности), которые приходится, если возможно, компенсировать сложными дорогостоящими программами. Результаты такой компенсации, у меня, например, вызывают улыбку. Отсутствие профессиональных текстовых интерфейсов для работы с системой. Удобство графических средств – спорно. Они не всегда обладают достаточной степенью информативности, не эффективны с точки зрения скорости получения информации, и, что совершенно точно, не являются гибкими. К сожалению, простой перенос bash (интерпретатор команд) в Windows не решает проблемы. Непродуманная система инсталляции/деинсталляции приложений – вот уж действительно “Простота – хуже воровства”. Зависимость производительности ОС от количества установленных приложений. Низкий уровень безопасности системы, что практически делает ее открытой для вирусов. Причем, разработки Microsoft в этой области направлены не на безопасность ваших знаний, а на борьбу с пиратством. Последние три пункта, в приведенном выше списке, объясняют причины частых переинсталляций Windows. Мне, например, приходилось заниматься такой переустановкой каждые два-три месяца, а бывало и чаще. Кому то может показаться неправдоподобным, но все эти недостатки в гораздо меньшей степени относятся к Unix/Linux платформам. Что мне нравится в Unix/Linux Мое знакомство с Unix состоялось в 1993 году. С 1997 – Linux стоял на моей домашней машине, разделяя дисковое пространство с различными версиями Windows. 2003 год стал переломным – я избавился от Windows и дома и на работе. Причина проста – Linux desktop исключительно развился за последние два года и с избытком удовлетворил мои скромные компьютерные потребности. К тому же, качество используемых мною приложений под Linux, на мой взгляд, как правило, выше Windows-аналогов. Перечислю достоинства Unix/Linux систем, сделавшие меня их приверженцем. Относительное постоянство очень удачной и очень простой архитектуры. Если вы научились администрировать или работать в Unix тридцать лет назад, то вы сможете сделать это и сейчас. Ваши знания не устарели. Например, книги, выпущенные 15-20 лет назад, описывающие работу с Unix, кажутся мне очень ценными. Конечно, если речь не идет о чем-то совершенно новом. Эта особенность позволяет пытливому человеку изучать систему вглубь, постоянно расширяя свои знания и не боясь того, что за два года перед выходом на пенсию будут выпущена совершенно новая, с точки зрения интерфейсов программирования, система, и ваши знания, накопленные десятилетиями кропотливого труда бессонными ночами, никому не понадобятся и молодые будут снисходительно улыбаться глядя в вашу сторону. Вы даже не сможете написать мемуары или прочитать лекции, потому что вы и знакомая вам до мелочей система морально устарела. Исключительно высокая информативность операционной системы, реализованная на уровне именно операционной системы и отточенная десятилетиями. Пользователю это не сильно нужно, зато для программиста или администратора это очень мощный инструмент для настройки системы и поиска ошибок. Исключительно простая работа с внешними устройствами, которая удивит не только программиста, но и простого пользователя. Может ли пользователь Windows создать ISO образ CD-ROM простым копированием из файла устройства cdrom, или воспроизвести мелодию направлением звукового *.wav файла на файл устройства звуковой карты? Необыкновенные сетевые возможности Unix, на основе простых и быстрых протоколов. Разговор об этих возможностях бесконечен – Unix действительно сетевая операционная система. Приведу простой пример. Сидя за одной машиной я могу работать с другой. Именно работать без ограничений, так как будто я просто воткнул свою клавиатуру, мышь и монитор в другой компьютер. Причем когда такая работа происходит в локальной сети, это происходит с такой скоростью, что пользователи не обращают внимание на то, с какой машиной они работают и выключают чужую машину по ошибке. Торможение происходит при работе с модемным подключением через Internet. Хотя это не мешает мне работать из дома с машиной моего директора, стоящей в его кабинете, не смотря на то, что работа происходит через дополнительное соединение – общий сервер предприятия, т.к. IP-адрес директорской машины не маршрутизируется в Internet и недоступен из сети моего домашнего компьютера. А можете ли вы, пользуясь Windows, сидя за одной машиной запустить программу на другой и вывести ее окно на третьей? Полная управляемость загрузкой и настройкой операционной системы. Понятно, что это не для простого пользователя. Для него достаточна, также как и в Windows, настройка своего собственного рабочего стола. Зато опытный администратор может посмотреть, исправить, переписать или просто заменить процесс загрузки. Все очень просто – загрузка описывается скриптами, т.е. программами на языке командного интерпретатора. Файл auto.bat, известный пользователям DOS и морально устаревших версий Windows (технологии 3.1 и 95), является только дополнительным, далеко не полным, скриптом загрузки. Скрипты загрузки Unix/Linux систем составляют тысячи строчек кода. Кроме того, Linux можно пересобрать с абсолютного нуля. Например, известно, что специальная сборка Linux для сервера Apache (www – сервер) занимает всего 5МБт. Единомышленники, увлекающиеся самостоятельной сборкой Linux объединяются в Internet в рамках проекта Linux from scratch (LFS). Пользуясь дистрибутивами с управлением инсталляцией пакетов, я могу простыми запросами определить назначение любого файла в системе. Т.е. какому пакету он принадлежит, зачем нужен этот пакет в системе, какие еще файлы принадлежат данному пакету и где они располагаются, какие файлы относятся к конфигурации данного пакета, где лежит документация по пакету, какие библиотеки общего назначения предоставляет данный пакет, от каких пакетов зависит пакет и какие пакеты зависят от него. Прибавив к этому возможности, присутствующих в системе, фильтров и языков обработки текстов, вы получите такие инструменты о которых можно только мечтать работая в других системах. Нельзя не сказать о том, что производительность Unix не зависит от количества установленных программ (пакетов), если, конечно эти программы не являются запущенными сервисами системы. Сколько программ можно установить под Windows, чтобы она не начала тормозить или не обвалилась вообще? Десять, двадцать или может быть пятьдесят? А как насчет тысячи или пяти тысяч? У меня дома стоит 912 пакетов, а у моего брата 1708. Производительность Unix зависит только от количества запущенных программ и сервисов. Вирусы. Этого я натерпелся в полном достатке. В недалеком прошлом это были потери целых архивов и даже перепрошивка flash-памяти. Что самое главное, так это то, что установка дорогостоящего вирусного сканера, тормозящего работу системы и непозволяющего работать некоторым программам, ничего не дает. Вирусы по прежнему бесчинствуют в вашей Windows системе. Особенно, если она постоянно висит в Internet. В Linux/Unix системах этой проблемы практически не существует. Причины, на мой взгляд две, и они взаимосвязаны. Во-первых, вирусов под Unix/Linux практически нет. Писать вирусы под эти системы очень неблагодарное занятие, т.к. жизнь у них будет очень недолгая. Более благодарным будет написание троянского коня, но и он наделает беды только в рабочем каталоге того пользователя который его запустил. Панацеей против этого является два логина с разными привилегиями для каждого пользователя. Во-вторых, система безопасности Unix/Linux пробиваема только через ошибки системы, которые закрываются очень быстро после обнаружения. Информация об этом не скрывается и доступна через Internet. Главным вирусом в системах Unix/Linux является чайник, работающий под логином суперпользователя. Запускать систему под таким логином недопустимо даже для опытного администратора. Администратор Unix администрирует систему через подмену прав на исполнение команды, требующей особых привилегий. Все это приводит к тому, что разрушение Unix системы вирусом крайне редкое явление в мировой практике. Правда, исключительная надежность Unix систем, согласно мировой статистике, привела к некоторой психологической проблеме. Администраторы Unix систем настолько верят в ее защищенность, что при администрировании не уделяют этой проблеме никакого внимания (простые пароли, множество доступных сетевых сервисов). В результате, система становится открытой для любого сетевого хакера. Поэтому, несмотря на более высокую надежность Unix по сравнению с Windows, количество взломов этих систем практически одинакого. Это широко обсуждается в Internet. А комментарии к этому очень просты – у Unix администратора гораздо больше возможностей защитить машину от взломов и вирусов, нужно просто ими воспользоваться. Попробую предугадать вопрос - “А зачем тогда нужны антивирусные программы для Unix/Linux платформы, так активно предлагаемые различными производителями?”. Очень просто. Эти программы нужны для того, чтобы проанализировать содержимое файлов, пришедших из Internet, перед тем, как они будут отправлены на рабочие станции, работающие под Windows. Вирусы работающие и написанные для Unix/Linux практически не известны (мне не попадалось ни одного). GNU compiler collection или просто напросто gcc. Уникальное семейство компиляторов, понимающий ассемблер, Си, Си++, fortran-77, java и ada. Создаваемый этим компилятором исполняемый код уникален по быстродействию. Но это лучше проверить вам самостоятельно. Может вы владеете средствами оптимизации всех уровней лучше меня, и вам удастся создать на вашем любимом компиляторе под Windows более быстрый код. Наличие такого компилятора под GNU лицензией не приводит к попыткам написания с нуля более лучшего компилятора. Разработчики просто десятилетиями улучшают свой родной gcc. Среды быстрой разработки под Linux/Unix системами различны, но все они используют gcc для компиляции проекта. Поэтому нет серьезных проблем переносимости проектов из одной интегрированной среды разработки в другую. Вы когда-нибудь пробовали перенести проект из Visual Studio в C++ Builder, или наоборот? Вообще, совместимость средств разработки под Linux/Unix поражает. Хотя ничего удивительного в этом нет. В Unix придерживаются стандартов, в том числе и на объектные файлы. Кстати драйвер устройства, если он не откомпилирован вами в ядро, тоже объектный файл. И вам не нужно никаких Driver Development Kit для создания драйвера, просто потому, что интерфейсы к ядру открыты также, как и исходные коды самого ядра. Я например, просто открываю vim (мощный консольный блокнот), пишу драйвер для своей железки, компилирую его с помощью gcc и вставляю его в работающее ядро, не перегружая систему. И кстати, совсем необязательно писать программу для взаимодействия с драйвером. Вы можете просто, стандартными средствами командного интерпретатора, посылать и брать данные из файла устройства, связанного с вашим драйвером (другими словами, копировать данные на и из устройства). Открытость кода и лицензии GNU/GPL привели к уникальному способу создания пользовательских приложений. Приведу простой пример. Вы решили написать среду разработки. Все, что вы должны сделать, т.к. это набросать кнопочек, окошечек и рюшечек, так, как это кажется вам наиболее удобным для разработчика, а далее вызвать уже готовые программы-утилиты для компиляции, линковки, отладки, управления версиями проекта и т.д. При этом, налицо разделение труда. Удачные и действительно полезные утилиты не только выживают, но и постоянно улучшаются, избавляясь от ошибок. Поэтому нет смысла писать заново свой компилятор или отладчик, если ваша цель – написание среды разработки. Хотя никто вам этого не запретит. Но, гораздо чаще, программисты подключаются в команду по улучшению уже существующих утилит. Вообще, надежные, и десятилетиями отлаженные утилиты, выполняющие какое-то очень простую функцию, – это огромная сила Unix. Начинающему даже не всегда понятно, зачем и кому нужна такая простая по функциональности утилита. Их мощность проявляется в скриптах и при конвееризации (стандартный выход одной утилиты подсоединяется к стандартному входу другой). Приведу пример того, как простую, на первый взгляд функцию можно разбить на еще более простые, что даст возможность раздельной разработки, раздельного устранения ошибок, и в дальнейшем раздельного использования этих функций в совершенно невероятных комбинациях. Вспомните, что называется архиватором в DOS/Windows системах. Это программа, выполняющая три функции. Сначала, все переданные в нею файлы она объединяет в один. Именно этот процесс называется архивацией. Далее, полученный файл компрессируется, используя тот или иной алгоритм компрессии. И наконец, по специальному запросу, скомпрессированный файл разбивается на тома заданного размера. Также, можно написать пользовательский интерфейс с кнопочками и рюшечками, которые просто вызовут эти утилиты в нужной последовательности. Именно в этом идеологическая особенность Unix программ. Если программа выполняет две функции, то она должна быть разбита на две программы. Тогда, во-первых, ее можно будет проще написать. Во-вторых, проще отладить и устранить ошибки. В-третьих, в дальнейшем, мы сможем использовать каждый из компонентов нашей программы в других целях. И наконец, если кто-то захочет ее улучшить ему будет проще разобраться в исходном коде короткой программы. Такой подход в построении программ прошел проверку десятилетиями и, на мой взгляд, позволяет, во-первых, значительно уменьшить размер системы на жестком диске, во-вторых, добиться меньшего количества ошибок в пользовательских программах, и наконец, написание навороченных и многофункциональных интерфейсов, например для записи CD, становится на уровень курсовой работы студентов технических вузов, т.к., наверное, в любой системе существует множество утилит с огромным количеством ключей, которые что-то там сжимают, пережимают, фильтруют, создают и пишут ISO образы. По крайней мере, все это есть в тех дистрибутивах, с которыми я знакомился. Поддержка формата PDF реализована в Unix/Linux системах на уровне драйвера печати. Для меня непонятно как здесь увязан вопрос с лицензиями, но это работает не только в Linux, но и в профессиональных Unix системах. В результате, вы, используя любой редактор, создающий все что угодно, можете сохранить это в PDF просто направив печать в PDF файл. И при этом, вы будете уверены, что это прочтется на любой платформе без искажений форматирования. В прошлых Linux пакетах здесь были глюки с картинками и русским текстом. Сегодня все это работает безотказно. lafox.net/KONKURS/?show=6#1
|