Проект 'ПОтребитель'
Главная | Новости | Информация | Статьи | Программы
Законы | Ссылки | О проекте | Off topic


Microsoft: аспекты политики


Когда я впервые увидел, что из себя представляет Windows (это была версия Windows/386), ничего кроме разочарования мне испытать не пришлось. Даже для MS-DOS тогда существовали приличные графические библиотеки, позволяющие придать программе неплохой внешний вид и привести ее в соответствие с некоторыми стандартами GUI (а с какой завистью пользователи PC смотрели на обладателей Macintosh...). Впрочем, уже тогда бытовало мнение, что программа не может быть хорошей (я уж и не говорю - свободной от ошибок), если она имеет номер версии меньше трех.

Фирма Microsoft не обманула ожиданий пользователей и вышла на рынок с версией 3.0 (а затем и 3.1, а также Windows for Workgroups), разругавшись попутно с IBM. Я не буду сейчас останавливаться на недостатках тех версий, а лишь замечу, что для персоналок тогда ничего лучшего не было (с точки зрения рядового пользователя). Интуитивно понятный интерфейс, многозадачность (пусть и не "настоящая"), масштабируемые шрифты, поддержка локальных сетей, низкие требования к аппаратной части, простота установки... Через пару лет рынок был захвачен. Тысячи и тысячи разработчиков бросились писать программы для Windows, еще больше укрепляя положение Microsoft. А собственная разработка IBM - OS/2 ("Лучшая Windows, чем Windows") так и не получила признания широких масс программистов и пользователей, хотя во многом превосходила творение Microsoft...

Нет, я не собираюсь перессказывать путь Билла Гейтса к успеху - это уже сделано многими. Я также не буду утомлять вас сравнительным анализом операционных систем и нюансами маркетинговой политики - об этом также позаботилось большое количество как профессионалов, так и любителей (насколько им это удалось, судить не мне). Я лишь хочу остановиться на некоторых аспектах политики фирмы Microsoft - с точки зрения разработчика.


Chicago, Memphis, Detroit, OSR, CE, NT...


Даже специалист крепко задумается, если ему задать вопрос, сколько существует версий Windows. Основное хождение сейчас имеют следующие: Windows 3.1, Windows for Workgroups, Windows 95, Windows 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 и NT; также перечислены функции, возвращающие разные значения в разных системах. Хоть какая-то помощь... Но очень многое, к сожалению, туда не попало - видимо, посчитали различия слишком мелкими.

С выпуском Windows 98 (a.k.a. Memphis) ситуация, понятное дело, только ухудшится...

Кстати, из уст одного из высокопоставленных руководителей Microsoft как-то прозвучало, что следующую версию программы надо разрабатывать одновременно с текущей, причем желательно, чтобы этим занималась совершенно другая - независимая - команда. К чему это может привести, мы с вами и наблюдаем в настоящее время... А мне-то казалось, что новая версия должна стать в полном смысле слова "преемником" старой, т.е. взять от нее все лучшее, реализовать по-возможности максимальное количество пожеланий пользователей и избавиться от ошибок.

Не могу удержаться, чтобы не рассказать интересную историю с Service Pack 2 for Windows NT 4.0. Надо сказать, что даже сама Microsoft не рекомендовала устанавливать этот пакет без особой необходимости - там есть несколько весьма досадных ошибок, благодаря которым после его инсталляции очень часто приходится видеть "Blue Screen of Death" (в ситуациях, в которых до этой операции все работало гладко). Однако он делает доступными несколько API-функций, применение которых может дать очень существенный выигрыш в производительности при работе с большими объемами данных (раньше эти функции можно было вызывать только из Ring 0 - уровень драйверов устройств). Ну и что, - скажете вы, - недокументированные функции были в Windows всегда. А то, что эти функции с успехом используются в Microsoft SQL Server, давая ему таким образом незаслуженную фору. Правда, "под давлением общественности" (нашлись добрые люди, см. http://www.ntinternals.com <в настоящее время - http://www.sysinternals.com/ - прим. ред.>) их описание все же появилось в Microsoft Knowledge Base, но оно "почему-то" попало в статью с название типа "Performance Enhancements in Microsoft SQL S erver 6.5", а кому придет в голову туда заглядывать? Спустя еще некоторое время (уже после появления Service Pack 3), Microsoft были выпущены дополнения к SDK, поддерживающие эти функции, но поезд уже ушел...


Как делать деньги на ошибках


В любой программе (если, конечно, она делает больше, чем печать "Hello, World") есть ошибки. Они могут быть серьезными и не очень, разрушающими данные или просто раздражающими, очевидными или редко проявляющимися, но они есть всегда. Нельзя также не отметить, что при переходе к новой версии их количество, как правило, не уменьшается - то есть обязательно появляются новые "взамен" исправленных старых (а очень часто о старых просто "забывают"). Тестирование программы перед выпуском ее "в свет" на суд пользователей - дело сложное и кропотливое, требующее усилий не меньше, чем сама разработка; если фирма-производитель не имеет специального подразделения, занимающегося тестированием, то эта тяжесть ложится на плечи самих разработчиков (а они любят заниматься тестированием не больше, чем написанием документации). Чем меньше программа тестируется, тем больше потом будет проблем у службы технической поддержки; а увеличение цикла "проверка-доработка" ведет зачастую к задержкам выпуска окончательного продукта, не говоря уже о превышении соответствующей статьи расходов бюджета.

В общем, получается замкнутый круг. И приходится чем-то жертвовать, как это бывает всегда в подобных случаях. Надо отдать должное фирме Microsoft - она нашла блестящее решение, позволяющее не только не потерять ни цента, но еще и дополнительно заработать, не прикладывая значительных усилий.

Разработчики программ для Windows, наверное, уже поняли, о чем я говорю. Это платная поддержка Microsoft, а также диски TechNet и MSDN. В самом деле, зачем искать ошибки в программе до ее выпуска на рынок, когда можно сделать это потом, получая за это деньги? Что-то, безусловно, делается (согласно утверждениям фирмы, beta-версия Windows 98 была разослана по десяти тысячам адресов); но как-то не особенно заметно, чтобы это тестирование давало хорошие результаты (кстати, интересный момент: я уже больше года участвую в программе beta-тестирования новых версий Windows, но все они - OSR2, WDM/USB, Memphis - мне приходят почему-то американские, а не русские и даже не пан-европейские).

Начнем с поддержки. Мне трудно оценить, насколько хорошо работает платная служба поддержки (в Москве этим занимается Digital Equipment, но я не имею чести быть их клиентом). Зато у меня есть опыт общения со "специалистами", оказывающими бесплатные консультации. Общее впечатление следующее: уровень их квалификации оставляет желать лучшего, и получить ответ на вопрос можно только в том случае, если он достаточно простой и/или уже задокументирован самой Microsoft. Шаг в сорону - и вы "провисите" на телефоне достаточно долго, чтобы пожалеть о своем звонке (а ответа так и не получите)... Не говоря уж о том, что ваша работа за это время не продвинется ни на шаг.

Да и с платной поддержкой не все так просто, как можно было бы предположить. Согласно данным, приведенным на сервере Microsoft (http://www.microsoft.com/supportnet/overview/devprod.htm), один звонок в группу поддержки (по средствам разработки) стоит $95. Можно "подписаться" сразу на год, но в пределах десяти "инцидентов"; это будет стоить папаше Дорсету уже $895. Если вам денег совсем уж некуда девать, то можете заплатить $20000 и получить "приоритетную" поддержку (100 инцидентов); за эти деньги вы получите также и доступ к некоторым документам, недоступным простым смертным (эх, хоть бы краешком глаза взглянуть, что там есть). Есть и еще более продвинутый план, но цена даже не указывается (видимо, чтобы не шокировать количеством нулей).

А вот что подразумевается под "инцидентом" - не совсем ясно. Если я, например, не могу найти серийный номер Visual C на коробке с диском (мало ли, отклеился или кетчупом нечаянно залил) - и за это тоже $95 долларов платить? Или с "простыми" вопросами обращаться в бесплатную службу, а со "сложными" - в платную? А то ведь так никакой бизнес расходов на поддержку не окупит...

Есть другой вариант: можно подписаться (за довольно приличные деньги) на MSDN и прочие программы (кстати, в Москве это сделать не так уж и просто - Microsoft А.О. почему-то не в курсе, где они есть, так что придется обзвонить множество фирм). Я помню, какое впечатление на меня произвело то, что всего за несколько месяцев после выпуска Windows 95 фирмой Microsoft было задокументировано несколько сотен ошибок (я думаю, что это лишь малая толика от их реального числа, ну да сейчас речь не об этом). При этом признание существующей ошибки мало что дает: лишь в очень редких случаях оно содержит "workaround", то есть путь ее "обхода" (не всегда, кстати, приемлемый). При этом Microsoft клятвенно обещает, что работа над исправлением ошибки уже ведется, и следующая версия (с исправлениями) уже на подходе, однако слово свое держит не всегда (один пример из DDK -Device Driver Kit - как был "нерабочим" с версии для Windows NT 3.1, так им и остался вплоть до настоящего времени).

И даже не думайте разрабатывать серьезное приложение, не имея выхода в Internet. Уж без чего вы точно не сможете обойтись, так это без доступа в UseNet и регулярных посещений сайта Microsoft (плюс ряда других серверов). Рекомендуется также подписаться на ряд списков рассылки, включая платные. А иначе вы так и не узнаете, что можно с чистой совестью "спихнуть" вину на авторов операционной системы :)... Правда, вашей программе это не поможет, и все равно придется исхитряться, заменяя вызов одной функции несколькими страницами собственного текста. Думаете, я преувеличиваю? Ничуть. Сомневающимся предлагаю проверить, как работает фунция GetPrivateProfileSection под Win32s (кстати, в документации указано, что эта функция оставлена для поддержания совместимости со старыми приложениями, однако в SDK для Windows 3.1 ее вообще-то не было).

И что же? Вы платите за звонки, платите за TechNet/MSDN/что-там-еще, раздражаете своих домашних постоянной занятостью телефона (а ну-ка скачайте пятнадцатимегабайтный Service Pack для NT; и это еще не предел: недавно вышел Service Pack - уже второй! - для Visual Studio 97, который гораздо объемнее: около 88 мегабайт, а для инсталляции нужно 300 с хвостиком; можно, правда, заказать его по почте на CD-ROM, но за $15 долларов плюс доставка), а в результате получаете лишь слабое утешение: ошибка не в вашей программе, а в чужой. Нет, погодите, это еще не все: вам предложат подождать следующей версии и (естественно) купить ее. Может быть, с ней у вас будет меньше проблем, а может быть, и нет (заранее это узнать практически невозможно). Вас никто не спрашивает, нужны ли вам дополнительные возможности новой версии (вероятно, совсем нет), но выкладывать свои кровные все равно придется. Как вам такая перспектива? Плюс к этому из новых версий зачастую таинственным "пропадают" некоторые возможности (пример: импорт файлов с русским текстом, набранных в Microsoft Word for DOS; или поддержка Win32s в Visual C++).

Мало того, в продуктах Microsft есть ошибки, введенные туда _специально_. Не верите? А зря. Скептиков отсылаю к книжке "Programmer's Guide to Microsoft Windows 95" (Microsoft Press, ISBN 1-55615-834-3; $27.95, кстати), p.69 ("System Metrics"). По утверждениям авторов, эти ошибки существовали еще в ранних версиях Windows (имеются ввиду то ли 3.1, то ли ранние beta-releases Windows 95); потом их нашли, но к тому времени уже существовало большое количество приложений, их учитывающих. Чтобы никого не обидеть и сохранить "совместимость", их добавили снова. Кстати, даже и не думайте искать сведения об этих ошибках в стандартной документации (к SDK или Visual C++) - их там, естественно, нет и не было.


Как уничтожить конкурента


Конкуренция - вещь жестокая. Или ты, или тебя... Как выйти из игры победителем или хотя бы выжить? Казалось бы, самый эффективный способ - постоянно изучать рынок, следить за тенденциями его развития, делать то, что не смогли или не захотели сделать другие. Это нелегко, но тем не менее все учебники по маркетингу предлагают именно этот путь, выработанный годами.

Фирма Microsoft и здесь пошла своим путем ("One Microsoft Way"). Если она не может обогнать конкурента, она его просто покупает. Если покупка по каким-либо причинам не удается (уж больно антимонопольные законы мешают), то приходится все-таки разрабатывать собственный продукт и встраивать его в свою операционную систему или раздавать бесплатно (в крайнем случае, по бросовой цене). Неважно, что затраченные деньги не окупятся; главное - это заполучить пользователей, а дальше с ними можно делать все что душе угодно.

Мне по-человечески жалко Netscape. Слишком многие, как мне кажется, "переметнулись" в сторону Internet Explorer только потому, что он бесплатный, и эта тенденция сохраняется (уже к настоящему времени, по данным Microsoft, Explorer захватил от 25% до 50% рынка - см. Developer Network Journal, July 1997, p.17). Кстати, и слухи о давлении Microsoft на провайдеров Internet, поставляющих Netscape Navigator, мне не кажутся беспочвенными - это вполне в их стиле. Понятно, что на самом Internet Explorer'е Microsoft ничего не заработает (они ведь обещали его оставить бесплатным - "was free, is free and will be free", как сказал вице-президент Microsoft Брэд Сильверберг), но тут задумка совсем другая. Они же не альтруисты, в конце концов... Тратить столько денег (начиная с покупки Mosaic и заканчивая покупкой DimensionX и VXtreme, плюс собственные разработки, плюс реклама и т.д.) - и все просто для того, чтобы "изменить жизнь к лучшему"? Щас!

Нет, Explorer - это всего лишь трамплин, по которому можно запрыгнуть о-о-очень далеко. Смотрите: уже и Knowlenge Base переведена в формат, "доступный" только Explorer'у... Это только начало, дальше будет больше. Скажем, если вы попытаетесь установить Internet Explorer 3.02 или более ранний под Memphis (Beta 1), то у вас пропадет Active Desktop (это в лучшем случае). Кстати, это задокументировано в "Release Notes" к Memphis, но в файле формата Microsoft Word 97, а сам Word 97, согласно этому же документу, под Memphis практически неработоспособен... Да и Internet Explorer'ом 4.0 (во всяком случае, текущей beta-версией) тоже пользоваться невозможно: некоторые страницы (возможно, оптимизированные под Netscape Navigator) он показывает в совершенно невообразимом виде.

Можно даже ожидать, что стандарт ActiveX завоюет больше поклонников, чем Java. Лично мне Java совершенно не нравится (или во всяком случае нравится меньше, чем ActiveX), но дело не в этом. Microsoft берет деньги за Visual J++, но в то же время раздает Visual Basic (Control Creation Edition) опять-таки совершенно бесплатно, а также всячески поддерживает web-дизайнеров, помещающих ActiveX controls на свои страницы (подумаешь, проблемы с безопасностью - тоже мне, большое дело). Они могут себе это позволить - вложения обязательно окупятся в будущем, но вряд ли это можно назвать просто прозорливостью. Это удары ниже пояса. Бизнес есть бизнес, но всегда есть некоторые неписаные правила, которые принято соблюдать. Есть также такое понятие, как демпинг, и он никогда не считался явлением положительным.

Есть у Microsoft и другие, не менее интересные, средства борьбы с конкурентами. Скажем, не все SDK могут быть использованы с "чужими" компиляторами (без внесения большого количества изменений вручную; пример - Internet Explorer SDK); создавать драйверы для Windows опять-таки можно лишь пользуясь только средствами Microsoft (есть некоторые решения, предлагаемые третьими фирмами, такими как Vireo Inc., но они стоят очень приличных денег).

А ведь конкирурирующие продукты не так уж плохи - скажем, Borland C++ обеспечивает лучшую производительность на ряде тестов (например, на комплексном преобразовании Фурье), да и библиотеки OWL, по оценкам независимых экспертов, превосходят по ряду параметров MFC. А отказ Microsoft лицензировать MFC Borland'у (этот вопрос, справедливости ради надо заметить, возник перед выпуском Borland C++ 5.0, в который поддержка MFC была введена, но сами MFC включены не были из-за конфликта с Microsoft. К моменту выхода 5.01 проблема нашла свое решение)

Вы, кстати, заметили, сколько у Microsoft появилось новых продуктов за последние пару лет? Здесь есть все: от игрушек до серьезных программ трехмерного моделирования. Причем большинство разработок Microsoft может назвать собственными лишь с очень большой натяжкой - они были просто-напросто скуплены "на корню", в основном у небольших фирм.

Раз уж речь пошла об игрушках от Microsoft... Я вообще-то по натуре не игрок, но иногда люблю "побаловаться". Как-то решил поставить найденные на CD с Windows 95 OSR2 (beta) trial-версии игрушек Close Combat и Monster Truck Madness (MDM). Чуть не "нарвался".

Дело в том, что обе игрушки требуют драйверы, совместимые с DirectX 2.0. У меня на машине стояли самые свежие драйверы DirectX 3.0, взятые с web-сервера Tseng, и я был спокоен. Оказалось, зря.

Первая игрушка - Close Combat - при установке молчала как партизан, втихаря заменяя мои аудио- и видеодрайверы своими. Вторая - Monster Truck Madness - все-таки предупредила, что собирается DirectX переустановить, но зачем - я так и не понял; ведь драйверы только что уже были заменены первой игрушкой, в чем я убедился после перезагрузки.

Завесу тайны над этими манипуляциями приткрыл файл "readme.txt" от MTM. К сожалению, возможность прочесть его появилась только после полной установки, так как вышеупомянутые игры были записаны в виде самораспаковывающихся (и самоустанавливающихся) архивов - эдакий громадный exe-файл. Что внутри - неизвестно. (Замечу в скобках: Windows Explorer на страничке Version свойств этих файлов показывает: Win32 Cabinet Self-Extractor. Однако, все имевшиеся в моем распоряжении утилиты, включая оные от самой Microsoft как "кабинеты" эти файлы не распознали...)

Так вот что я там нашел (знал бы, где упасть, соломку подстелил бы):

"DirectX is a system component that allows for more efficient hardware access. To run, Monster Truck Madness requires DirectX 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 drivers automatically. In some cases, the latest video drivers from your video card manufacturer 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 a generic DirectX 2.0 driver. In some cases, this may result in a loss of the features that are specific to your video card."

Веселенькое дело! Что же такое "marked as DirectX 1.0 drivers" ("помеченные как драйверы DirectX 1.0")? Ну не встречал я такого термина, хотя документации перелопатил немало. Дело в том, что внуть драйвера всегда прописывается номер его версии, и эту величину совсем нетрудно прочитать и правильно интерпретировать. То есть драйвер либо версии 1.0, либо нет (прямо как осетрина первой свежести). А вот инсталляторы приняли за версию 1.0 сначала мои драйверы 3.0 (это я еще могу понять), а потом уже и свои собственные, которые точно должны быть 2.0! Напрашивается вывод, что ничего они не проверяют... Так зачем же огород городить?

А игрушки, кстати, оказались весьма посредственные. Только время потерял.


Новые технологии


Нет, я не буду убеждать вас в том, что "новое - это хорошо забытое старое" (тем более что это утверждение спорно). Давайте-ка лучше разберемся, что понимает под этим Microsoft...

Одной из отличительных черт технического прогресса является его "скачкообразность". Количественные изменения происходят до тех пор, пока не настает время уступить место качественным. Тактовую частоту нельзя повышать до бесконечности; рано или поздно придется что-то менять более кардинально (например, переходить на арсенид галлия). Так и с программным обеспечением: непрерывное добавление новых возможностей в программу улучшает ее лишь до поры до времени; наступает момент, когда она разрастается до немыслимых размеров и стремится захватить все имеющиеся в компьютере ресурсы. И тут уже надо искать новые подходы, реализовывать свежие идеи. Вот именно с реализацией идей в империи Билла Гейтса дела и обстоят хуже всего...

С моей точки зрения, все началось с OLE. Задумка, возможно, была хорошей, но реализовали ее из рук вон плохо, чтобы не сказать отвратительно. Я еще не видел ни одного OLE-сервера или контейнера, который работал бы "как надо". И это нельзя ставить в вину разработчикам: чтобы обеспечить совместимось своего продукта со всеми остальными (а именно ради этого OLE вроде как и задумывалось), им пришлось бы затратить такое количество усилий, что расходы перекрыли бы доходы во много раз. Даже собственные продукты Microsoft не безгрешны в этом отношении: знакомой мне команде разработчиков из фирмы IzoSoft пришлось "подстраивать" свой OLE-сервер индивидуально под каждую программу из набора Microsoft Office, чтобы обходить имеющиеся там ошибки. А теперь еще и ActiveX, и DCOM... Новые стандарты - новые ошибки.

Моим основным занятием в жизни является написание программ, и я прекрасно знаю, насколько трудно иногда бывает удержаться от соблазна думать только "о себе", то есть не брать в расчет то, что многие пользователи любят многозадачность, имея при этом не слишком много памяти и не самый быстрый процессор. Куда как проще и удобнее не утруждать себя оптимизацией, а держать все данные в памяти (часто еще и забывая ее потом освободить). Как гласит один из законов Мерфи: если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший дятел уничтожил бы цивилизацию... Вам не приходит в голову, как появился на свет этот афоризм?

А plug-n-play? Тоже, вроде бы, неплохая идея. Вот только когда в компьютере установлено больше одной платы, соответствующей этой спецификации, обычно начинаются проблемы. Особенно когда у вас мало свободных каналов IRQ и DMA - Windows 95 начинает их распределять по-своему, руководствуясь мало кому понятными соображениями. Особенно "весело" бывает, когда на последнем этапе загрузки остаются две платы и два прерывания, но драйвер одной из плат хочет получить одно из них - вполне определенное и фиксированное, но его захватывает "успевший раньше" второй драйвер, и в результате у вас одному из устройств прерывания все-таки не хватает, при том что остается одно лишнее, и исправить эту ситуацию можно, только хорошо разбираясь в тонкостях загрузки драйверов и структуре Registry (которая, к слову, задокументирована очень слабо). Согласен, тут и сами драйверы в какой-то мере виноваты, но и с Microsoft снимать вину нельзя. Так что я с недавних пор полюбил старые добрые legacy-карты, и при покупке новой всегда спрашиваю продавца, можно ли отключить режим PnP и поменять прерывание вручную, переставив перемычку... Экономится куча времени, знаете ли.

Заслуживают "доброго" слова и спецификации Microsoft, якобы призванные облегчить жизнь пользователей. Вот вечно кто-то желает обо мне позаботиться, когда я сам этого совсем этого не хочу... Чего стоят хотя бы рекомендации Microsoft о том, что программы должны хранить все настройки в Registry, а разделяемые DLL сбрасывать в многострадальную директорию System? Я люблю устанавливать всяческие небольшие утилиты - в основном freeware и shareware, набранные в Internet (кто не грешит подобной страстью к коллекционированию, пусть первым бросит в меня камень), и каждые несколько месяцев приходится вычищать множество файлов вручную, так как даже самый грамотный uninstall (написанный, опять же, согласно вышеупомянутым рекомендациям) не всегда может определить, понадобится ли кому-то еще какой-то конкретный файл или нет (иногда он спрашивает об этом меня, но я зачастую в силах ответить однозначно правильно). С Registry еще хуже: даже собственные продукты Microsoft не любят ее после себя "убирать", а что-либо менять там вручную малоопытным пользователям лучше не стоит. Тем более, что и утилита ERU (emargency recover utility) работает крайне плохо.


Документация


Российский программист - существо неизбалованное. Ни высокими заработками, ни качественной документацией. Несколько лет назад легальные программные продукты вообще практически не были доступны, и осваивать их приходилось по help'ам, а также методом проб и ошибок.

Если же вы заплатили за программу приличную сумму, то вправе рассчитывать на хорошее и подробное описание. Помню, я как ребенок радовался документации на свой первый законно купленный продукт - Borland C++ 2.0. Толстые книжки в красивой глянцевой обложке - это завораживало. Там было все: и как устанавливать продукт, и как его запускать, и как разбираться в ошибках, и как использовать примеры... Блеск!

А недавно приобрели Visual C++. Взвесив в руках коробку, я сразу понял, что что-то не так - уж больно она оказалась легкой. И ожидания меня не обманули: внутри (кроме CD-ROM) оказалось лишь малополезное руководство пользователя совсем небольшого объема. Ну да, справочная система, конечно же, имеется. В формате под новый InfoViewer, интегрированный с Internet Explorer'ом 3.02. Который, в свою очередь, с очень большим скрипом устанавливается под NT 4.0 (при этом меньше чем с тридцатью двумя мегабайтами вам просто делать нечего; а лично я рекомендую 48 или даже 64, иначе будете изнывать от безделья во время загрузки); есть также вероятность, что вам вообще придется всю систему переустанавливать. Кстати, смену InfoViewer'а представители Microsoft обосновывают тем ("Our view on the new viewer" by Eric Peterson; MSDN News, p.2), что теперь на компьютере можно иметь всего один browser - догадываетесь, какой?

Да, кстати: сам по себе help ни по одному из продуктов Microsoft не выдерживает никакой критики. Ошибок масса (а в новой оболочке появились и новые проблемы: скажем, переход по ключевому слову - простейшая операция - реализован почему-то на Java и не всегда работает, показывая длинное и малопонятное сообщение об ошибке). Windows Developer's Journal даже выпускает (регулярно) исправления, описывающие неточности в подсказках. Правда, теперь им придется туго, так как эти исправления были рассчитаны на "старый" формат Windows Help, который Microsoft'ом уже почти не поддерживается...

Так что за хорошей документацией придется (опять же) идти в Internet, а то и в книжный магазин, где сройными выстроились книги издательства Microsoft Press в ярких обложках, так и жаждущие опустошить ваш карман. Вполне возможно даже, что не удастся обойтись и без покупки дополнительного продукта (наглядный пример: в Access 95 есть возможность использовать Windows API, но описания соответствующих функций, типов данных и пр. предлагается взять их Access Developer's Toolkit, который стоит в несколько раз дороже).

А пробовали найти нужную вам информацию на сайте Microsoft? На редкость увлекательное занятие. Такое ощущение, что его делали профессиональные дизайнеры (сколько там красивых картинок и анимаций - не счесть!), ни сном ни духом не ведающие о проблемах программистов. Как вы думаете, например, где находится документация по формату "кабинетов" (файлы с расширением CAB)? Могу открыть секрет: в разделе "Introduction to Cabinets: A New Way to Distribute Java Classes". Причем распологающийся там же SDK рассчитан на язык C/C++. Кто-нибудь может мне объяснить, при чем тут Java? Пример, к сожалению, не единственный.

Очень неплохая документация по Windows 95 и Windows NT, кстати, входит в Resource Kit. Там даже (сюрприз!) описаны многие ключи Registry. Только вот мне кажется, что это не слишком честно - продавать (пусть и за небольшие деньги) то, что по-совести должно было быть включено в стандартную поставку, ведь без многих утилит, входящих в этот набор, администрировать компьютер и разбираться в тонкостях конфигурирования практически невозможно... То же можно сказать и о пакете Microsoft Plus! - не считая Desktop Themes и бестолковой игрушки PinBall (чем-то подобным я последний раз занимался классе в пятом - похожие игральные автоматы стояли в советские времена в кинотеатрах), все остальные компоненты очень важны и нужны.


Заключение


Стремление Microsoft захватить господство на рынке программного обеспечения вполне понятно. Кому не хочется быть первым? Дело даже не только в деньгах, хотя и они играют далеко не последнюю роль. Мне кажется, идет борьба за почетное звание "законодателя мод", и у Microsoft начинает просматриваться мания величия. В принципе, даже и это не так плохо: мало кто из пользователей откажется от возможности иметь на своем компьютере все продукты только от одной фирмы; но только при условии, если они надежны, удобны в обращении, свободны от ошибок, без проблем интегрируются друг с другом и хорошо поддерживаются. А вот этого-то Microsoft'у как раз и не хватает. Работать надо, господа. Не время еще почивать на лаврах.

С автором можно связаться:

По e-mail: kitten@elcomsoft.com
Сайт компании: http://www.elcomsoft.com/



Наверх Письмо Web-мастеру