<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


02 Февраля 1999

Вот такое письмо затронуло сегодня несколько струн в моей истерзаной плохим софтом душе:

   
From: slugovoy@novosoft.nsc.ru
Subject: BeOS == OS/2 ?

Hello Dima.

Как старый прокуренный :) полуосник скажу:

1. В наше время выходить в мир с операционкой которая не имеет нормальный browser ну.... просто стремно!!! see BeOS r4.0

2. see 1. BeOS до нормальной операционной системы (User friendly) как до Парижу от сюда (Сибири) пешком.

Поставил я BeOS 4.0 себе и убедился в том что всех прелестей OS/2 интерфейса как не бывало (хотя всяко баще WinXXX). А после того как я захотел полазить по Internet и обломился у меня появился вопрос - а что я здесь делаю?

Я понимаю иметь Linux, особенно Caldera Open Desktop - оставляет очень хорошие впечатления как клиентская операционка (правда со всеми минусами X'ов). И еще я пользую RedHat 5.2 как серверный вариант.

Но пересмотрев все что было мне доступно - я все больше убеждаюсь, что X-ы и могила не исправит (уж больно тормозная вешь, да и память жрет как козел капусту). Это относится к BeOS в большой степени. А виндузам могила и и то не может помочь :( Вот кажется ну посмотри вокруг на то что есть... ан нет каждый норовит свое уж как выйдет :( Ну уж фундаментальные вещи типа окон свистнули все у HP кажется - ну свистни дальше у OS/2 ее WPS и может быть что-то бы и вышло весьма приличное. Но неужели разработку SOM 1.0 хрен там знает каких годов так сложно повторить? Вот и сижу я на OS/2 пишу на Java все, и только это и спасает от тотального засилья Windows :(

Вообще бы неплохо OS/2 WPS прикрутить к Unix-..... и получится нечто, что не будет вызывать отрицальных эмоций у пополамников и юниксоидов. IMHO!!!

Мечты, мечты, мечты.... Как много в этом ....

Короче говоря BeOS r4.0 - как много в этом ... - и смешно как много в этом .... (см. п. 1)! Да и вообще хрен знает что делать старому полуоснику :( Ибо нет хороших OS по определению, да и пророков нет, в которых можно верить :(

Все плохо и печально после пятничной дозы пива :(

bye. lserge

 

Письмо это навело меня на мысль написать немного о том, что такое OS/2 WPS, и почему предыдущий оратор так по нему плачет. Ибо не так много людей в курсе.

Если коротко, то потому, что есть, из-за чего плакать. Переставляя NT, я именно об этом самом WPS подумал, вспомнил, как переставлял в свое время OS/2. Впрочем, не будем скакать, будем рассказывать по порядку.

Итак, наша история стартует в тот момент, когда OS/2 1.X уже была сделана полностью, и в отношениях IBM и Microsoft возникла видимая невооруженным взглядом напряженность. В этот момент уже существовали наработки по OS/2 2.0 и OS/2 3.0. Опишем ситуацию чуть более подробно.

Если вы помните, в ту пору, когда MS-DOS был на коне, матюков в его адрес звучало немало. Было за что. Наверное, по эклектичности и степени отставания этой ОС можно смело выдать медаль худшего решения из возможных, так как система не решала, практически, никаких проблем прикладного софта, кроме, разве, доступа к файлам, и то весьма убогого. Все, безусловно все - от загрузки оверлеев до мультизадачности - делалось в ДОС внешними примочками, которые постоянно конфликтовали, висли, глючили, гадили друг другу на голову... в общем, весело жили.

Как оказалось, это было очевидно не только пользователям, но и сотрудникам Microsoft и IBM. Поэтому в недрах этих компаний было решено создать новый ДОС, белый и пушистый. Совместимый, конечно, в разумной степени со старым, но куда более продвинутый. Проект получил изначально, насколько я помню, имя DOS 4. Параллельно ему, очевидно, развивался и "старый" ДОС, и версию 4.0 он сумел занять раньше, чем родился новый. Это, кстати, породило слух, что вообще-то в 4-м досе есть полная многозадачность, но она как-то волшебно отключена. А вот если включить!!

В "новом" досе, который тоже претендовал на номер 4.0, многозадачность и в самом деле была. Но он в то время существовал лишь в виде экспериментальной внутренней разработки. Система эта представляла собой уникальное сочетание части, работающей, как и старый ДОС, в реальном режиме процессора (Именно в реальном! Виртуального 86 в 286 не было!), и части, работающей в защищенном.

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

Чтобы ОС могла безнаказанно переключаться из реального в защищенный режим и обратно, драйверы были обязаны уметь работать... в обоих режимах! Без объявления войны процессор мог в любой момент перещелкнуться в другое состояние, и все адреса становились иными по сути - ведь принципы адресации в этих двух состояниях различаются в корне!

Очевидно, это приводило к весьма высокой трудоемкости написания драйверов, да и система в сумме получилась... ну, не ДОС, конечно, но как-то все стрёмно и не слишком концептуально. То есть не Юникс. Хотя, конечно, все основные вещи, которые были в Юниксе, но отсутствовали в ДОСе в OS/2 1.0 уже были, а кое-что по мелочи Юникс и опережало. Но криво, криво все. Кое-что до сих пор криво - и в 1.0, и в 2.0, и в NT... К примеру, для дотошных, сокет и файл-дескриптор в юниксе - одно и то же, а в OS/2 и NT - до сих пор - нет. Причина - раздолбайство и попустительство. Ибо даже в OS/2 1.0 сокеты можно было сделать файл-дескрипторами внешними по отношению к ОС примочками. Было бы желание.

Популярной OS/2 1.X не стала. Даже после того, как обзавелась графикой и крутой (серьезно) файловой системой - HPFS. Microsoft это быстро понял, доделал из OS/2 1.X свою OS/2 Lite, назвал ее Windows 2.0 и выпустил на рынок. Кто видел Windows 1.0, Windows 2.0 и OS/2 1.3, приколется. Первые две не имеют ничего общего, вторые две неотличимы.

Однако, линия OS/2 была продолжена. Но об этом я напишу, попив чаю, а пока - рекламная пауза. :-)

Реклама
knopka.gif (7475 bytes)Что такое XtraViewTM Technology, что значит "угол обзора 160° по горизонтали и вертикали"? Это то, что отличает новые модели высокотехнологичных ЖК-мониторов NEC - LCD400, LCD1510, LCD2000. Презентации, цифровая обработка изображений, графические и мультимедийные приложения - лучшего ответа на этот вопрос еще никто не давал.

Как это принято у крупных компаний, будущее OS/2 было спланировано заранее, и в разработку пошли версии 2.0 и 3.0. Первая была ориентирована на процессоры уровня 386 и выше (1.X удовлетворялась 286) и умела использовать их свойства, такие, как режим виртуального 8086, который позволял гонять программы для ДОС без проблем с защитой памяти. Эта версия была призвана отринуть путы совместимости с MS-DOS в том виде, что существовал в 1.X, и шагнуть дальше. Не держась за прошлое, но инкапсулируя его в DOS BOX - резервацию для старых программ, в которой были созданы все условия для жизни софта под ДОС. Версия 3.0 должна была стать первой переносимой версией OS/2.

Но не стала. К этому моменту дороги IBM и Microsoft окончательно разошлись и на разводе имущество было решено поделить пополам - версию 2.0 IBM-у, а 3.0 - Микрософту. Не всем это казалось справедливым, и, в итоге, не зря - потенциально 3.0 была сильнее. Увы, процесс переработки OS/2 3.0 в Windows NT 3.1 прошел, как мне представляется, несколько наспех - от OS/2 оторвали ее графическую подсистему и привинтили новую, совместимую с Windows 3.1, утилиты и окружение тоже переехали оттуда, и не было сделано некоторых очевидных доработок, типа тех же сокетов. Кроме того, не из всех мест успели вычистить слово OS/2, и оно порой выскакивало то там, то тут до самого релиза 3.5. Зато появилась новая файловая система, графика в разных процессах стала полностью независимой, а значит, и более устойчивой, и система обрела широкий выбор стандартных сетевых средств.

Что же стало с OS/2 2.0? Фактически, с высоты прожитых лет можно сказать, что она явилась неплохим полигоном для испытания относительно новой концепции построения интерфейса пользователя. Часть результатов этих испытаний вы можете видеть реализованными в шеллах Win 9.X и WinNT, но часть поверхностную (как в смысле реализации, так и в плане функциональности) - локальные меню, шорткаты, фолдеры, десктоп... Да, многое из этого было в Макинтоше. Но если вы одинаково много времени проработали в Mac OS, в OS/2 и Win95, направление миграции становится очевидным. Кроме того, не Mac OS, а именно OS/2 угрожала господству Windows на платформе Intel, и именно с ней должны были бороться новые возможности Windows 95.

Вернемся к концепциям. Что там в OS/2 2.0 такого было, что вынужденные покинуть эту ОС так грустят, уходя?

А была там SOM (System Object Model), базирующийся на ней WPS (Workplace Shell) и подпирающие все это EA (Extended Attributes файлов).

Сначала про последнее, как самое простое, но основополагающее. Скажите, где в Windows хранится иконка файла formula1.txt? А нигде. У него нет своей иконки. У exe-шника - есть, у shortcut-а - есть. У txt - нет. В файле места не предусмотрено, а больше класть некуда. А куда положить описание файла, то же самое имя продукта, содержащегося в данном дистрибутиве? А где хранить историю модификации файла? Опять в нем же? Какого чорта? И, собственно, что делать, если разработчик не предусмотрел в формате файла возможности сохранить дополнительную информацию о нем? И вообще - почему я должен называть документ не "Отчет о командировке", а "Отчет о командировке.doc"? И, если система будет скрывать от меня расширения файлов, кто мне объяснит, почему команда copy "Отчет о командировке" "Отчет о поездке на дачу" не срабатывает?

В OS/2, в Mac OS, в Unix как-то не принято придавать расширению имени файла слишком большое значение, и уж тем более отождествлять его с типом файла. Первые две системы предлагают спец-средства для хранения информации о файле, которая не является его содержимым.

Если призадуматься, то ассоциированная с фалом информация делится на содержимое и вторичную, вспомогательную информацию. Информацию о файле. Таковой является его имя. Его размер. Флажок read only. Тип. Краткое описание содержания. Иконка, в конце концов. Все это - не принципиальная информация. Вордовский файл с фантастическим романом не изменит содержания от того, что из только читаемого станет "читаемо-писаемым".

Авторами файловой системы OS/2 это было осознано и система эта обрела возможность хранения так называемых расширенных атрибутов файла. Расширенный (по отношению к стандартным, типа тех же имени и размера) атрибут являл собой просто пару вида "имя=значение". Например, "DESCRIPTION=Лаба по физике номер 5". Значение могло быть составным, к примеру, массивом строк. Это было полезно для атрибутов типа HISTORY. Ну и, очевидно, тип файла мог быть указан в атрибуте TYPE. Правда, если такового не оказывалось, тип выяснялся по расширению - "для совместимости с предыдущими версиями пользователей" :-).

Все, хватит на сегодня про OS/2, завтра продолжу. :-)

На тему крутости gcc пришло немало писем. Все они, увы, о низком (в том или ином смысле) качестве этого компилятора. Пара примеров. Крутой:

   
From: Cyril Pertsev
Subject: GCC

Привет,

На тему "GCC круче всех на всех платформах кроме Интела". Фуфло, автор продался FSF и гонит откровенную рекламу :-) По крайней мере на платформе RS/6000 (то что я знаю хорошо и где сравнивал) родной IBM XLC обставляет GCC как стоячего, особенно на счетных задачах (а стоит single user license при этом всего $700, AFAIR, имеется в виду сам компилер без визуальных тулзов). Голубой гигант хоть и голубой, но компиляторы не на прошлой неделе писать начал. Аналогичные сведения поступали и от людей плотно занимавшихся счетом на SPARC. На MIPS (SGI) - опять же сам сравнивал, тот же профиль.

На тему ошибок: на все сравнительно свежие платформы гнутый компилятор генерит совершенно позорный по глюкавости код. То есть алгоритм действий разработчиков совершенно очевиден - берут книжку, набивают оттуда таблицу команд и запускают. После чего совместными действиями Internet community начинается отлов глюков, скорость которого прямо пропорциональна популярности платформы. Я лично 8 лет назад выносил из GCC глюки кодогенератора на MC68000 (весьма свежая платформа :-)) - этот друг ничтоже сумняшеся клал floating point переменные в сегмент кода, вместе с константами (то есть глюк, ловящийся на элементарном начальном тестировании, вообще-то говоря). Кодогенератор на i960 был написан нашими самостоятельно, то что было - было просто непригодно к использованию вообще.

И как раз на Интел платформе GCC наиболее пригоден, бог с ними "10-ю наносекундами в середине очень короткого цикла" (с) Уэзерелл, зато хоть вылизан прилично. А вот на редких (относительно Интела) платформах, где его использование наиболее экономически оправдано (родной инструментарий слишком дорог, особливо для всякой спецухи типа i960, i860, SHARK, etc) зачастую поджидают грабли, вилы и прочий сельхозинвентарь.

Резюме. Бесплатен - да, кодогенератор - приемлем в большинстве случаев, но не более того.

--
Best regards,
Cyril

 

Оставляющий gcc чуть больше прав на жизнь(:

   
From: Igor Mordkovitch
Subject: About GNU C

Здравствуйте, Дмитрий.

Хочу сделать пару замечаний по поводу GNU компилятора.

1) Заявление о 'лучшем кодогенераторе' - чистой воды гон. Это, правда, было верно в свое время, но с появлением RISC процессоров стало неверным. Пару лет назад мы из интереса сверили результирующий код ГНУ и родных (разных) компиляторов на разных машинах, и результаты (я имею ввиду быстродействие) - не в пользу ГНУ, причем здорово не в пользу. SparcWorks, например, дал разницу чуть ли не в 5 раз. Это довольно естественно - они там в SparcWorks'e вкладывают огромные силы и средства в оптимизацию кода для RISC'а, что непросто, а для ГНУ главное - чтобы работало. Если для вашей аппликации важна скорость - купите фирменный компилятор, а если у вас SUN стоит как файл сервер и вам изредка нужно какой-нибудь апач построить - то там ведь узкое место не в CPU, и в общем по барабану, какой там стоял кодогенератор...

2) О бесплатности GNU. "И ты, женщина, тоже права". GNU, безусловно, бесплатен - там, где он есть. Торнадо стОит денег именно потому, что для их ОС GNU спортирован первоначально не был, и они к нему кодогенератор писали сами. Несколько лет назад, например, мне довелось работать на Data General, и там gcc был штатным компилятором - так вот они (DG) заплатили Сталлману или кому-то еще из команды за портинг gcc. То есть принцип бесплатности такой: если это УЖЕ сделано командой - то это бесплатно. Если же ты хочешь сделать что-то сам - ты вполне можешь брать за это деньги (возможно, что при этом какая-то часть отстегивается GNU - надо бы спросить у Sygnus'а)

3) Поддержка. Не смешно. О да, и в gcc есть ошибки. Но, во-первых, их МОЖНО исправить самостоятельно, во-вторых, их ПРАВЯТ, реально правят множество людей, и ошибки исправляются достаточно быстро. А идея, что можно, покупая компилятор, записать в договоре, что ошибки в нем исправляются в такой-то срок... да вы где живете, ребята? Вы когда покупаете у Microsoft VisualC - какой-нибудь похожий договор подписывали? Или, наоборот, подписывали бумажку на тему "блаблабла, беру все как есть и никаких претензий не имею"? Ну, давайте представим себе, что кто-то пишет в Микрософт или Сан письмо с требованием исправить такую-то ошибку. Ню-ню... Я сталкивался с ситуацией ошибки в компиляторах несколько раз (и как раз сейчас толкусь в очередную); единственный шанс получить исправление раньше намеченного релиза - это если вы работаете, скажем, в Микрософте, а компилятор купили у фирмы 'Вася Пупкин и сыновья' - короче, когда ваша фирма может топнуть ногой. Или вы - единственный клиент. Или просто у вас хорошие отношения с кем-нибудь из разработчиков, который как раз и может эту ошибку исправить и послать вам неофициальный build. Или бету. Но каждый раз это - специальная и отдельная история.

Ну вот, замечаний получилось целых три :)

 

Ну и хорошо, что три. Думаю, теперь вопрос "зачем писать компиляторы" раскрыт. :-) Писать их нужно потому, что идеал пока не достигнут, а значит есть место для совершенствования. :-)