![]() |
Basic форева?Источник: Компьютерра Андрей Драница
Сразу отмечу некую провокационность подобных обзоров. С одной стороны, рассмотрение Visual Basic .NET напоминает тестирование новенькой автомашины при полном отсутствии конкурентов. С другой - сравнение нескольких (хотя бы двух) продуктов чревато религиозными войнами, место которым, скорее, в онлайновых форумах. К тому же ближайший конкурент - Delphi - уж больно популярен на просторах СНГовщины, так что тема «VB.NET против Delphi» вызовет слишком жаркие споры. А посему я попытаюсь ограничиться констатацией фактов, перемежая ее своими субъективными оценками. Другой языкЗа время погружения в VB.NET я испытал два противоречивых чувства - разочарование и удовлетворение. Начнем с разочарования. Вооружившись томами документации и справочников и засев за новинку, я обнаружил совершенно другой язык. То, о чем так много говорили, все же произошло: старый язык разнесен в пух и прах, а пепел его развеян по ветру. Что представлял собой VB до седьмой версии? Можно было сравнить его с чем-то вроде мощного калькулятора. Производительностью и широтой возможностей он, разумеется, уступал Delphi и VC++, как уступает самый продвинутый калькулятор самой примитивной персоналке. Да и цели обогнать их не ставилось - VB позиционировался как легкий в освоении и работе инструмент программирования простейших задач. Бейсик был чрезвычайным простым языком, так что примитивные приложения, даже по работе с базами данных, можно было сделать буквально не касаясь клавиатуры, одной лишь мышкой. Программа могла состоять из пары строк - никакой предварительной подготовки, код ложился так, как «шла мысль». В этом-то и заключалась сила VB: по скорости создания приложений он был абсолютным лидером. К сожалению, VB.NET в этом смысле переметнулся в стан противника, он теперь гораздо ближе к VC, нежели к старому доброму VB. Вернемся ко второму чувству. Теперь любого, кто скажет, что VB.NET не объектно-ориентированный язык, можно смело закидать камнями. Все три основополагающих признака ООП - инкапсуляция, полиморфизм и наследование - присутствуют в VB.NET практически в полном объеме. Более того, объектная модель была расширена таким образом, что в некоторых аспектах VB.NET стал даже «объектнее» C++. Например, в нем есть множество функций для работы со строками, и даже с обычной строкой можно работать как с объектом: Dim str As String =
Ни в С++, ни в Delphi подобные фокусы не пройдут (впрочем, нужны ли такие выкрутасы - тоже еще вопрос). Почти всё, за что критиковали VB, устранено. Появились конструкции для работы с исключениями, статические свойства, поля и методы, запрещение наследования, перегрузка (overload) и переопределение (overriding) методов, абстрактные классы, расширенные интерфейсы, указатели на функции или методы (delegate), весьма полезные механизмы работы с регулярными выражениями. Появились новые классы: например, FileSystemWatcher позволяет осуществлять мониторинг файловой системы - задача, решение которой ранее было доступно лишь специалистам, или класс Thread, позволяющий манипулировать потоками. Серьезным изменениям подверглись и графические библиотеки. Если в VB 6 были доступны лишь базовые примитивы, то VB.NET предоставляет уникальные инструменты. Помимо банальных графических примитивов, которые есть в арсенале всех RAD, VB.NET предоставляет ряд высокоуровневых функций: кривые Безье, сплайны, графические пути, сложная градиентная заливка, буферизация отображения, аффинные преобразования. Все это хозяйство обрамлено в весьма привлекательную оболочку, так что, например, создать форму в виде текста можно буквально в несколько строк. Естественно, поддержка СОМ, которая была чуть ли не самой элегантной в VB, в новой версии тоже на высоте. Все вышесказанное означает, что VB стал нормальным языком, использующим все современные технологии - не больше, но и не меньше.
Апгрейд приложенийВпрочем, с перекомпиляцией программ дела в VB.NET обстоят хуже, чем раньше. Так как язык претерпел серьезные изменения, при попытке открытия старых программ автоматически запускается мастер обновления (рис. 1), который по идее должен помочь в переводе исходного текста (а в идеале - вообще все сделать самостоятельно). Если в программе присутствуют какие-либо изыски, как то: обращение к драйверам баз данных или нестандартные интерфейсные возможности (реализованные как сторонние ActiveX), то сложностей не избежать (рис. 2). Но даже если конвертация прошла успешно, не спешите запускать программу, а прежде обратите внимание на исходный код - вполне возможно, что мастер разукрасит его множеством предупреждений, так что будет весьма кстати обратиться к специально созданному файлу UpgradeReport.htm с информацией о проблемах. По своему опыту, который подтверждается многочисленными воплями в форумах и списках рассылки, могу сказать, что полностью обновить более или менее сложную программу «на автомате» удается очень редко.
IDEТеперь поговорим о том, с чем сталкивается любой программист, - о среде разработки. Изменения, которые претерпела IDE по сравнению с предыдущей версией, тоже существенны. Теперь для Visual Basic, Visual C++, Visual C# существует единая среда разработки, включающая в себя веб-браузер для просмотра документации и прочей справочной информации и множество инструментальных панелей, которые поддерживают три режима: auto-hide, когда панелька прячется за край экрана и разворачивается при щелчке (что очень экономит место), а также обычный и плавающий (floating) режимы (рис. 3). Чрезвычайно удобна функция Clipboard Ring (рис. 4) - специальная панель, хранящая двадцать последних элементов из буфера. Конечно же, полностью поддерживается code competition, что позволяет просматривать поля и методы класса, их определение, а также выбирать нужный класс щелчком мыши. Нововведением среди RAD является механизм макросов, так что теперь можно автоматизировать многие операции.
В редакторе самым полезным новшеством я бы назвал «свертывание» исходного текста, когда целый блок кода можно свернуть до одной строки, вводя иерархическую структуру прямо в окне ввода. Возможности контекстно-зависимой обработки тоже на высоте: например, по правому щелчку мыши на служебном слове можно получить список членов класса (List Members), информацию о слове (Quick info) и автоматически перейти в точку его определения (definition).
В целом изменения носят скорее косметический характер: система стала удобнее, материалов - еще больше, но это как раз тот случай, когда больше означает лучше.
Визуальные и невизуальные компонентыБросается в глаза, что этих компонентов (рис. 5) гораздо меньше, чем, например, в Delphi 6. Но среда существует совсем недолго, так что постепенно компоненты появятся, а на первое время можно обойтись старыми OCX, доставшимися в наследство от VB 6. Не все они успешно интегрируются в VB.NET, но проблемы в основном возникают с «самоделками», а компоненты от известных команд разработчиков импортируются легко. Те же немногие компоненты, что в среде присутствуют, работают идеально и по своим возможностям нередко обходят собратьев из Delphi. Из приятных новшеств можно отметить ErrorProvider - компонент, служащий для проверки и индикации ошибок пользователя. Если пользователь вводит в поле даты нечто, отличающееся от принятых форматов, обычная программа выведет окошко с предупреждением, ErrorProvider же отобразит рядом с окошком ввода мигающий восклицательный знак (рис. 6). Казалось бы, мелочь, но чертовски удобно. Куда идем мы с Пятачком…
|