Предлагаем долгосрочное, прибыльное и перспективное сотрудничество с AMWAY Corporation, с 43-летним опытом работы на мировом рынке, которая в ближайшее время уже приходит на рынок стран СНГ и Балтии.
Четкая и прозрачная система ведения бизнеса, поддержка первоклассной бизнес-школы, технология создания источника пассивного дохода и мн. другое
Кроме традиционного пути построения,предлагаем уникальные технологии работы в этом бизнесе с помощью интернет.
Более подробную информацию можно получить на http://start.ecomora.com 
(или по тел. в Киеве (044) 572-56-32, Дмитрий)


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

Виталий В. Штабовенко

Анатолию Слепцову, который ввел меня в мир 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 века.

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

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

Источник: http://www.mycomp.com.ua/

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com