CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Лезвие бритвы Оккама.

Виталий В. Штабовенко vvs@mycomp.com.ua

Анатолию Слепцову, который ввел меня в мир UNIX и

Леониду Дмитриеву, который помог понять главное в этом мире

Посвящается…

Что мешает развитию информационного общества?

У меня в детстве было несколько любимых книжек. Но две из них любимы и сейчас, хотя прошло уже без малого 35 лет.

Первая — А. и Б. Стругацкие «Понедельник начинается в субботу». Помните? «…Бородатый заявил: «Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста. Мне кажется, вы обречены».

— Вам действительно так нужен программист?" — спросил я.

— Нам позарез нужен программист.»

Прочитав это еще в пятом классе, я уже знал, как будет называться моя профессия :-).

А вот вторая книга И. Ефремова «Лезвие бритвы» поразила меня своей понятной и жестокой философией. Из нее я впервые узнал принцип Оккама или бритвы Оккама. Этот принцип был впервые предложен в XIV веке английским философом и теологом Вильямом Оккамом. В первоначальной форме это правило гласит: «Не пытайся объяснить посредством большего то, что можно объяснить посредством меньшего».

Позже была предложена формулировка «Не следует умножать сущности сверх необходимости». Этот принцип непосредственно относится к любой сфере человеческой деятельности, и в первую очередь к тем операционным средам, в которых нам приходится работать.

Так получилось, что у меня в этом деле накопился изрядный опыт работы: МИР-2, Минск-22/32, БЭСМ-6, OS IBM 360/370, UNIX (DEMOS, MOS, BSD 4.2), MS DOS, Windows 3.x/9x/NT/2000/XP, Linux.

Каждая операционка обладала своими достоинствами и недостатками, присущими своему времени, но только одна была построена по принципу бритвы Оккама.

Кто о чем, а я про UNIX/Linux.

Действительно, простота и очевидность базовых принципов, заложенных в это операционной системе, воистину потрясающа.

Первый принцип — принцип иерархической файловой системы.

Все гениальное — просто, но мало кто из современного поколения программистов, пользователей и продвинутых пользователей знает, что этот принцип был изобретен Кеном Томпсоном, Деннисом Ритчи и Брайаном Керниганом еще в 1971 году и только впоследствии использован в PC DOS и MS DOS разработчиками Microsoft (подробнее об организации файловой системы в Linux читайте в статье Сергея ЯРЕМЧУКА «Пингвинье дерево», МК № 22 (193)).

Второй принцип — концепция внешних устройств ввода/вывода.

Оказывается, достаточно считать любое устройство файлом, как все становится легко и просто. Нет ничего, кроме файлов, и принтер, сканнер, мышка, винчестер и т.п. ничем не отличаются от простого текстового файла. Или почти ничем, но знание подробностей — удел профессионалов. Специальные программы — драйверы устройств ввода/вывода отвечают за это представление. При этом съемные тома, такие, как диски, ленты, магнитооптические диски, СD-носители специальным образом монтируются в определенные места файловой системы, оставляя ее по-прежнему иерархическим деревом.

Третий базовый принцип — концепция потока ввода/вывода.

Термин стандартный ввод/вывод относится к концепции Unix (которая в некоторой форме была воспроизведена в Windows и многих других операционных системах) единого потока информации, который используется программой. Весь ввод программы может вестись через стандартный ввод, весь вывод может идти в стандартный вывод, а все сообщения об ошибках могут посылаться в стандартный поток ошибок. Согласно вышеизложенному второму базовому принципу, ввод/вывод может осуществляться не только с/в программу, но и с/в физическое устройство. Значение стандартного ввода/вывода в том, что программы вместе легко могут представлять цепочку, и стандартный вывод одной программы может стать стандартным вводом для другой. Это достаточно мощный инструмент.

Четвертым базовым принципом является концепция процессов.

Любая исполняемая программа в UNIX — суть процесс. Процессы могут запускать новые процессы или подпроцессы, устанавливать связь с другими процессами, пробивая т.н. межпрограммный канал, забирать свои кванты времени от процессора (CPU) и т.д. и т.п.

Процесс можно убить (kill), при этом все подпроцессы, им порожденные, тоже погибнут.

Но самая главная, не столько базовая, сколько общечеловеческая концепция UNIX — это т.н. принцип Open Source или принцип открытой лицензии (GNU).

В чем глубокий смысл принципа Open Source? Он прост, как колумбово яйцо. Все программное обеспечение, разрабатываемое и распространяемое по этому принципу — бесплатное. Или, если быть до конца точным, почти бесплатное, в том смысле, что носитель (чаще всего, CD-ROM’а либо Интернет-подключение) имеет вполне явно выраженную стоимость. Причем самое важное в Open Source — Code, т.е. «исходник», исходные коды. Любой программный продукт, разрабатываемый с использованием продуктов на базе GNU, обязан быть поставлен с исходным кодом. Чаще всего это коды ассемблера и языка C/С++.

Ричард Столлман (Richard Stallman) придумавший в 1985 году принцип GNU, заботился о действительных общечеловеческих ценностях, т.е. о ситуации, при которой достижения высоких технологий могут быть предложены всем желающим. В «Манифесте GNU» Р. Столлман в качестве основной идеи выдвигает свое неприятие права собственности на программы. Особенности взаимоотношений в сообществе программистов часто ставят их перед выбором: следовать естественному чувству дружбы и взаимопомощи или подчиниться препятствующему этому закону о собственности.

При использовании свободного программного обеспечения необходимость такого выбора исчезает. Создание интегрированной свободной программной системы позволяет избежать дублирующей работы программистов (которая часто требуется только по причине пребывания программ в чьей-либо собственности). Свободное распространение исходных текстов программ облегчает их сопровождение и приспособление к нуждам конкретного пользователя (не требуется прибегать к услугам только компаний — владельцев лицензий на исходные тексты). Появляется дополнительная и очень важная возможность использования хорошего программного обеспечения в учебных целях.

И вот здесь возникает шестой базовый принцип — качество.

Действительно, когда над одним и тем же программным продуктом работают сотни и тысячи программистов во всем мире, тщательно увязывая каждую строчку программного кода, качество возрастает на порядок, а то и выше.

Как Microsoft нарушил принцип «бритвы Оккама».

С момента появления Windows 3.x (начало 90-х годов) только ленивый не считал своим долгом лягнуть Билли Гейтса и поговорить о «глюкавости форточек». Но я почти не встречал ни одного серьезного анализа и, соответственно, разбора причин происходящих сбоев.

Будучи профессиональным программистом, я не понимаю слова «глюк». «Глюк» — это всегда ошибка, а ошибка — это, как известно, самое страшное.

Ошибки в политике приводят к войнам, ошибки в экономике — к обнищанию сообществ людей, ошибки в базовом системном программном обеспечении сейчас, в эпоху создания информационного общества — к потерям времени, денег и нервов.

Как введение одной буквы повлияло на историю человечества.

Как известно из истории новейшей вычислительной техники, первую ОС для компьютера IBM PC на базе процессора Intel 8088 в 1979 году было поручено писать фирме Microsoft. Естественно, что за основу этой операционной системы была взята концепция UNIX, как наиболее продвинутая и мощная на тот момент операционная среда. Неизвестно по каким причинам, а вернее всего, ради «сохранения» патентной чистоты разработчики внесли в базовые принципы UNIX’a ряд изменений. И если некоторые из них носили чисто косметический характер, как, например dir /a вместо ls –a для вывода файлов текущего каталога, или применение символа \ («бэкслеш») вместо / («слеш») в указании полного пути к файлу, то одно изменение базового принципа повлекло за собой поистине катастрофические результаты.

Удалив из концепции файловой системы UNIXовский принцип монтирования устройств ввода/вывода (т.е. флоппи-дисков и винчестеров) и введя понятие тома как одной буквы (А:\ C:\ и т.д.) вместо общепринятого (например, /dev/floppy или /dev/hd0), разработчики Microsoft разорвали иерархическое дерево файловой системыи ступили на зыбкий путь неоправданного увеличения количества новых сущностей. В самом деле, отказ от принципа «нет ничего кроме файлов, и устройства — тоже файлы» и создание нескольких иерархических файловых систем (для винчестера, для флоппи-диска и т.п.) коренным образом изменило подход к внутреннему представлению файловой системы. В принципе организации FAT (File Allocation Table — таблица распределения файлов) заложено механическое копирование идеи дескриптора блочного устройства. Это привело к неисчислимым бедам и потерям миллиардов долларов и миллиардов рабочих часов во всем мире.

Во-первых, оказалось, что это благодатная «почва» для компьютерных вирусов, и сотни злобных геростратов немедленно воспользовались этой возможностью. А время, потраченное миллионами людей на устранение последствий от работы программ-вирусов, обернулось потерями денег и других ресурсов, которые могли бы быть использованы в «мирных» целях.

Во-вторых, — удаление файла означало только вычеркивание его имени из FAT, но файл оставался на носителе, чем немедленно стали пользоваться в целях недобросовестной конкуренции. А информация, как известно — это деньги, причем большие деньги.

Дальше — больше. Интернет позволил объединять множество локальных сетей и дал возможность обмениваться электронной почтой. А дырки в FAT и файлах, поддерживающих входные очереди и адресные книги, привели к появлению почтовых червей, распространяемых уже по конкретным адресам. Редко кто не пострадал от этой заразы.

Появилась целая индустрия антивирусного программного обеспечения, индустрия восстановления файлов и файловых систем, индустрия «безусловного» уничтожения файлов и т.д и т.п. И все это от одной буквы, увеличившей количество сущностей и нарушившей принцип «бритвы Оккама». Помнится, когда я впервые увидел IBM PC (это было в Москве в 1982-83 гг.) и «попимпал» на ее клавиатуре, стало интересно, как это все устроено. Внимательно прочитав инструкции по операционной системе PC DOS, я пришел к однозначному выводу — «это просто плохо сделанный UNIX»

Кажущееся уменьшение ведет к увеличению.

Напомню, что первые IBM PC и их клоны на базе 8086/8088 процессоров были слабенькими машинами с тактовой частотой 2-4 МГц. И PC DOS и MS DOS принципиально были однозадачными операционными средами. Другими словами, пока не закончит свою работу одна программа, вторая не может начать работать. Хотя в последних версиях DOS и имела место фоновая печать, это нельзя было назвать полноценной многозадачностью. Постоянное пребывние в памяти резидентных программ DOS тоже трудно отнести к многозадачности, т.к. они просто находились в состоянии ожидания и реагировали на определенные прерывания, ничем, в сущности, не отличаясь от драйверов устройств ввода/вывода.

Тем самым, исключив из концепции DOS принцип многозадачности, разработчики Microsoft, казалось бы, уменьшили количество сущностей. Но все оказалось с «точностью до наоборот». Появились процессоры 80286 и 80386, возросла тактовая частота, увеличились объемы памяти на жестких дисках.

В соответствии с этими изменениями, в развитие MS DOS была выпущена графическая оболочка — Windows 3.x (я сознательно не упоминаю о первых версиях, как не имеющих практического значения).

Но что происходит?

Windows 3.x объявляется многозадачной средой, но базируется-то он на однозадачной DOS :-) и даже запускается из-под нее как C:\WINDOWS\WIN.COM.

А как же обеспечивается многозадачность? Путем т.н. механизма API — прикладного программного интерфейса, который сводится, в сущности, к передаче «сообщений» между разделяемыми ресурсами. Не деление квантов времени процессора как в UNIX/Linux, а по сути дела выполнение одной длинной «программной колбасы» с подгружаемыми задачами и единым «message»-интерфейсом, плюс нагрузка на аппаратные ресурсы, плюс все более и более увеличивающиеся требования к скорости, объему оперативной памяти, емкости внешних носителей. Другими словами, количество сущностей увеличивается, а это, в свою очередь, приводит ко всем тем «глюкам» Windows, о которых всем хорошо известно.

Если в UNIX/Linux запускаются практически независимые друг от друга процессы и подпроцессы, и любая программная или аппаратная ошибка, связанная с ними (а от этого не застрахован никто и ничто) ведет всего лишь к сбою или уничтожению данного процесса, то «программная колбаса Windows» при нехорошем раскладе может пройтись «бульдозером» и по другим одновременно висящим задачам и по файлам et cetera, et cetera.

Принцип открытости — общечеловеческая ценность. Нарушение чревато.

Хочу напомнить, что компьютер IBM PC, официально представленный публике в августе 1981 года (почти 21 год назад) был создан по принципу открытой архитектуры. Другими словами фирма IBM «подарила» человечеству персональный компьютер. Поскольку архитектура была «открытой» — огромное количество производителей стало конкурировать на рынке создания персоналок и комплектующих к ним, что привело к росту возможностей аппаратного обеспечения и снижению его стоимости. По меткому выражению В.Э. Фигурнова, одного из первых отечественных авторов, написавших руководство по IBM PC: «…если бы такими же темпами развивалось, скажем, автомобилестроение, то сейчас за несколько тысяч долларов предлагались бы автомобили, передвигающиеся со скоростью космической ракеты и вмещающие сотни человек…».

Принцип открытости или принцип Open Source (которым, между прочим, воспользовалась Microsoft при создании PC DOS/MS DOS) был нарушен корпорацией, закрывшей свои программные коды и продолжающей настаивать на своем праве делать это и впредь. Как я уже говорил ранее — принцип открытости это не только принцип, входящий в число неувеличиваемых сущностей UNIX/Linux — это еще и принцип открытого информационного общества, принцип доступности информации. Его нарушение влечет за собой отнюдь не только преследование по суду, от чего уже который год не может отбиться Microsoft, но и куда более серьезные последствия.

Удастся ли корпорации Microsoft пройти по «лезвию бритвы» и сохранить себя, как крупнейшего в мире поставщика корпоративных решений и продуктов SOHO?

Сумеет ли UNIX/Linux завоевать свое, по праву принадлежащее ему место под солнцем на рынке корпоративных офисных решений? Какой вклад внесут разработчики ядра и приложений Unix/Linux в построение информационного общества?

Это решится в ближайшие годы нашего XXI века.

И все мы будем свидетелями этого процесса.

От редакции: Читателей, мало знакомых с ОС Linux как таковой, ее особенностями и преимуществами, отсылаем к многочисленным материалам наших постоянных авторов: Петра «Roxton’a» СЕМИЛЕТОВА, Сергея ЯРЕМЧУКА, mchno и др. Статьи подобной тематики в последнее время мы стараемся печатать регулярно, и их уже вышло немалое количество, надеемся, и в дальнейшем придерживаться той же политики. Почему? Ее нам подсказывает складывающаяся ситуация на отечественном рынке ПО.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov