| ..: .NET или Кому это надо? :.. |
Автор: Arhangel
Источник: Клуб программистов "Весельчак У"
Несмотря на то, что платформе .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 будут рассмотрены позднее.
При перепечатке любого материала с журнала или с сайта,
видимая ссылка на источник
http://altwebdeveloper.nm.ru
и все имена, ссылки авторов обязательны.
© 2004 CAS "altDesign"
© Валерий В. Макеев (deepInfinity)
|