Появление в конце прошлого года первой публичной бета-версии 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.