(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

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 =
"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 с информацией о проблемах. По своему опыту, который подтверждается многочисленными воплями в форумах и списках рассылки, могу сказать, что полностью обновить более или менее сложную программу «на автомате» удается очень редко.

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). Казалось бы, мелочь, но чертовски удобно.

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

По мнению 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. Потенциальная возможность для этого теперь есть.

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

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



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 11.04.2003 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Windows Professional 10, Электронный ключ
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Standard (corporate)
Microsoft 365 Business Basic (corporate)
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Каждый день новые драйверы для вашего компьютера!
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100