Microsoft. Аспекты политики Владимир Каталов (с небольшими сокращениями) Когда я впервые увидел, что представляет собой Windows (это была версия Windows/386), ничего кроме разочарования мне испытать не пришлось. Даже для MS-DOS тогда существовали приличные графи- ческие библиотеки, позволяющие придать программе неплохой внешний вид и привести её в соответствие с некоторыми стандартами GUI. Впрочем, уже тогда бытовало мнение, что программа не может быть хорошей, если она имеет номер версии меньше трёх. Фирма Microsoft не обманула ожиданий пользователей и вышла на рынок с версией 3.0 (а затем и 3.1, а также Windows for Work- groups), разругавшись попутно с IBM. Я не буду сейчас останавли- ваться на недостатках тех версий, а лишь замечу, что для "персо- налок" с точки зрения рядового пользователя тогда ничего лучшего не было. Интуитивно понятный интерфейс, многозадачность (пусть и не "настоящая"), масштабируемые фонты, поддержка локальных сетей, низкие требования к аппаратной части, простота установки... Через пару лет рынок был захвачен. Тысячи и тысячи разработчиков броси- лись писать программы для Windows, ещё больше укрепляя положение Microsoft. А собственная разработка IBM - OS/2 так и не получила признания широких масс программистов и пользователей, хотя во многом превосходила творение Microsoft... Нет, я не собираюсь пересказывать путь Билла Гейтса к успеху - это уже сделано многими. Я также не буду утомлять вас сравни- тельным анализом операционных систем и нюансами маркетинговой по- литики - об этом также позаботилось большое количество как про- фессионалов, так и любителей. Я лишь хочу остановиться на некото- рых аспектах политики фирмы Microsoft - с точки зрения разработ- чика. ¦ Chicago, Memphis, Detroit, OSR, СЕ, NT... Даже специалист крепко задумается, если ему задать вопрос, сколько существует версий Windows. Основное хождение сейчас имеют следующие: Windows 3.1, Windows for Workgroups, Windows'95, Win- dows NT 3.51 и Windows NT 4.0. Не считая различных модификаций типа OSR2, национальных версий и дополнений типа Service Pack и Resource Kit. Плюс большое количество бета-версий, которые, как известно, появляются на Митинском рынке чуть ли ни раньше, чем их получают бета-тестеры. Безусловно, каждая из этих версий имеет право на существование, но... Для разработчика это сущий кошмар: если он рассчитывает на действительно широкое распространение своей программы, то ему придётся сделать соответствующее количество вариантов своего де- тища, либо динамически подстраиваться под определённую версию операционной системы уже во время работы программы (что ведёт к её непомерному "раздуванию"). Вы знаете, у меня сложилось впечат- ление, что программисты из Microsoft не общаются между собой: столько различий между упомянутыми версиями. Правая рука не веда- ет, что творит левая... Даже некоторые функции API с одинаковым названием и назначением ведут себя в различных системах совершен- но по-разному, и нередко это никак не отражено в документации. Дело ещё и в том, что очень часто это совершенно не оправдано. Но для получения логотипа "Designed for..." позаботиться о совмести- мости придётся. Лично я не понимаю, почему моя программа должна работать под Windows NT, если я разрабатываю её для Windows'95. Хорошо ещё, что обратной совместимости не требуют... Хотя нет, я ведь и "Designed for Windows NT 4.0" уже где-то видел! Существует, однако, документ под названием "Differences in Win32 API Implementations Among Windows Operating Systems" (White Paper). Нет, полезных советов по написанию "универсальной" прог- раммы вы там не найдёте, зато есть список функций API, уникальных для Windows'95 и Windows NT, а также перечислены функции, возвра- щающие разные значения в разных системах. Хоть какая-то помощь... Но очень многое, к сожалению, туда не попало - видимо, посчитали различия слишком мелкими. С выпуском Windows'98 (Memphis) ситуация, понятное дело, только ухудшится... Кстати, из уст одного высокопоставленного руководителя Mic- rosoft как-то прозвучало, что следующую версию программы надо разрабатывать одновременно с текущей, причём желательно, чтобы этим занималась совершенно другая - независимая - команда. К чему это может привести, мы с вами и наблюдаем в настоящее время... А мне-то казалось, что новая версия должна стать в полном смысле слова преемником старой, т.е. взять от неё всё лучшее, реализо- вать по возможности максимальное количество пожеланий пользовате- лей и избавиться от ошибок. Не могу удержаться, чтобы не рассказать интересную историю с Service Pack 2 for Windows NT 4.0. Надо сказать, что даже сама Microsoft не рекомендовала устанавливать этот пакет без особой необходимости - там есть несколько весьма досадных ошибок, из-за которых после его инсталляции очень часто приходится видеть "Blue Screen of Death" (в ситуациях, когда ранее всё работало гладко). Однако он делает доступными несколько API-функций, применение ко- торых может дать очень существенный выигрыш в производительности при работе с большими объёмами данных (раньше эти функции можно было вызывать только из Ring 0 - уровень драйверов устройств). Ну и что, - скажете вы, - недокументированные функции были в Windows всегда. А то, что эти функции с успехом используются в Microsoft SQL Server, давая ему таким образом незаслуженную фору. Правда, "под давлением общественности" (см. http://www.ntinternals.com) их описание всё же появилось в Microsoft Knowledge Base, но оно "почему-то" попало в статью с названием типа "Performance Enhan- cements in Microsoft SQL Server 6. 5", а кому придёт в голову ту- да заглядывать? Спустя ещё некоторое время (уже после появления Service Pack 3), Microsoft выпустила дополнения к SDK, поддержи- вающие эти функции, но поезд уже ушёл... ¦ Как делать деньги на ошибках. В любой программе (если, конечно, она способна на большее, чем печатать "Hello, World") есть ошибки. Они могут быть серьёз- ными и не очень, разрушающими данные или просто раздражающими, очевидными или редко проявляющимися, но они есть всегда. Нельзя также не отметить, что при переходе к новой версии их количество, как правило, не уменьшается - т.е. обязательно появляются новые "взамен" исправленных старых (а очень часто о старых просто "за- бывают"). Тестирование программы перед выпуском её "в свет" на суд пользователей - дело сложное и кропотливое, требующее усилий не меньше, чем сама разработка; если фирма-производитель не имеет специального подразделения, занимающегося тестированием, то эта тяжесть ложится на плечи самих разработчиков (а они любят зани- маться тестированием не больше, чем написанием документации). Чем меньше программа тестируется, тем больше потом будет проблем у службы технической поддержки; а увеличение цикла "проверка-дора- ботка" ведёт зачастую к задержкам выпуска окончательного продук- та, не говоря уже о превышении соответствующей статьи расходов бюджета. В общем, получается замкнутый круг. И приходится чем-то жер- твовать, как это бывает всегда в подобных случаях. Надо отдать должное фирме Microsoft - она нашла блестящее решение, позволяю- щее не только не потерять ни цента, но ещё и дополнительно зара- ботать, не прикладывая значительных усилий. Разработчики программ для Windows, наверное, уже поняли, о чём я говорю. Это платная поддержка Microsoft, а также диски TechNet и MSDN. В самом деле, зачем искать ошибки в программе до её выпуска на рынок, когда можно сделать это потом, получая за это деньги? Что-то, безусловно, делается (согласно утверждениям фирмы, бета-версия Windows'98 была разослана по десяти тысячам адресов), но как-то не особенно заметно, чтобы это тестирование давало хорошие результаты (кстати, интересный момент: я уже боль- ше года участвую в программе бета-тестирования новых версий Win- dows, но все они - OSR2, WDM/USB, Memphis - мне приходят почему- то американские, а не русские и даже не панъевропейские). Начнём с поддержки. Мне трудно оценить, насколько хорошо ра- ботает платная служба поддержки (в Москве этим занимается Digital Equipment, но я не имею чести быть её клиентом). Зато у меня есть опыт общения со "специалистами", оказывающими бесплатные консуль- тации. Общее впечатление следующее: уровень их квалификации ос- тавляет желать лучшего, и получить ответ на вопрос можно только в том случае, если он достаточно простой и/или уже задокументирован самой Microsoft. Шаг в сторону - и вы "провисите" на телефоне до- статочно долго, чтобы пожалеть о своём звонке (а ответа так и не получите)... Не говоря уж о том, что ваша работа за это время не продвинется ни на шаг. Да и с платной поддержкой не всё так просто, как можно было бы предположить. Согласно данным, приведённым на сервере Micro- soft (http://www.microsoft.com/supportnet/overview/devprod.htm), один звонок в группу поддержки (по средствам разработки) стоит $95. Можно подписаться сразу на год, но в пределах десяти "инци- дентов"; это будет стоить папаше Дорсету уже $895. Если вам денег совсем уж некуда девать, то можете заплатить $20 000 и получить "приоритетную" поддержку (100 "инцидентов"); за эти деньги вы по- лучите также и доступ к некоторым документам, недоступным простым смертным (эх, хоть бы краешком глаза взглянуть, что там есть). Есть и ещё более продвинутый план, но цена даже не указывается (видимо, чтобы не шокировать количеством нулей)... А вот что подразумевается под "инцидентом" - не совсем ясно. Если я, напр., не могу найти серийный номер Visual С на коробке с диском (мало ли, отклеился) - и за это тоже $95 платить? Или с "простыми" вопросами обращаться в бесплатную службу, а со "слож- ными" - в платную? А то ведь так никакой бизнес расходов на под- держку не окупит... Есть другой вариант: можно подписаться (за довольно прилич- ные деньги) на MSDN и прочие программы (кстати, в Москве это сде- лать не так уж и просто - Microsoft АО почему-то не в курсе, где они есть, так что придётся обзвонить множество фирм). Я помню, какое впечатление на меня произвело то, что всего за несколько месяцев после выпуска Windows'95 фирмой Microsoft было задокумен- тировано несколько с о т е н ошибок (я думаю, что это лишь ма- лая толика от их реального числа, ну да сейчас речь не об этом). При этом признание существующей ошибки мало что даёт: лишь в очень редких случаях оно содержит workaround, т.е. путь её "обхо- да" (не всегда, кстати, приемлемый). При этом Microsoft клятвенно обещает, что работа над исправлением ошибки уже ведётся и следую- щая версия (с исправлениями) уже на подходе, однако слово своё держит не всегда (один пример из DDK - Device Driver Kit - как был "нерабочим" с версии для Windows NT 3.1, так им и остался вплоть до настоящего времени). И даже не думайте разрабатывать серьёзное приложение, не имея выхода в Интернет. Уж без чего вы точно не сможете обойтись, так это без доступа в UseNet и регулярных посещений сайта Micro- soft (плюс ряда других серверов). Рекомендуется также подписаться на ряд списков рассылки, включая платные. А иначе вы так и не уз- наете, что можно с чистой совестью "спихнуть" вину на авторов операционной системы)... Правда, вашей программе это не поможет, и всё равно придётся исхитряться, заменяя вызов одной функции не- сколькими страницами собственного текста. Думаете, я преувеличи- ваю? Ничуть. Сомневающимся предлагаю проверить, как работает фун- кция GetPrivateProfileSection под Win32s (кстати, в документации указано, что эта функция оставлена для поддержания совместимости со старыми приложениями, однако в SDK для Windows 3.1 её вообще не было). И что же? Вы платите за звонки, платите за TechNet/MSDN/чтo- там-ещё, раздражаете своих домашних постоянной занятостью телефо- на (а ну-ка скачайте 15-мегабайтный Service Pack для Windows NT; и это ещё не предел: недавно вышел Service Pack - уже второй! - для Visual Studio 97, который гораздо объёмнее: около 88 Мбайт, а для инсталляции нужно 300 Мбайт с хвостиком; можно, правда, зака- зать его по почте на CD, но за $15 + доставка), а в результате получаете лишь слабое утешение: ошибка не в вашей программе, а в чужой. Нет, погодите, это ещё не всё: вам предложат подождать следующей версии и (естественно) к у п и т ь её. Может быть, с ней у вас будет меньше проблем, а может быть, и нет (заранее это узнать практически невозможно). Вас никто не спрашивает, нужны ли вам дополнительные возможности новой версии (вероятно, совсем нет), но выкладывать свои кровные всё равно придётся. Как вам та- кая перспектива? Плюс к этому из новых версий зачастую таинствен- но пропадают некоторые возможности (пример: импорт файлов с русс- ким текстом, набранных в Microsoft Word for DOS, или поддержка Win32s в Visual С++). Мало того, в продуктах Microsoft есть ошибки, введённые туда с п е ц и а л ь н о . Не верите? А зря. Скептиков отсылаю к книж- ке "Programmer's Guide to Microsoft Windows'95" (Microsoft Press, ISBN 1-55615-834-3; $27.95 (кстати), p. 69 "System Metrics"). По утверждениям авторов, эти ошибки существовали ещё в ранних верси- ях Windows (имеются в виду то ли 3.1, то ли ранние бета-версии Windows'95); потом их нашли, но к тому времени уже существовало большое количество приложений, их учитывающих. Чтобы никого не обидеть и сохранить "совместимость", их добавили снова. Кстати, даже и не думайте искать сведения об этих ошибках в стандартной документации (к SDK или Visual С++) - их там, естественно, нет и не было. ¦ Как уничтожить конкурента. Конкуренция - вещь жестокая. Или ты, или тебя... Как выйти из игры победителем или хотя бы выжить? Казалось бы, самый эффек- тивный способ - постоянно изучать рынок, следить за тенденциями его развития, делать то, что не смогли или не захотели сделать другие. Это нелегко, но, тем не менее, все учебники по маркетингу предлагают именно этот путь, выработанный годами. Фирма Microsoft и здесь пошла своим путём (One Microsoft Way). Если она не может обогнать конкурента, она его просто п о к у п а е т . Если купить по каким-либо причинам не удаётся (уж больно мешают антимонопольные законы), то приходится всё-таки разрабатывать собственный продукт и встраивать его в свою опера- ционную систему или раздавать бесплатно (в крайнем случае, по бросовой цене). Неважно, что затраченные деньги не окупятся; главное - это заполучить пользователей, а дальше с ними можно де- лать всё, что душе угодно. Мне по-человечески жалко Netscape. Слишком многие, как мне кажется, "переметнулись" в сторону Internet Explorer только пото- му, что он бесплатный... Кстати, и слухи о давлении Microsoft на провайдеров, поставляющих Netscape Navigator, мне не кажутся бес- почвенными, - это вполне в их стиле. Понятно, что на самом Inter- net Explorer Microsoft ничего не заработает (они ведь обещали его оставить бесплатным: "Was free, is free and will be free", - как сказал вице-президент Microsoft Брэд Силверберг), но тут задумка совсем другая. Они же не альтруисты, в конце концов... Тратить столько денег (начиная с покупки Mosaic и заканчивая покупкой Di- mensionX и VXtreme, плюс собственные разработки, плюс реклама и т.д.) - и всё просто для того, чтобы "изменить жизнь к лучшему"? Щас! Нет, Internet Explorer - это всего лишь трамплин, который поможет прыгнуть о-о-очень далеко. Смотрите: уже и Knowledge Base переведена в формат, доступный только Internet Explorer... Это только начало, дальше будет больше. Скажем, если вы попытаетесь установить Internet Explorer 3.02 или более ранний под Windows'98 (Beta 1), то у вас пропадёт Active Desktop (это в лучшем случае). Кстати, это задокументировано в "Release Notes" к Windows'98, но в файле формата Word'97, а сам Word'97, согласно этому же доку- менту, под Windows'98 практически не работоспособен... Да и In- ternet Explorer 4.0 (во всяком случае, текущей бета-версией) тоже пользоваться невозможно: некоторые страницы (возможно, оптимизи- рованные под Netscape Navigator) он показывает в совершенно нево- образимом виде. Можно даже ожидать, что стандарт ActiveX завоюет больше пок- лонников, чем Java. Лично мне Java совершенно не нравится (или, во всяком случае, нравится меньше, чем ActiveX), но дело не в этом. Microsoft берёт деньги за Visual J++, но в то же время раз- даёт Visual Basic (Control Creation Edition) опять-таки совершен- но бесплатно, а также всячески поддерживает Web-дизайнеров, поме- щающих ActiveX controls на свои страницы. Они могут себе это поз- волить: вложения обязательно окупятся в будущем, но вряд ли это можно назвать просто прозорливостью. Это удары н и ж е п о я - с а . Бизнес есть бизнес, но всегда существуют некоторые неписа- ные правила, которые принято соблюдать. Есть также такое понятие, как д е м п и н г , и он никогда не считался явлением положи- тельным. Есть у Microsoft и другие, не менее интересные, средства борьбы с конкурентами. Скажем, не все SDK могут быть использованы с "чужими" компиляторами (без внесения большого количества изме- нений вручную; пример - Internet Explorer SDK); создавать драйве- ры для Windows опять-таки можно, лишь пользуясь средствами Micro- soft (есть некоторые решения, предлагаемые третьими фирмами, та- кими как Vireo Inc., но они стоят очень приличных денег). А ведь конкурирующие продукты не так уж плохи - скажем, Bor- land С++ обеспечивает лучшую производительность на ряде тестов (напр., на комплексном преобразовании Фурье), да и библиотеки OWL, по оценкам независимых экспертов, превосходят по ряду пара- метров MFC. А отказ Microsoft лицензировать MFC Borland (этот вопрос, справедливости ради надо заметить, возник перед выпуском Borland С++ 5.0, в который поддержка MFC была введена, но сами из-за конфликта с Microsoft MFC включены не были. К моменту выхо- да 5.01 проблема нашла своё решение). Вы, кстати, заметили, сколько у Microsoft появилось новых продуктов за последние пару лет? Здесь есть всё: от игрушек до серьёзных программ трёхмерного моделирования. Причём большинство разработок Microsoft может назвать "собственными" лишь с очень большой натяжкой - они были просто-напросто к у п л е н ы "на корню" - в основном у небольших фирм. Раз уж речь пошла об игрушках Microsoft... Я вообще-то по натуре не игрок, но иногда люблю "побаловаться". Как-то решил по- ставить найденные на CD c Windows 95 OSR2 (beta) trial-версии иг- рушек Close Combat и Monster Truck Madness (MDM). Чуть не "нар- вался". Дело в том, что обе игрушки требуют драйверы, совместимые с DirectX 2.0. У меня на машине стояли самые свежие драйверы Di- rectX 3.0, взятые с Web-сервера Tseng, и я был спокоен. Оказа- лось, зря. Первая игрушка - Close Combat - при установке молчала как партизан, втихаря заменяя мои аудио- и видеодрайверы своими. Вторая - Monster Truck Madness - всё-таки предупредила, что соби- рается DirectX переустановить, но зачем - я так и не понял; ведь драйверы только что уже были заменены первой игрушкой, в чём я убедился после перезагрузки. Завесу тайны над этими манипуляциями приоткрыл файл README. TXT от MDM. К сожалению, возможность прочесть его появилась толь- ко после полной установки, т.к. вышеупомянутые игры были записаны в виде самораспаковывающихся (и самоустанавливающихся) архивов - эдакий громадный .ЕХЕ-файл. Что внутри - неизвестно. (Windows Ex- plorer на страничке Version свойств этих файлов показывает: Win32 CabinetSelf-Extractor. Однако все имевшиеся в моём распоряжении утилиты, включая оные от самой Microsoft, как "кабинеты" эти фай- лы не распознали...) Так вот, что я там нашёл (знал бы, где упасть, соломку подс- телил бы): "DirectX is а system component that allows for more effici- ent hardware access. То run, Monster Truck Madness requires Di- rectX 2.0 or later. DirectX is installed on your computer when you install Monster Truck Madness. DirectX 2.0 setup updates your Windows'95 drivers and your DirectX 1.0 driver automatically. In some cases, the latest video drivers from your video card manu- facturer have additional functionality that is specific to your video card. If these drivers are marked as DirectX 1.0 drivers, DirectX setup will replace them with а generic DirectX 2.0 dri- ver. In some cases, this may result in а loss of the features that are specific to your video card". Веселёнькое дело! Что же такое "marked as DirectX 1.0 dri- vers"? Ну не встречал я такого термина, хотя документации перело- патил немало. Дело в том, что внутри драйвера всегда прописывает- ся номер его версии, и эту величину совсем нетрудно прочитать и правильно интерпретировать. Т.е. драйвер либо версии 1.0, либо нет (прямо как "осетрина первой свежести"). А вот инсталляторы приняли за версию 1.0 сначала мои драйверы версии 3.0 (это я ещё могу понять), а потом уже и свои собственные, которые уж точно должны быть версии 2.0! Напрашивается вывод, что ничего они не проверяют... Так зачем же огород городить? А игрушки, кстати, оказались весьма посредственные. Только время потерял. ¦ Новые технологии. Нет, я не буду убеждать вас в том, что "новое - это хорошо забытое старое" (тем более, что это утверждение спорно). Давайте- ка лучше разберёмся, что понимает под этим Microsoft... Одной из отличительных черт технического прогресса является его "скачкообразность". Количественные изменения происходят до тех пор, пока не настаёт время уступить место качественным. Так- товую частоту нельзя повышать до бесконечности; рано или поздно придётся что-то менять более кардинально (напр., переходить на арсенид галлия). Так и с программным обеспечением: непрерывное добавление новых возможностей в программу улучшает её лишь до по- ры до времени; наступает момент, когда она разрастается до немыс- лимых размеров и стремится захватить все имеющиеся в компьютере ресурсы. И тут уже надо искать новые подходы, реализовывать све- жие идеи. Вот именно с реализацией идей в империи Билла Гейтса дела и обстоят хуже всего... С моей точки зрения, всё началось с OLE. Задумка, возможно, была хорошей, но реализовали её из рук вон плохо, чтобы не ска- зать - отвратительно. Я ещё не видел ни одного OLE-сервера или контейнера, который работал бы, как надо. И это нельзя ставить в вину разработчикам: чтобы обеспечить совместимость своего продук- та со всеми остальными (а именно ради этого OLE вроде как и заду- мывалось), им пришлось бы затратить такое количество усилий, что расходы перекрыли бы доходы во много раз. Даже собственные про- дукты Microsoft не безгрешны в этом отношении: знакомой мне ко- манде разработчиков из фирмы IzoSoft пришлось "подстраивать" свой OLE-сервер индивидуально под каждую программу из набора Microsoft Office, чтобы обходить имеющиеся там ошибки. А теперь ещё и Acti- veX, и DCOM... Новые стандарты - новые ошибки. Моим основным занятием в жизни является написание программ, и я прекрасно знаю, насколько трудно иногда бывает удержаться от соблазна думать только о себе, т.е. не брать в расчёт то, что многие пользователи любят многозадачность, имея при этом не слиш- ком много памяти и не самый быстрый процессор. Куда как проще и удобнее не утруждать себя оптимизацией, а держать все данные в памяти (часто ещё и забывая её потом освободить). Как гласит один из законов Мёрфи: "Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший дятел унич- тожил бы цивилизацию"... Вам понятно, что явилось причиной появ- ления на свет этого афоризма? А plug'n'play? Тоже вроде бы неплохая идея. Вот только когда в компьютере установлено больше одной платы, соответствующей этой спецификации, обычно начинаются проблемы. Особенно, когда у вас мало свободных каналов IRQ и DMA - Windows'95 начинает их распре- делять по-своему, руководствуясь мало кому понятными соображения- ми. Особенно "весело" бывает, когда на последнем этапе загрузки остаются две платы и два прерывания, но драйвер одной из плат хо- чет получить одно из них - вполне определённое и фиксированное, а его захватывает "успевший раньше" второй драйвер, и в результате у вас одному из устройств прерывания всё-таки не хватает, притом, что остаётся одно лишнее, и исправить эту ситуацию можно, только хорошо разбираясь в тонкостях загрузки драйверов и структуре Re- gistry (которая, к слову, задокументирована очень слабо). Согла- сен, тут и сами драйверы в какой-то мере виноваты, но и с Micro- soft снимать вину нельзя. Так что я с недавних пор полюбил старые добрые legacy-карты и, покупая новую, всегда спрашиваю продавца, можно ли отключить режим PnP и поменять прерывание вручную, пере- ставив перемычку... Экономится куча времени, знаете ли. Заслуживают "доброго" слова и спецификации Microsoft, якобы призванные облегчить жизнь пользователей. Вот вечно кто-то желает обо мне позаботиться, когда я сам этого совсем не хочу... Чего стоят хотя бы рекомендации Microsoft о том, что программы должны хранить все настройки в Registry, а разделяемые DLL сбрасывать в многострадальную директорию System? Я люблю устанавливать всячес- кие небольшие утилиты, набранные в Интернете, и каждые несколько месяцев приходится вычищать множество файлов вручную, т.к. даже самый грамотный uninstall (написанный, опять же, согласно вышеу- помянутым рекомендациям), не всегда может определить, понадобится ли кому-то ещё какой-то конкретный файл или нет (иногда он спра- шивает об этом меня, но я зачастую не в силах ответить однозначно правильно). С Registry ещё хуже: даже собственные продукты Micro- soft не любят её после себя "убирать", а что-либо менять там вручную малоопытным пользователям лучше не стоит. Тем более что и утилита ERU (emergency recover utility) работает крайне плохо. ¦ Документация Российский программист - существо не избалованное. Ни высо- кими заработками, ни качественной документацией. Несколько лет назад легальные программные продукты вообще практически не были доступны, и осваивать их приходилось по help-ам, а также методом проб и ошибок. Если же вы заплатили за программу приличную сумму, то вправе рассчитывать на хорошее и подробное описание. Помню, я как ребё- нок радовался документации на свой первый законно купленный про- дукт - Borland C++ 2.0. Толстые книжки в красивой глянцевой об- ложке - это завораживало. Там было всё: и как устанавливать про- дукт, и как его запускать, и как разбираться в ошибках, и как ис- пользовать примеры... Блеск! А недавно приобрели Visual С++. Взвесив в руках коробку, я сразу понял, что что-то не так - уж больно она оказалась лёгкой. И ожидания меня не обманули: внутри (кроме CD) оказалось лишь ма- лополезное руководство пользователя совсем небольшого объёма. Ну- да, справочная система, конечно же, имеется. В формате под новый InfoViewer, интегрированный с Internet Explorer 3.02. Который, в свою очередь, с очень большим скрипом устанавливается под Windows NT 4.0. Кстати, смену InfoViewer представители Microsoft обосно- вывают тем, что теперь на компьютере можно иметь всего один брау- зер [Eric Peterson. Our view on the new viewer / MSDN News, р. 2] - догадываетесь какой? Да, кстати: сама по себе система помощи ни в одном из про- дуктов Microsoft не выдерживает никакой критики. Ошибок масса (а в новой оболочке появились и новые проблемы: скажем, переход по ключевому слову - простейшая операция - реализован почему-то на Java и не всегда работает, показывая длинное и малопонятное сооб- щение об ошибке). "Windows Developer's Journal" даже выпускает (регулярно) исправления, описывающие неточности в подсказках. Правда, теперь им придётся туго, т.к. эти исправления были расс- читаны на "старый" формат Windows Help, который Microsoft уже почти не поддерживает... Так что за хорошей документацией придётся (опять же) идти в Интернет, а то и в книжный магазин, где стройными рядами выстрои- лись книги издательства "Microsoft Press" в ярких обложках, так и жаждущие опустошить ваш карман. Вполне возможно даже, что не удастся обойтись и без покупки дополнительного продукта (нагляд- ный пример: в Access'95 можно использовать Windows API, но описа- ния соответствующих функций, типов данных и пр. предлагается взять в Access Developer's Toolkit, который стоит в несколько раз дороже). А пробовали найти нужную вам информацию на сайте Microsoft? На редкость увлекательное занятие. Такое ощущение, что его делали профессиональные дизайнеры (сколько там красивых картинок и ани- маций - не счесть!), ни сном ни духом не ведающие о проблемах программистов. Как вы думаете, где находится, напр., документация по формату "кабинетов" (файлы с расширением .CAB)? Могу открыть секрет: в разделе "Introduction to Cabinets: А New Way to Distri- bute Java Classes". Причём располагающийся там же SDK рассчитан на язык C/C++. Кто-нибудь может мне объяснить, причём тут Java? Пример, к сожалению, не единственный. Очень неплохая документация по Windows'95 и Windows NT, кстати, входит в Resource Kit. Там даже (сюрприз!) описаны многие ключи Registry. Только вот мне кажется, что это не слишком честно - продавать (пусть и за небольшие деньги) то, что, по совести, должно было быть включено в стандартную поставку, ведь без многих утилит, входящих в этот набор, администрировать компьютер и раз- бираться в тонкостях конфигурирования практически невозможно... То же можно сказать и о пакете Microsoft Plus!: не считая Desktop Themes и бестолковой игрушки PinBall все остальные компоненты очень важны и нужны. ¦ Заключение. Стремление Microsoft захватить господство на рынке программ- ного обеспечения вполне понятно. Кому не хочется быть первым? Де- ло даже не только в деньгах, хотя и они играют далеко не послед- нюю роль. Мне кажется, идёт борьба за почётное звание законодате- ля мод, и у Microsoft появляются первые симптомы мании величия... Впринципе, даже и это не так плохо: мало кто из пользователей от- кажется от возможности иметь на своём компьютере все продукты только от одной фирмы; но только при условии, если они надёжны, удобны в обращении, свободны от ошибок, без проблем интегрируются друг с другом и хорошо поддерживаются. А вот этого-то продуктам Microsoft как раз и не хватает. Работать надо, господа. Не время ещё почивать на лаврах. С автором можно связаться по e-mail: kitten@transcom.mipt.ru или посетить http://www.ecsc.mipt.ru/Elcom/. [Компьютерра. N37(214). - М., 15.09.1997]