.NET - шаг в будущее?
В последние время Microsoft ведет активное наступление на рынке систем программирования, все более оттесняя других производителей ПО в этой области. Новая версия Visual Studio, флагман Майкрософт, этому яркое подтверждение. Другие фирмы просто не успевают за новвоведения этой Майкрософт, которые за короткое время становятся стандартом. Технологию .NET (читается "дот-нэт"), по-видимому, вскоре ждет такая же судьба. Другим фирмам также придется поддерживать эту платформу, поскольку, скорее всего она будет включена в стандартную поставку Windows, хотя таких планов официально не намечается. Так фирма Борланд уже выпустила седьмую версию Делфи, самой главной новинкой в которой является поддержка .NET. Что же представляет из себя .NET. Дэвид Платт, чью книжку "Знакомство с Microsoft .NET" я рекомендую вам прочитать, предлагает такое определение: "Microsoft .NET - это прикомпоновываемая среда периода исполнения, работаящая в ОС Windows 2000". Круто звучит не правда ли? Разбираем по слогам и начнем с конца. .NET будет работать только под W2k, так что уже сама Майкрософт признает, что Windows 98 must die! Итак, чтобы ощутить всю прелесть новой технологии понадобится Windows 2000. "Прикомпоновываемая среда периода исполнения" значит, что теперь компиляторы будут переводить код языка высокого уровня, например VB, в некий MSIL - промежуточный язык низкого уровня, наподобе ассеблера. Далее уже в период исполнения, когда вы запускаете программу, специальный компилятор переводит инструкции языка MSIL в инструкции специфичного процессора. Таким образом, для программ .NET создается как бы виртуальная машина (у вас не возникает чувства "где-то это я уже видел"?).
Преимущества .NET не заканчиваются, а только начинаются. Visual Studio .NET поддерживает VB, C++ и новый язык С#, о котором далее. И эти языки не просто поддерживаются, но и в полной мере взаимодействуют между собой, используя ООП. Например, мы можем создать программный комплекс типа клиент-сервер, причем клиент будет написан на VB, а сервер на C#. Кроме того сторонними производителями создана .NET-компиляторы для других языков, из которых мне прежде всего интересны Pascal и Perl. Так что теперь языки программирования интегрированы между собой более тесно, чем в технологии COM.
Также в распоряжении программиста имеется система .NET Framework, представляющая собой богатейший набор стандартных классов. Кроме того, она обеспечивает автоматическую сборку мусора (имеется ввиду неиспользуемой памяти) и контроль версий. На мой взгляд это очень удобно, так как, переходя на другой язык программирования, не надо заново изучать иерархию классов.
C - это один из моих любимых языков программирования. Так что я не могу не сказать пару слов о новом языке программирования C# (читается "Си-шарп"), которому, надеюсь, посвятить отдельную статью. Не раз во времяя написания программы на C++, я долго выругивался по поводу того, как организована в этом языке модульность. Теперь всяким там заголовочным файлам пришел конец. Поддержку модульного программирования призваны обеспечить пространства имен (namespaces). Для работы с событиями служат делегаты, которые заменяют указатели функций, так как для безопасности от них пришлось отказаться. Также программисты Майкрософта отказались от множественной наследовательности в классах, хотя в интерфейсах данная возможность осталась. Но по сути этот язык является полностью объектно-ориентированнным: в нем со всеми типами можно работать, как с объектами. Больше не существует и главной функции main, зато появился статический метод Main, как в Java, который теперь является точкой входа в приложение.
Теперь ложка дегтя. А не пострадает ли от компиляции во время исполнения производительность программ. По заверениям Майкрософт, уменьшения производительности будет всего лишь 1-2% для офисных приложений. Хотелось бы верить... Но все-таки такая схема наводит на кое-какие сомнения.
Еще пару слов о чувстве дежавю. Майкрософт всегда славилась тем, что впитавала хорошие идеи своих конкурентов, хотя это, наверное, плюс. Идея виртуальной машины явна взята из идеологии Java, а новые версии языков VB и C# также смахивают на этот язык. Хотя опять же плюс это или минус можно спорить до потери голоса. А нормальное ООП для всех языков программирования это скорее исправление старых ошибок и недоделок в COM.
Вместо итога, хочется сказать, что .NET - это шаг в прошлое, но очень нужный и важный. В .NET доведены до ума многие моменты, которые вызывали многочисленную критику продукции Майкрософт в области разроботки программного обеспечения.
Преимущества .NET не заканчиваются, а только начинаются. Visual Studio .NET поддерживает VB, C++ и новый язык С#, о котором далее. И эти языки не просто поддерживаются, но и в полной мере взаимодействуют между собой, используя ООП. Например, мы можем создать программный комплекс типа клиент-сервер, причем клиент будет написан на VB, а сервер на C#. Кроме того сторонними производителями создана .NET-компиляторы для других языков, из которых мне прежде всего интересны Pascal и Perl. Так что теперь языки программирования интегрированы между собой более тесно, чем в технологии COM.
Также в распоряжении программиста имеется система .NET Framework, представляющая собой богатейший набор стандартных классов. Кроме того, она обеспечивает автоматическую сборку мусора (имеется ввиду неиспользуемой памяти) и контроль версий. На мой взгляд это очень удобно, так как, переходя на другой язык программирования, не надо заново изучать иерархию классов.
C - это один из моих любимых языков программирования. Так что я не могу не сказать пару слов о новом языке программирования C# (читается "Си-шарп"), которому, надеюсь, посвятить отдельную статью. Не раз во времяя написания программы на C++, я долго выругивался по поводу того, как организована в этом языке модульность. Теперь всяким там заголовочным файлам пришел конец. Поддержку модульного программирования призваны обеспечить пространства имен (namespaces). Для работы с событиями служат делегаты, которые заменяют указатели функций, так как для безопасности от них пришлось отказаться. Также программисты Майкрософта отказались от множественной наследовательности в классах, хотя в интерфейсах данная возможность осталась. Но по сути этот язык является полностью объектно-ориентированнным: в нем со всеми типами можно работать, как с объектами. Больше не существует и главной функции main, зато появился статический метод Main, как в Java, который теперь является точкой входа в приложение.
Теперь ложка дегтя. А не пострадает ли от компиляции во время исполнения производительность программ. По заверениям Майкрософт, уменьшения производительности будет всего лишь 1-2% для офисных приложений. Хотелось бы верить... Но все-таки такая схема наводит на кое-какие сомнения.
Еще пару слов о чувстве дежавю. Майкрософт всегда славилась тем, что впитавала хорошие идеи своих конкурентов, хотя это, наверное, плюс. Идея виртуальной машины явна взята из идеологии Java, а новые версии языков VB и C# также смахивают на этот язык. Хотя опять же плюс это или минус можно спорить до потери голоса. А нормальное ООП для всех языков программирования это скорее исправление старых ошибок и недоделок в COM.
Вместо итога, хочется сказать, что .NET - это шаг в прошлое, но очень нужный и важный. В .NET доведены до ума многие моменты, которые вызывали многочисленную критику продукции Майкрософт в области разроботки программного обеспечения.