Программирование на Visual C++. Архив рассылки
Шрифт:
Никуда не делся от этого искушения и Microsoft. Все без исключения продукты этого производителя будут теперь иметь суффикс – «.Net».
Неважно, на сколько процентов продукт предназначен для Интернет. Можно сказать больше – в марку .Net вкладывается столько денег, что в один прекрасный день, чтобы объяснить молодому специалисту, что такое Интернет, ему скажут: "Интернет – это инфраструктура, предназначенная для запуска приложений и сервисов .Net". Вы думаете, я утрирую или шучу. Нисколько. Буквально за день, до того как сесть писать эту статью я слышал как ведущий радиостанции, по-моему, РДВ, заявил: "как хорошо все-таки, что Билл Гейтс придумал Интернет, а то я бы не смог получать ваши электронные письма…".
Ну да ладно. Пускай специалисты
Можно сказать, что VS.Net – это всего лишь новая версия VS – седьмая версия, но это не совсем так. Дело в том, что практически все составные части VS были полностью разрушены и выстроены заново. Короче говоря, Microsoft в очередной раз воплотил в жизнь принцип: МЫ НАШ, МЫ НОВЫЙ МИР ПОСТРОИМ… Но в отличие от прошлых разов, когда Microsoft в целях строительства нового (своего нового) мира разрушал миры своих оппонентов, в этот раз Microsoft, на первый взгляд, разрушил свой, причем уютненький такой мирок. Так что предпосылка "кто был ничем" не срабатывает ;o).
Что это, агония?
Но, приглядевшись внимательнее, понимаешь – просто Гейтс и другие великие стратеги из Microsoft почувствовали, что рынок на перепутье. Причем перепутье не технологическом, а психологическом. Новое общество, формируемое под воздействием Интернета и глобализации экономики, нуждается в интегрирующем и стандартизирующем начале. Многие продали бы маму родную за то, чтобы стать этой самой интегрирующей силой.
Недавно обратил внимание на незакрытое окно броузера, в котором была открыта статья с русскоязычного сайта Sun Microsystems под названием , аж в четырех частях. В ней планомерно доказывалась, что UNIX (и особенно Linux) лучше, чем NT, по всем показателям (одно только осталось непонятным, а если все так, как говорится в этой статье, почему весь мир не сбежал на UNIX с этой никчемной NT). Практически вся статья построена на демагогии, и она даже не заслуживала бы упоминания, если бы ни одно . В этой статье давался подробный список недочетов, допущенных Microsoft в NT 4. Забавно, но это именно те недочеты, которые были устранены в 5-й версии (Windows 2000). Из всего упомянутого, по-моему, только отсутствие в поставке серьезного mail-сервера осталось не исправленным.
Та же история и со вторым конкурентом – с Oracle. Его маркетинг во многом строился на критике Microsoft SQL Server. Временами казалось, что специалисты из Oracle попросту подрабатывают бета-тестерами у Microsoft. И что в итоге? В первую очередь в SQL Server 2000 были внесены те исправления и замечания, о которых говорил Oracle.
Причем чем больнее задевают Microsoft, тем больше вероятность, что следующая версия продукта выбьет колючие аргументы из рук оппонентов.
Та же ситуация складывается и со средствами разработки. Похоже, Microsoft внял критике, звучавшей со всех сторон, и решил разрушить все созданное им за весь период существования. И делается это отнюдь не из мазохистских побуждений. Просто Microsoft хочет одним махом подчистить весь "баг-лист", любезно предоставляемый конкурентами и прочими доброжелателями. Складывается впечатление, что менеджеры проектов в Microsoft не знают одну из поговорок программистов: "старый баг лучше новых двух". Хотя перед выходом SQL Server, сначала 7.0, а потом и 2000, злые языки болтали, что ввиду больших переделок ядра SQL Server окажется глючным, вследствие чего непригодным для решения ответственных задач, а вышло все наоборот. Но тогда изменения были все-таки не такими глобальными, да и бета 1 была уже полностью работоспособной. Бета 1 VS.Net же работоспособной назвать можно, но глюков в ней предостаточно.
Ну да ладно. И что ж за баг-лист такой, что необходимо все создавать заново?
1. Отсутствие собственного реально переносимого между платформами стандарта (типа Java).
2. Слабая интеграция имеющихся (ну, может быть, за исключением InterDev)
3. Сложность, неоднозначность и другие недостатки имеющейся компонентной модели (COM).
4. Разный уровень интеграции средств разработки с COM и "напряженность между базовыми концепциями языков программирования и COM-ом".
5. Увеличивающаяся популярность Java в ущерб популярности VB, фаворита от Microsoft.
Нет никакой ошибки в том, что в список недостатков два раза попали упоминания про Java. Политические и экономические аспекты в современном мире всегда главенствовали над технократическими.
Что же придумал Microsoft для решения этих, а заодно и других, более мелких проблем? Microsoft придумал очень много рекламных терминов, главным по частоте звучания, несомненно, является .Net, но действительно главным, можно сказать, поворотным является CLR и основанный на нем .NET Framework.
.NET Framework – это среда для создания, распространения и исполнения как обычных, так и Web-приложений. Она состоит из двух частей – Common Language Runtime и Framework-классов. В VS.Net Web– приложения получили особый статус. Теперь можно как создавать ASP-приложения, так и использовать новую идеологию Web-сервисов. Все эти новаторства объединены под общим названием ASP.NET, и подразумевают, что для создания приложений будут использоваться CLR-совместимые языки. Однако Web-приложения можно создавать и на старом добром C++. Для этого в VS.Net был добавлен новый ATL-шаблон – ATL Sever. Это шаблон, позволяющий создавать приложения а-ля ASP, но на C++. Доступ к Интернет-серверу осуществляется через специально созданный для ATL Sever ISAPI-фильтр. Собственно ASP.Net – это, грубо говоря, тоже ISAPI– фильтр, но с большей рекламой.
.NET Framework позволяет создавать замечательные web-приложения. Но он применим и для создания обычных десктоп– приложений. Если вы пишете любое ПО для Windows (используя ATL/COM, MFC, Visual Basic или просто стандартное Win32), вы найдете в .NET немало достоинств.
Для улучшения взаимодействия между языками в Microsoft .NET Framework введён языковый стандарт, Common Language Specification (CLS). CLS – это поднабор свойств языка, поддерживаемых CLR, и включающий свойства, общие для большинства объектно-ориентированных языков программирования. Если вы хотите, чтобы ваши компоненты и элементы управления можно было использовать из других языков программирования, их нужно создавать на CLR-совместимом языке, и обеспечить совместимость всех общих и частных членов с CLR.
Изначально Microsoft включает в поставку VS.Net компиляторы для C#, Visual Basic, Managed C++ (MC++) и JScript. Сторонние разработчики уже создали .NET-компиляторы для других языков, включая: Java (Rational), Eiffel (Interactive Software Engineering and Monash University), Perl (ActiveState), Python (ActiveState), Scheme (Northwestern University), Smalltalk (Quasar Knowledge Systems), Cobol (Fujitsu), Component Pascal (Queensland University of Technology), APL (Dyalog), Standard ML (Microsoft Research– Cambridge), Mercury (University of Melbourne) и Oberon (ETH Zentrum). В спорах между COM и CORBA приводились аргументы о количестве применимых языков, но ни та, ни другая технология и близко не подходили к списку такой длины. А ведь это только начало!
Мало того, с помощью входящих в поставку библиотек можно даже создать свой CLR-совместимый язык программирования, который будет генерировать исполняемые модули. В качестве примеров поставляются три прототипа языков: smc (настоящий компилятор Managed C++, несколько упрощенный, но все же), MyC (ограниченная реализация языка C), и CLisp (ограниченная реализация языка Lisp). Интересно, что smc – это C++-проект, который компилируется на VC 6. В его readmе сказано, что в релиз-версии он будет компилироваться как на нормальном компиляторе C++, так и на самом себе! Есть пример отладчика командной строки и профайлера. Судя по всему, нас ждет увлекательный год!