Softerra Компьютерра | Ferrа | Инфо-Бизнес | Домашний компьютер | Game.exe 
Softerra - лучший русский сайт о софте
Rambler's Top100

 Статья рубрики "Программазм"

Basic форева?

VB.NET: факты и впечатления.

[15.10.2002, Андрей Драница, axeon@inbox.ru]

Сразу отмечу некую провокационность подобных обзоров. С одной стороны, рассмотрение Visual Basic .NET в одиночку напоминает автотест новенькой машины при полном отсутствии конкурентов. С другой — сравнение нескольких (хотя бы двух) продуктов приводит к целым религиозным войнам, описанию которых место, скорее, в онлайновых форумах. К тому же ближайший конкурент — Delphi — уж больно популярен на просторах СНГ`овщины, так что тема "VB.NET vs Delphi" вызовет слишком жаркие споры. А посему я попытаюсь ограничиться простой констатацией фактов, перемежая ее своими субъективными оценками.

Другой язык

За все время погружения в VB.NET я испытал два вроде бы противоречивых чувства — разочарование и удовлетворение. Начнем с разочарования. Вооружившись томами документации и справочников и засев за новинку, я обнаружил совершенно другой язык. То, о чем так много говорили, все-таки произошло: старый язык разнесен в пух и прах, а пепел его развеян по ветру. Что представлял из себя VB до седьмой версии? Можно было сравнить его с чем-то вроде продвинутого калькулятора. По производительности и широте возможностей он, естественно, уступал Delphi и VC++, как уступает самый продвинутый калькулятор самой примитивной персоналке. Да и целей обогнать их не ставилось — VB позиционировался как простой в освоении и работе инструмент программирования простейших задач. Бейсик был чрезвычайным простым языком, так что примитивные приложения, даже по работе с базами данных, можно было сделать одной мышкой (т.е. буквально не касаясь клавиатуры). Программа могла состоять из пары строк — никакой предварительной подготовки, код ложился так, как «шла мысль». В этом-то и заключалась сила VB: по скорости создания приложений он был абсолютным лидером. К сожалению, VB.NET в этом смысле переметнулся в стан противника, он теперь гораздо ближе к VC, нежели к старому доброму VB.

Вернемся ко второму чувству. Теперь любого, кто скажет, что VB.NET не объектно-ориентированный язык, можно смело закидать камнями. Все три основополагающих камня ООП — инкапсуляция, полиморфизм и наследование — присутствуют в VB.NET практически в полном объеме [1].

Более того, объектная модель была расширена таким образом, что в некоторых аспектах VB.NET стал даже «объектнее» C++. Например, в нем есть множество функций для работы со строками, при этом даже с обычной строкой можно работать как с объектом:

Dim str As String = "hello world", st As String
st = Str.Substring(0, 5)
Debug.WriteLine(st)

Ни в С++, ни в Delphi подобные фокусы не пройдут (впрочем, нужны ли такие выкрутасы — тоже еще вопрос).

Практически все, за что критиковали VB, устранено. Появились конструкции по работе с исключениями, статические свойства, поля и методы, запрещение наследования, перегрузка (overload) и переопределение (overriding) методов, абстрактные классы, расширенные интерфейсы, указатели на функции или методы (delegate), весьма полезные механизмы по работе с регулярными выражениями. Появились новые классы: например, FileSystemWatcher позволяет осуществлять мониторинг файловой системы — задача, решение которой ранее было доступно лишь специалистам, или класс Thread, позволяющий манипулировать потоками.

Серьезным изменениям подверглись и графические библиотеки. Если в VB 6 были доступны лишь базовые примитивы, то VB.NET предоставляет уникальные инструменты. Помимо банальных графических примитивов, которые присутствуют в арсенале всех RAD, VB.NET предоставляет целый ряд высокоуровневых функций: кривые Безье, сплайны, графические пути, сложная градиентная заливка, буферизация отображения, аффинные преобразования. Все это хозяйство обрамлено в весьма привлекательную оболочку, так что, например, создать форму в виде текста можно буквально в несколько строк. Естественно, поддержка СОМ, которая была чуть ли не самой элегантной в VB, в новой версии также на высоте.

Все вышесказанное означает, что VB стал нормальным языком, используюшим все современные технологии — не больше, но и не меньше.

Апгрейд приложений

С перекомпиляцией программ в новых версиях в VB.NET дела обстоят несколько хуже, чем раньше. Так как язык претерпел серьезные изменения, при попытке открытия старых программ автоматически запускается мастер обновления (рис. 1), который по идее должен помочь в переводе исходного текста (а в идеале вообще все сделать самостоятельно). Если в программе присутствуют какие-либо изыски, как то обращение к драйверам баз данных или нестандартные интерфейсные возможности (реализованные как сторонние ActiveX), то сложностей не избежать (рис. 2). Но даже если конвертация прошла успешно, не спешите запускать программу, а прежде обратите внимание на исходный код — вполне возможно, что мастер разукрасит его множеством предупреждений, так что будет весьма кстати обратиться к специально созданному файлу UpgradeReport.htm с информацией о проблемах. По своему опыту, который подтверждается многочисленными воплями в форумах и списках рассылки, могу сказать, что полностью обновить более или менее сложную программу «на автомате» практически никогда не удается.

1
Рисунок 1

2
Рисунок 2

IDE

Теперь поговорим о том, с чем сталкивается любой программист — о среде разработки. Изменения, которые претерпела IDE по сравнению с предыдущей версией, также весьма существенны. Теперь для Visual Basic, Visual C++, Visual C# существует одна, единая среда разработки, включающая в себя веб-браузер для просмотра документации и прочей справочной информации и множество инструментальных панелей, которые поддерживают три режима: auto-hide, когда панелька прячется за край экрана и разворачивается при щелчке (что очень экономит место), а также обычный и плавающий (floating) режимы (рис. 3). Чрезвычайно удобной функцией является Clipboard Ring (рис. 4) — специальная панель, хранящая последние 20 элементов из буфера. Естественно, присутствует и полная поддержка code competition, что позволяет просматривать поля и методы класса, их определение, а также выбирать нужный класс простым щелчком. Нововведением среди RAD является механизм макросов (рис. 5), так что теперь можно автоматизировать многие операции.

3
Рисунок 3

4
Рисунок 4

5
Рисунок 5

В редакторе самым полезным новшеством я бы назвал «свертывание» исходного текста, когда целый блок кода можно свернуть до одной строки, вводя иерархическую структуру прямо в окне ввода. Возможности контекстно-зависимой обработки тоже на высоте: например, по правому щелчку мыши на служебном слове можно получить список членов класса (List Members), информацию о слове (Quick info) и автоматически перейти в точку его определения (definition).

В целом, изменения носят скорее косметический характер — система стала еще удобнее, материалов стало еще больше, но это как раз тот случай, когда больше означает лучше.

Визуальные и невизуальные компоненты

Сразу бросается в глаза, что число этих компонентов (рис. 6) много меньше, чем, например, в Delphi 6. Но среда существует совсем недолго, так что постепенно компоненты появятся, а на первое время можно обойтись старыми компонентами ocx, доставшимися от VB 6. Не все они успешно интегрируются в VB.Net, но проблемы в основном возникают с «самоделками», а компоненты от известных команд разработчиков импортируются легко. Те же немногие компоненты, что в среде присутствуют, работают идеально и по своим возможностям нередко обходят собратьев из Delphi [2]. Из приятных нововведений можно отметить ErrorProvider, компонент, который используется для проверки и индикации ошибок пользователя. Если пользователь вводит в поле даты нечто, отличающееся от принятых форматов, обычная программа выведет окошко с предупреждение, ErrorProvider же отобразит рядом с окошком ввода мигающий восклицательный знак (рис. 7). Казалось бы, мелочь, но чертовски удобно.

6
Рисунок 6

7
Рисунок 7

Куда идем мы с пятачком…

По мнению Microsoft, вопроса, куда двигаться дальше, у программистов на VB быть не должно — что тут думать, переходите на VB.NET. Но не все так просто. Как выглядела ситуация до нынешнего времени? Были настоящие (читай VC++) Программисты с большой буквы — «волосатые и небритые». Небритые потому, что пока набиваешь всякие там "AmbientShowHatching" и "CreateComponentCategory", проходит вся жизнь и побриться просто не успеваешь. Были программисты нормальные (читай дельфисты) — чисто выбритые, т.к. пока их коллеги выписывают кренделя на С++, на Delphi можно то же самое сделать раза в два быстрее. И были программеры (читай почитатели VB), которые, пока их коллеги мучаются, успеют в отпуск съездить, жениться и развестись. А все потому, что на VB можно было либо задачу решить еще быстрее, либо не решить вообще, ибо «Ну нельзя же такое на бейсике сделать». Сейчас последний класс вымирает: VB.NET уже не позволяет не задумываться, придется сначала подучить новый язык, потом привыкнуть к новой среде и придумать способ перетащить весь багаж накопленных материалов. И вот тут возникает перепутье, о котором в Microsoft молчат. Переучиваться на VB.NET особого смысла нет, так как тот же C# отличается от VB.NET незначительно, порой вся разница заключается в мелочах типа точки с запятой вместо двоеточия в конце операнда или двойного знака равно (= =) при проверке на равенство. И это при том, что для C# уже сейчас существует база наработанных алгоритмов, которая расширяется гораздо быстрее, чем база для VB.NET. Таким образом очень многих VB.NET толкает в объятия либо C#, либо в Delphi, ибо основное преимущество VB — его простота — утрачена безвозвратно, а из продвинутых средств не все ли равно, что выбирать?

Попытаемся заглянуть в будущее. Оба ведущих поставщика RAD, Microsoft и Borland, при выходе новых продуктов объявили об кросс-платформенной поддержке либо открыто, либо в завуалированной форме. Таким образом, мейнстрим софтостроения на будущую пятилетку вроде бы ясен — обе компании попытаются создать инструмент для разработки приложений под Linux, причем такой, чтобы существующий код можно было переносить максимально безболезненно. Как возможный итог — взрывной рост числа приложений под Linux, и тот, кто первым займет место под солнцем, получит карт-бланш на этом весьма перспективном рынке. Может показаться, что Borland сильно опережает Microsoft — ведь Kylix уже существует, тогда как портирование .NET еще вопрос. Но большинство программ на ObjectPascal для Windows созданы с использованием старой библиотеки визуальных компонентов — VCL, и поэтому не переносимы в Kylix. Код неминуемо придется переписать с использованием CLX — новой кросс-платформенной библиотеки, а затем еще перекомпилировать. К тому же уже сейчас виден подводный камень (или даже мина замедленного действия): графическая библиотека Qt, на базе которой строится CLX, принадлежит сторонней компании — TrollTech. Учитывая манеру MS поедать конкурентов, можно предположить, что если вдруг Kylix достигнет потрясающих результатов, Microsoft просто купит TrollTech, поставив крест на Qt и CLX.

Пока .NET существует лишь для Windows, ситуация стабильна — программы будут работать только под Win98, Me, NT, 2000 и XP при условии установки .NET CLR. Со временем будет неминуемо наработан определенный парк NET-приложений. А теперь представим, что Microsoft (или какая-то другая компания) портирует .NET на Linux. Это будет означать, что все NET-приложения будут автоматически доступны и на Linux. И тогда эта широко популярная в узких кругах ОС сможет наконец обзавестись парком современного прикладного ПО.

Есть и еще один любопытный момент. Сколько не думай о причинах неудач многих ОС, первое, что приходит на ум — это отсутствие приложений. Так вот, если создание .NET-приложений пойдет нормальными темпами, у многих казалось бы уже мертвых ОС появится шанс на воскрешение — достаточно портировать .NET на свою платформу, и пользователи автоматически получат доступ к разнообразным и популярным программам. Согласитесь, звучит довольно заманчиво: вернуть к жизни, например, OS/2. Потенциальная возможность для этого теперь есть.


[1] — Есть некоторые несущественные ограничения. Например, как и в Delphi, запрещено множественное наследование (multiple inheritance), когда один класс является потомком сразу нескольких классов. Для обхода этого ограничения можно использовать механизм интерфейсов.
[обратно к тексту]

[2] — Например, такой популярный объект, как поле ввода RTF, поддерживает и автоопределение URL, и установку фона для произвольных участков текста, и прочие вкусности.
[обратно к тексту]


Обсудить статью в форуме

<< Предыдущая статья рубрикиК оглавлению рубрики >>
("Неизвестная Java")(Просмотреть полный список статей рубрики)
Вернуться к оглавлению рубрики
Андрей Драница
axeon@inbox.ru
 

Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта "Софтерра"


 Новые статьи на сайте

Просмотр DVD фильмов на FreeBSD

Несколько плееров для просмотра DVD в FreeBSD и немного теории

[29.10.2002, Станислав Лапшанский, "Linuxоид"]


Разбиение дисков и инсталляция Linux на LVM (часть 2)

Установка линукс на два диска с логическими томами...

[25.10.2002, Владимир Холманов, "Linuxоид"]


Домашняя фабрика грез. Часть 2

О представлении цветного изображения и прочем.

[24.10.2002, Алексей Стахнов, "Технологии"]


Более ранние статьи >>



 Новости софта

И защищает, и "расшаривает"... [17:58, 14.10.2002]

SolidShare - полезная программа для пользователей интернета


"Тощий" браузер [17:49, 14.10.2002]

Slim Browser 3.1 улучшает функциональность IE


Нужно-ненужная программа [16:05, 14.10.2002]

"Программа без особого назначения"


Более ранние новости >>



 Игры и мультимедиа. Новости

1с и Activision решили сотрудничать [18:06, 11.10.2002]

Фирма "1С" будет издавать серию игр от компании Activision в России, на территории стран СНГ и Балтии


Семнадцатый Чемпионат по онлайновым "СамоГонкам" [18:04, 11.10.2002]

В понедельник начнется настоящая игра


Распродажа пирамид [11:48, 10.10.2002]

"Пирамида. Gold Edition" в продаже


Более ранние новости >>



 Новости свободных систем

Lcrzo 4.16 [14:48, 16.10.2002]

Модифицированы некоторые модули...


KDE 3.1... забегая вперед [14:37, 16.10.2002]

Грядут большие перемены...


mnoGoSearch 3.2.7 [10:37, 15.10.2002]

Есть изменения...


Более ранние новости >>



 Пресс-релизы

Электронная цифровая подпись для Microsoft Office [15:43, 21.3.2002]

Компания MultiSoft анонсирует свою разработку – программный продукт «ЭЦП для Microsoft Office», обеспечивающую целостность и авторство электронных документов Word и Excel при их хранении и распространении через локальную или глобальную сеть.


Компания «БИФИТ» на форуме «Инфобизнес-2002» [14:14, 21.3.2002]

На проходившем с 12 по 15 марта форуме «Инфобизнес-2002» компания «БИФИТ» представила свою новую разработку iBank 2 - передовое решение для электронного банкинга.


Конвертирование позитива в негатив [13:16, 21.3.2002]

Группа разработчиков Invention Pilot, Inc выпустила новый программный продукт – Silver Pilot.


Более ранние новости >>






Информация о сервере
Copyright (c) 2000 ИД "Компьютерра"
Email: inform@softerra.ru
Телефон: (095) 232-22-63
Рейтинг@Mail.ru Создание сервера (с) 2000 Individ
Работает на Saitistika
Карта сайта
Главная страница