Воспользовавшись проволочкой IBM, компания Compaq самостоятельно разработала новый компьютер, сохраняя совместимость с существующим парком программного обеспечения для PC и аппаратными платами расширения. Так в одночасье IBM превратилась из лидера в догоняющего. А догонять прогресс труднее, чем убежавшую электричку.
Самой популярной операционной системой нового компьютера по-прежнему оставалась MS-DOS, удерживаемая огромным количеством написанных для нее приложений, но пользователи уже начинали проявлять недовольство, - ведь подавляющая часть способностей 80386 оказалась невостребованной.
Устанавливая MS-DOS, потребители использовали Intel 80386 в режиме “быстрого 8086”, лишая себя таких вкусностей как виртуальная память и многозадачность. Приходилось платить не только за дорогостоящие микросхемы оперативной памяти, вместо того, чтобы использовать более дешевый диск, но и бороться за известный «барьер 640 килобайт», - лишь в этом адресном пространстве MS-DOS могла запускать исполняемые программы. Даже если на компьютере было установлено 2 или 4 мегабайта - «лишняя» память шла под виртуальный диск, дисковый кеш или могла использоваться приложениями для хранения данных, но не исполняемого кода.
Во времена создания первых версий MS-DOS величину «640 килобайт» никому бы и в голову не пришло назвать «барьером» - а если и барьером, то барьером недосягаемости. Но в конце восьмидесятых все изменилось - программы «жирели» на глазах и влезать в отведенные 640 килобайт становилось все труднее и труднее, а использование расширенной памяти вызывало недовольство программистов, замученных постоянными переключениями окон памяти (тот, кто сталкивался с этим - поймет). Господству MS-DOS предрекали скорый конец, - эта операционная система полностью самоисчерпалась, упершись в безвыходный тупик.
Позиция двух корпораций IBM и Microsoft становилась все более шаткой, - в любой момент конкуренты могли выбросить на рынок новую операционную систему. Совместимость с существующими приложениями день ото дня теряла свою актуальность - появление высокопроизводительных микропроцессоров, емких жестких дисков, мегабайтов оперативной памяти и быстродействующих графических контроллеров высокого разрешения, заставляли кардинально пересматривать требования к интерфейсу и возможностям программного обеспечения.
Как бы Microsoft ни хотела справиться с проблемой самостоятельно, у нее не было опыта создания многозадачных систем, а IBM никогда не умела угадывать потребности пользователей, и не имела влияния на рынке операционных систем персональных компьютеров. Поэтому, обе корпорации решили объединить свои усилия, заключив в апреле 1987 года договор на разработку операционной системы нового поколения, получившей впоследствии название OS/2.
Идея заключалась в создании масштабируемой операционной системы, пригодной как для персональных компьютеров, так и для майнофреймов. По замыслу IBM это привлекло бы корпоративных пользователей, раздумывающих, не перейти ли с майнфреймов на микрокомпьютеры, и программистов, получивших бы возможность простой перекомпиляций переносить свой продукт на другие платформы. У IBM существовал огромный опыт программирования «больших компьютеров» и имелось множество передовых технологий, не доступных остальным конкурентам.
Осознавая, что голая операционная система без приложений никому не нужна, какая бы распрекрасная она ни была, корпорация IBM планировала создать OfficeVision - совершенную систему полного электронного документооборота [136].
В свою очередь Microsoft стремилась обеспечить совместимость OS/2 с Windows, надеясь «выехать» на плечах гиганта. «Мы согласились участвовать в этом проекте, уверенные, что IBM позволит сделать OS/2 чем-то достаточно близким к Windows, чтобы программисты, внося минимальные модификации, могли предлагать приложения для обеих платформ. Но IBM настаивала, чтобы приложения были совместимы с ее майнфреймами и системами среднего класса. Мы поняли: OS/2 превращается в какого-то монстра, ориентированного скорее на майнфреймы, чем на персональные компьютеры» - писал Билл Гейтс в своей книге «Дорога в будущее».
Сейчас трудно установить, кто был прав, а кто виноват. Но, так или иначе, Microsoft вскоре решила отделиться от IBM и начала продвигать свою операционную систему Windows самостоятельно. По заверениям Microsoft, ее поступок был продиктован разногласиями с IBM по вопросам благополучия пользователей «И в прошлых “софтверных” проектах IBM никогда не удавалось точно угадать настроение пользователей ПК, потому что все у нее было ориентировано прежде всего на пользователей майнфреймов. Например, одна из версий OS/2 “грузилась” больше трех минут, а IBM казалось, что это неплохо, поскольку в мире майнфреймов загрузка занимает до пятнадцати минут…
До сих пор помню замечание N 221: “Убрать шрифты. Причина: улучшение конечного продукта” Кому-то в IBM не понравилось, что в операционной системе персональных компьютеров несколько шрифтов только из-за того, что какой-то там принтер от майнфрейма не мог ими печатать.
В конце концов стало ясно, что такое сотрудничество совершенно бесплодно» объяснял свою позицию Билл Гейтс. Но, по другой версии, Microsoft, получив необходимый опыт, поняла, что в дальнейшем сможет обходится и без поддержки IBM.
Так это или иначе, но 22 мая 1990 года Microsoft объявила о выходе Windows 3.0. Она все еще оставалась нестабильно работающей оболочкой для MS-DOS, требовательной к аппаратным ресурсам, но отличия от предыдущих версий были колоссальны. Привлекательный графический интерфейс, симпатичные иконки, поддержка большого количества разнообразных устройств завоевали сердца миллионов пользователей, и Microsoft стала первым поставщиком программного обеспечения для миникомпьютеров, объем продаж которого превысил 1 миллиард долларов в год.
В отличие от пользователей, для программистов Windows оказалась настоящим кошмаром, - продираясь сквозь дебри запутанной документации, они не раз жалели, что родились на свет, вспоминая Microsoft и лично ее президента очень крепким словом. Программирование под Windows концептуально отличается от программирования под MS-DOS. Операционная система MS-DOS «прозрачна» для разработчиков, вольных писать любой код, какой им заблагорассудиться, лишь временами обращаясь к системным вызовам, наподобие функции «открыть файл» или «запустить процесс». Любое приложение, предназначенное для запуска в среде Windows, должно следовать множеству соглашений и ограниченней, налагаемых этой операционной системой. В частности: непрерывно опрашивать очередь сообщений, реагировать на десятки происходящих событий, наконец, сложным образом манипулировать с окнами и другими элементами графического интерфейса, выполняя работу, которую по всем понятием должна брать на себя сама операционная система.
Нарушение или игнорирование любого из этих требований приводит к неустойчивой работе приложения и зависанию Windows. Но обиднее всего, что до трех четвертей усилий уходило на поддержку пользовательского интерфейса, и лишь небольшая толика кода занималась непосредственными вычислениями.
Решив не сходить с ума, программисты как могли затягивали переход на Windows, продолжая разрабатывать приложения для старушки MS-DOS. Вероятно, Microsoft предвидела такой поворот событий, поскольку не прекращала работу над MS-DOS, и 2 апреля 1990 года выпустила очередную, четвертую версию, поддерживающую уже до восьми мегабайт оперативной памяти. Усилиями трех компаний - Lotus, IBM, Microsoft был разработан новый стандарт расширенной памяти EMS, худо-бедно позволяющий приложениями использовать новые аппаратные возможности.