Главная страница Visual 2000 · Общий список статей

Visial Basic.NET — страсти накаляются

Андрей Колесов

© Андрей Колесов, 2001
Авторский вариант. Статья была опубликована c незначительной литературной правкой в еженедельнике PC Week/RE (№ 18/2001, с. 36)


Появление в конце прошлого года первой публичной бета-версии Visual Basic.NET послужило началом весьма эмоциональных дискуссий в мировом сообществе VB-программистов (по разным оценкам от 2 до 4 млн. человек). С тех пор прошло уже четыре месяца, но накал страстей не снижает. Более того, по мере приближения сроков выхода окончательного варианта (конец нынешнего года) жар споров возрастает.

Стоит вспомнить, что первые упоминания о будущих новшествах VB 7.0 были встречены разработчиками с большим энтузиазмом. Ведь там говорилось о том, что наконец-то VB станет полноценным объектно-ориентированным языком. Откровенно говоря, большая часть нынешних VB-программистов не очень-то нуждаются в этих языковых возможностях, но избавиться от некоторого чувства неполноценности из-за несовременности "Васика" в любом случае приятно.

Но на самом деле новшеств VB.NET оказалось гораздо больше, чем этого ожидали даже самые смелые прогнозы (на эту тему смотрите серию публикаций в журнале "Byte/Россия", начиная с N 2/2001). Сюрпризов было много и далеко не все они вызывают ликование. Главный из неприятных "подарков" — впервые за десятилетнюю историю VB нарушается совместимость программного кода "снизу-вверх".

Microsoft обещает создать специальные инструменты по модификации кода приложений, созданных в предыдущих версиях. Но даже если это случится, что все равно далеко не все 100 процентов программ, написанных на VB 6.0, будут работать в VB.NET. Самое неприятное в этой ситуации заключается в том, что некоторые старые конструкции будут правильными с точки зрения синтаксиса и транслятор не выдаст сообщения об ошибках, но в VB.NET этот код будет работать не так, как в VB 6.0.

Сегодня можно констатировать, что многомиллионная армия VB-разработчиков разделилась на две части. Сторонники новшеств технологии .NET (во главе с Microsoft) делают акцент на то, что с помощью нового VB они получат возможность создания приложений масштаба предприятия, в том числе Web- и серверных приложений. Противники (точнее, критики) говорят о серьезной угрозе стабильности огромной базы существующего VB-кода. При этом к аргументированным доводам зачастую примешивается много эмоций. В частности, один из критиков нововведений создал Web-страницу под красноречивым названием "VB.NOT" (www.mvps.org/vb/rants/vfred.htm), где привел перечень из 80-расхождений между VB 6.0 и VB.NET.

При этом всем понятно, что накал дискуссий определяется не эмоциональными моментами, а чисто практическими интересами — все понимают, что реализация новшеств VB.NET может серьезно повлиять на их личную судьбу. В этой связи имеются опасения, что переход от нынешней архитектуры Windows к будущей .NET может быть таким же болезненным, как в начале 90-х от DOS к Windows: значительная часть DOS-программистов просто не смогла (в том числе, по чисто психологическим причинам) адаптироваться в новым методам разработки.

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

Самое "забавное" в нововведениях VB.NET — Microsoft отказывается от вольностей в VB-программировании, которые сама же ввела и за которые всегда подвергалась критике со стороны профессионалов. Речь идет о широком использовании универсальных переменных типа Variant и неявного преобразования типов данных, установке свойств объектов по умолчанию, дублирования различных функций и пр. Тем, кто не попался на удочку подобного облегчения жизни (очевидные проблемы, вытекающие из таких "послабление", были всегда и могли не видеть только новички от программирования), будет переходить на VB.NET гораздо проще.

С самого начала дискуссий о VB.NET никто не отрицал вероятность того, что Microsoft может пойти на некоторые уступки своим критикам. Однако зная стиль работы корпорации все сходились на том, что уступки будут минимальными и временными. По крайней мере, вся десятилетняя история VB хорошо показывает, что за внешней внимательностью к запросам разработчикам находится довольно жесткая линия стратегии Microsoft, которая ведет сообщество программистов в нужном корпорации направлении.

Судя по последним сообщениям Microsoft вряд ли пойдет на сколько-нибудь серьезные уступки критикам VB.NET. В начале апреля на конференции VBITS представители корпорации сообщили о трех "откатах", которые произойдут во второй бета-версии VB.NET:

1. Описание массивов, вроде Dim a(10), будет работать также, как и предыдущие 40 лет существования языка Basic. То есть в данном примере, 10 — это верхняя граница индекса массива, а не число его элементов, как это грозились сделать в VB.NET.

2. Значение логической переменной True, по-прежнему будет иметь целочисленное значение -1, а не 1, как планировалось.

3. Операции And, Or, Not и XOR, как и ранее, будут использоваться как для логических, так и поразрядных, операций. В первой бета-версии VB.NET эти операции выполнялись только с логическими переменным, а для целочисленных вводились дополнительные функции.

Хотя эта информация сопровождается уверениями в желании прислушаться "к нуждам трудящихся" и повысить совместимость кода между VB 6.0 и VB.NET, очевидно, что на фоне десятков других новшеств, подобные "копеечные" откаты выглядят скорее насмешкой над разработчиками. Конечно, Microsoft может бросить еще "пару костей", но в целом у VB-программистов, скорее всего нет иного выхода, как всерьез начать готовиться к появлению VB.NET 1.0.

В начало статьи