Написать этот текст меня сподвигла статья Виталия Гриненко "Моё первое впечатление о 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