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

C. Это сам по себе очень красивый язык, но и в нем есть некоторые неудобства. Начнем с того, что он достаточно непрост в изучении. Ведь в C программист должен сам управлять памятью и указателями, что для начинающего весьма непросто. Если же Вы опытный программист, то возникает сложность с отладкой кода: попробуй найди ошибку в программе, которая напрямую вызывает тысячи API функций! Плюс ко всему недостаточные возможности по использованию объектно-ориентированного программирования.

C++/MFC. Очень мощная система, но опять же встает вопрос об обучении. Легче язык не стал, что многих начинающих просто отпугивает. И они переходят на Бейсик. Но о нем чуть ниже. Безусловный шаг вперед - это возможность использования преимуществ объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм). Однако MFC - это всего лишь надстройка над WinAPI, так что программисту все равно приходится зачастую разбираться в сложном коде, откуда вероятность ошибок существенно возрастает.

Visual Basic. Исторически сложилось, что этот язык пользуется у программистов дурной славой. И в общем-то это правильно. Basic очень прост. Сначала это привлекает, но при ближайшем рассмотрении... За простоту приходится расплачиваться возможностями языка. Главное, что Basic - это не объектно-ориентированный язык (хотя так думают очень многие программисты, пишущие на Basic), а язык "для работы с объектами". Не поддерживаются классическое наследование, многопоточные приложения и много-много чего другого.

Java. Это полностью объектно-ориентированный язык с очень элегантными синтаксическими конструкциями. Программировать на нем не только эффективно, но еще и эстетически приятно. Однако и здесь не избежать некоторых проблем. Главная из них - отсутствие межъязыкового взаимодействия в полном смысле этого слова. Да, существует такая вещь, как JNI (Java Native Interface). Этот интерфейс позволяет программам, написанным на другом языке программирования, взаимодействовать с Java. Но и здесь есть некоторые ограничения. Главный недостаток JNI состоит в том, что при его использовании теряется суть идеи WORA (Write Once, Run Anywhere), поскольку любой native-код прочно связывает Java-приложение с какой-либо платформой. К тому же JNI - это набор API только для C/C++, остальные же языки остаются в стороне. Маленькое лирическое отступление: на сайте java.sun.com случайно прочитал такое высказывание: By writing programs using the JNI, you ensure that your code is completely portable across all platforms. Напомню, при использовании native-кода кроссплатформенность теряется, в свете чего не совсем понятно последнее утверждение приведенной выше цитаты.

COM (Microsoft Component Object Model). Эта технология позволяет частично скрыть недостатки, связанные с переносимостью кода. Безусловное преимущество COM - к COM-объектам можно обращаться из любых других языков программирования. Казалось бы, проблема решена! Ан нет. В COM не реализовано наследование, так что каждый компонент "мертв", от него не может произойти ни один класс. Напрашивается ответ: "Так напишите же новый класс!" И вот теперь начинаются настоящие неудобства. Каждый компонент COM - как ящик Пандоры. Его устройство довольно сложно и на обучение написанию собственных COM-объектов уйдет несколько месяцев.
Интернет-программирование. Вы скажите: "А в чем проблема? Ведь каждый язык сделан под свои конкретные нужды и отлично исполняет работу в своей области! Зачем что-то менять?" Все правильно, если забыть о такой мелочи, как Интернет. Современный Интернет-программист должен знать ASP, HTML, XML, JavaScript, VBScript, COM, COM+, ADO и т.д. И здесь опять-таки возникает проблема взаимодействия между языками. И проблема довольно серьезная. Ведь тип данных int это не то же самое, int в C, который в свою очередь отличается от integer и Visual Basic. И как же быть?

Решение .NET
Что же позволяет .NET?
1. Полное взаимодействие с существующим кодом. Кстати, файлы .NET отлично уживаются с компонентами COM.
2. Полное межъязыковое взаимодействие. Поддержка межъязыкового наследования, отладки и обработки исключений.
3. Общая исполняемая среда. Неважно, на каком языке создана программа - среда выполнения одна и та же. Главное преимущество - общий набор типов данных.
4. Библиотека базовых классов. Она обеспечивает сокрытие вызовов WinAPI и, соответственно, избавление от многих тонких и неприятных моментов.
5. Упрощение развертывания приложений. При развертывании больше нет необходимости редактировать реестр.

Детально возможности .NET будут рассмотрены позднее.

Автор: Archangel
Information
  • Posted on 31.01.2010 22:01
  • Просмотры: 357