Написать
этот текст меня сподвигла статья Виталия Гриненко "Моё первое впечатление
о VB7" [1]. Это одна из немногих статей о .NET на сайте vbnet.ru, и
резко негативная по отношению к новой технологии. Мне хотелось
бы выразить свое, причем совсем не первое впечатление о продукте,
который так резко "охаяли". Я прошу Виталия не воспринимать
мою статью как выпад в отношении его лично или его профессионализма.
Статью В.Гриненко можно разделить на три части. Это впечатления
об установке Visual Studio .NET, впечатления от интерфейса
и впечатления от переноса простейшей программы из VB6 в VB.NET.
Как мы видим, в целом все впечатления - негативные. Проблемы
при установке, непривычный ("сишный") интерфейс, какой-то лишний
код появившийся при переносе, ну и конечно безрадостные перспективы... Попробуем
разобраться.
Сначала
о терминологии
В
статье Виталия используются слова VSN, VN и даже VB-VN.
На мой взгляд, всегда стоит придерживаться общепринятых сокращений:
VB Visual Basic (как некое семейство продуктов)
VS Visual Studio
VB6 Visual Basic версии 6, входит в состав Visual Studio 6
VB.NET Visual Basic .NET (иногда также применяют сокращение VB7)
VS.NET Visual Studio .NET
Далее, как мне кажется, основная ошибка в том чтобы при переходе
к VB.NET рассматривать этот переход ТОЛЬКО в контексте VB.
Этот контекст здесь занимает далеко не основное место (хотя
у VB-программиста и возникает желание сделать его основным).
Начинать надо с того что .NET - это новая платформа, т.е. новая
среда исполнения приложений. Эту среду обеспечивает .NET Framework, который
сейчас поставляется в виде отдельного инсталлятора, а скоро будет вообще
входить в состав Windows (в частности, в готовящуюся к выпуску
Windows NET Server).
На данный момент практически нет приложений, целиком написанных
на .NET, но думаю что скоро они появятся (одна из первых
ласточек - появление драйверов для Matrox Parhelia, интерфейс
пользователя к которым написан на .NET - см. [5]). Вероятно,
со временем большая часть стандартных приложений Windows будет
переписана под .NET...
Новая среда исполнения предлагает свою библиотеку - своего рода
API - Common Language Runtime (CLR). (Не берусь судить насколько
она хороша или плоха, ибо нахожусь в процессе ее изучения.)
Требования к компиляторам с языков программирования, с которыми
нам нужно работать, заключаются в том чтобы они компилировали
исходный код в Microsoft intermediate language (MSIL) и использовали
CLR (если говорить точнее, каждый такой компилятор должен соответствовать
Common Language Specification - CLS).
Получается, что на каком бы языке ты не писал, ты пользуешься одними
и теми же библиотеками, составляющими CLR. Тем самым языки значительно сближаются:
различия сводятся по сути лишь к набору абстракций, предлагамому языком,
и синтаксису. Перенос программ между языками значительно упростится, переход
от одного языка к другому для самого программиста - тоже. В настоящее
время этот ряд языков составляют VB.NET, C#, C++, JScript и J#
- все это от MS, плюс к тому - продукты сторонних производителей.
Таким образом, VB в .NET теперь выступает лишь в качестве одного
из множества языков. В Microsoft его постарались сделать
похожим на VB6 настолько, насколько это только возможно.
Очевидно, это преследует цель облегчить как переход от VB6
к VB.NET для программистов, так и перенос написанного на VB6
кода. Кстати, под влиянием общественности MS сохранила в VB.NET
некоторые особенности, от которых собирались избавится (например,
в VB.NET сохранено полное вычисление условных выражений -
многим не понравилось что в бета-версиях части логических
выражений вычислялись как в C/C++ - по необходимости).
Установка
Visual Studio .NET
Единственный нормальный дистрибутив что я видел, занимает 7 CD.
Если в вашем дистрибутиве их меньше - значит к лицензионному
дистрибутиву он имеет весьма отдаленное отношение - что-то
выброшено и/или все сжато в архивы (что совсем не помогает
при установке).
Прежде чем запускать инсталлятор, убедитесь что ваша машина потянет
этот продукт. Не скажу точно, но думаю что 600MHz-процессор
и 256Мб памяти - это минимальные требования для комфортной
работы. Приготовьте порядка 1.5-2Гб на винчестере под VS
и MSDN. Не стоит ставить VS.NET на Windows 98 (не уверен что это
вообще возможно, да и Windows 98 уже несколько "мала" для такой
машины).
Весь процесс установки занимает один час. Сначала - Component
Update с диска #5 - обновление ОС и приложений, установка
.NET Framework. Советую все необходимые Service Pack'и поставить
ручками до установки VS.NET. Сам процесс установки на моей
памяти всегда проходил довольно гладко.
Не беспокойтесь за старый добрый VB6 - после установки VB.NET
обе среды нормально работают как вместе так и отдельно.
Интерфейс
VS.NET
Microsoft давно стремилась унифицировать интерфейс различных сред
разработки в нечто единое. В VS6 к этому ближе всего подошла
среда Visual InterDev. Теперь же, когда среда должна позволять
редактировать в разных окнах код на разных языках, вообще
не имеет смысла делать для них различные IDE. Неприятность заключается
в том что среда разработки стала намного тяжелее. Кроме того
она еще и довольно таки прожорлива по отношению к памяти (причем отдавать
память она тоже не очень стремится, в результате чего работающая несколько
дней MS Development Environment может забрать под себя всю доступную память).
Несмотря на некоторую задумчивость в работе, можно сказать что
среда разработки стала удобнее. Скользящие окошечки быстро
надоедают, но все это легко настраивается под себя, набор
опций также весьма обширен. Работать с проектом в команде тоже
стало гораздо приятнее - интеграция с Visual SourceSafe сделана
лучше чем в VB6.
При запуске проекта действительно происходит компиляция - отладчик
работает только с готовым кодом, и ему не важно на каком
языке написан его исходник. Из средств отладки меня порадовало
окошко Quick Watch - по сравнению с убогим окошком того же
названия в VB6 - это настоящий прогресс.
В целом, на мой взгляд, в новой среде писать и отлаживать приложения удобнее,
если конечно ваша машина ее потянет.
VB.NET-приложение
Возвращаясь к статье Виталия - что же у нас получилось при переносе простейшего
приложения? Авторский код (те семь строк что написал Виталий)
на самом деле остался неизменным. В vb-файл добавилось два
региона ("Windows Form Designer generated code" и "Upgrade
Support"), которые обычно закрыты и не видны при редактировании.
Как нетрудно заметить, первый регион описывает создание контролов
и задание их свойств (а также свойств самой формы). Дизайнер
показывает этот самый код в графическом виде, и позволяет графически же
его редактировать. То есть теперь нет frm-файлов - облик формы
описывается в виде команд в одном файле с кодом.
Такой же подход принят, например, в библиотеке Swing для Java
- там тоже облик формы описывается в виде кода. Чем это лучше?
Да тем что вы теперь четко контролируете, что именно вы нарисовали,
и можете все поправить ручками.
Что
касается второго региона ("Upgrade Support") - очевидно что он
появился только из-за того что программа была перенесена
из VB6. Если создать такое же приложение прямо в среде VB.NET,
этого региона просто не будет.
Распространение
.NET-программ
Чтобы ваша программа, написанная под .NET, работала на другой
машине, вовсе не нужно тащить за ней VS.NET. Достаточно установить
туда .NET Framework и компоненты, специфичные для вашей программы.
Объем .NET Framework версии 1.0 - 21Мб (а вовсе не сотни
мегабайт - по словам Виталия). Последний Service Pack для
.NET Framework (это SP2) имеет объем 6.7Мб. При желании можно
интегрировать .NET Framework в инсталлятор вашей программы.
Заключение
Переход на .NET очень напоминает мне (и не только мне, кстати
- см. [4]) переход от DOS к Windows несколько лет назад.
Нас ждут примерно те же самые проблемы и задачи:
- смена програмного окружения;
- смена концепций;
- смена среды разработки;
- изучение нового API большого объема;
- изучение нового языка.
С одной стороны, не стоит все бросать и заниматься только .NET
- изучение новой технологии может дать выигрыш только в перспективе.
Но с другой стороны, если вы возьметесь за изучение этой технологии
сейчас и всерьез - скоро вы окажетесь впереди многих и многих
программистов, вставших перед необходимостью изучения
.NET в кратчайшие сроки.
VB6 был и остается отличным средством создания приложений. Очевидно,
что переход к новой платформе будет совсем не резким и затянется
на много лет. В настоящее время (насколько я могу видеть) из всего
что предлагает .NET используется в основном ASP.NET (как
мощная замена ASP для написания веб-приложений) и Web Services
(как средство интеграции приложений).
Что будет дальше - посмотрим...
Post Scriptum
Судя по второй статье Виталия (см. [3]), он вовсе не ярый противник
VB.NET, как мне показалось вначале. Скорее - очень (может
быть даже - слишком) ярый сторонник VB6. Анализ писем, пришедших
в ответ на первую статью Виталия, ярко выражает тот факт,
что в России о .NET знают мало. Можно сказать - практически вообще
не знают. И это - действительно печально...
Ссылки
[1] Гриненко
Виталий,
Моё первое впечатление о VB7
[2] Платт Дэвид С. Знакомство с Microsoft .NET
М.:"Русская редакция", 2001.
[3] Гриненко Виталий,
Мое второе впечатление о VB7
[4] Андрей Колесов, Ольга Павлова, Заключительные
cоветы тем, кто программирует на VB & VBA
Совет 448. Готовьтесь к VB .NET
[5] Дмитрий Чеканов,
Matrox Parhelia