Автор: Шатрыкин Иван
(http://www.gotdotnet.ru/LearnDotNet/VBNET/723.aspx)

Введение

      Не так давно Microsoft в очередной раз заставила вздрогнуть программистов во всем мире, объявив о начале новой эры развития языков программирования. .NET Framework – вот то, что мы еще долго будем изучать, то, что станет фундаментом для наших новых программ, то, что будет волновать умы лучших программистов в следующие годы. Учитывая это, Microsoft решила пойти на вторую в своей истории авантюру после создания Visual Basic и представила новый язык программирования VB.NET. Что же такое VB.NET? Что будет с огромной армией программистов, которые писали свои программы на языке Visual Basic, выдержавшем шесть версий? Вот об этом мы и поговорим в этой статье.

История создания Visual Basic

      Язык программирования Basic был создан в 1964 году двумя профессорами из Dartmouth College – Джоном Кенеми и Томасом Куртцом для обучения студентов навыкам программирования. Язык получился настолько простым и понятным, что через некоторое время его начали применять и в других учебных заведениях. В 1975 году, с приходом первых микрокомпьютеров, эстафету Basic приняли Билл Гейтс и Пол Аллен, основатели Microsoft. Именно они создали новую версию Basic для первых компьютеров «Альтаир» (MITS Altairs), способную работать в 4КБ оперативной памяти. Со временем именно эта версия и превратилась в один из самых популярных языков программирования в мире.
      На пути к вершине славы у Basic было множество трудностей, которые он всегда с честью преодолевал, и когда появились первые персональные компьютеры IBM PC, именно он стал стандартом в программировании, но уже в виде GW-Basic. Потом был Turbo Basic, QuickBasic, Basic PDS, но всегда при разработке новой версии языка сохранялась совместимость с прежними версиями и программа, написанная для практически первого Basic, вполне (с незначительными изменениями) могла бы работать и в последующих версиях этого языка.
      Но наступили новые времена, и в начале 90-х появляется операционная система Microsoft Windows с новым графическим интерфейсом пользователя (GUI). Жизнь программистов превратилась в ад. Чтобы создать простую программу, приходилось писать несколько страниц кода: создавать меню и окна, менять шрифты, очищать память, «рисовать» кнопки и т.д. Однако преимущества нового интерфейса были настолько неоспоримы, что уже третья версия этой операционной системы стала фактическим стандартом для персонального компьютера. В это время в недрах Microsoft велось несколько параллельных проектов по созданию нового языка программирования для Windows.
      И вот в мае 1991 года мир увидел один из таких проектов - новый язык, названный Visual Basic. Система программирования, созданная разработчиками Visual Basic, позволяла «отстраниться» от сложнейшей внутренней структуры Windows и создавать программы из «кубиков», как в детском конструкторе. Меню, окна, списки, кнопки, поля ввода текста и другие элементы интерфейса Windows добавлялись в программу с помощью простейших операций drag&drop. Свою первую программу VB-программисты создавали уже через несколько минут после начала изучения этого языка! Более того, Visual Basic позволял разработчикам создавать новые объекты-«кубики», которые также могли использоваться в программах наравне со стандартными.
      И хотя многие С-программисты тихо посмеивались над попытками Microsoft сделать простой и понятный инструмент разработки Windows-программ, Visual Basic начал свое победное шествие по миру, и ничто не могло остановить этот процесс. Последние барьеры упали в 1994 году с выпуском Visual Basic for Applications. Именно в это время, после включения VBA в состав Microsoft Office, Basic начинает превращаться в один из основных стандартов программирования для Windows.
      Потом были новые версии, которые неизменно улучшали и расширяли язык, принося с собой новые возможности: OLE, DAO, JET, 32-битная архитектура и т.д. Последние версии языка были настолько удачными, что с их помощью можно было создавать приложения практически любой сложности: поддержка callback-функций, настоящий компилятор, превосходные средства отладки, поддержка библиотеки DirectX – все это создавало впечатление непоколебимости позиций Visual Basic на рынке малых программных продуктов.
      Но настал 2000 год. Именно в этом году Microsoft впервые объявила о планах по созданию программной платформы .NET, которая, в конечном счете, и привела к кончине Visual Basic, а с ним и духа Basic, созданного 10 лет назад.

Дух Basic – событийно-управляемое программирование

     Когда создавался Visual Basic, его разработчики выбрали схему работы программ, основанную на событиях. Именно эта схема позволяет не знать о том, что происходит за рамками вашей программы, и как она взаимодействует с операционной системой. Именно эта схема и стала итоге проводником к всеобщей популярности VB. Основа этой системы – отсутствие взаимодействия программиста непосредственно с операционной системой. Готовые кубики-«компоненты» Visual Basic генерируют события в ответ на действия пользователя. Эта простая и понятная система привела к тому, что практически любой пользователь мог за считанные часы ее изучить и начать создавать прикладные программы. Но, увы, это был не объектно-ориентированный язык, и уже тогда было понятно, что грядет время перемен.

Изменения в Visual Basic.NET

Среда разработки

      Обзор изменений Basic начнем, пожалуй, со среды разработки. Если честно, то мне больше нравилась IDE 6-й версии Visual Studio, но это, конечно, субъективная точка зрения. Во-первых, сразу хочу обрадовать всех поклонников унификации и стандартизации, так как все языки программирования из Visual Studio.NET, имеют одну общую среду разработки. Эта среда, в принципе, имеет неплохие средства отладки программ, хотя и непривычные для VB-программистов.
      Основная трудность - в том, что теперь проекты компилируются сразу при их запуске, а не специальной командой, как раньше, и для отладки запускается созданный exe-файл. Конечно, средства отладки позволяют свободно переключаться между кодом и непосредственно программой, но время, требуемое для запуска проекта, неприлично большое для VB-программистов, привыкших к мгновенному запуску. Но это все ерунда по сравнению с основными изменениями, произошедшими в синтаксисе языка и его концепции.

Типы данных и переменные

      Пожалуй, со времен перехода на Visual Basic не было таких глобальных изменений в типах данных и работе переменных. VB.NET больше не поддерживает ключевое слово Deftype в проектах, нет типов данных Variant и Currency, появились новые типы Char, Short и Object (не смейтесь, это действительно новый тип). Более того, тип данных Integer теперь 4-х байтный (как был Long), а тип данных Long имеет размер 8 байт. На практике это означает, что если раньше при объявлении функций API вы использовали тип Long, то теперь нужно использовать Integer. Зачем это сделано? Существуют планы (уже и проекты) по созданию 64-х битной операционной системы (только не говорите, что вы ничего об этом не слышали), так вот там очень даже пригодится новый Long. Аналогом старого Integer становится новый тип данных Short, а вместо Variant нам предлагают использовать тип Object, который теперь полностью перенимает свойства старого Variant. И последнее, в новом языке также отсутствует ключевое слово Any, которое использовалось при объявлении типов данных и предназначалось для отключения контроля типов. Честно говоря, я понимаю Microsoft и поддерживаю эти изменения, которые в будущем помогут нам при переходе к 64-х битной архитектуре.
       Кроме уже вышеописанных различий, в VB.NET появилось несколько других незначительных изменений. Например, если раньше при операциях с данными типа Variant результат был больше, чем мог содержать исходный тип данных, то результат преобразовывался к Double; теперь при работе с похожим типом Object такой результат преобразуется к 64-bit Long. Другие существенные изменения при работе с данными связаны с изменениями их объявления. Если раньше вы, объявляя переменную так:

Dim I, J As Integer

       получали I – Variant, а J – Integer, то теперь обе переменные будут иметь тип данных Integer. Ну и, конечно, если вы не указываете тип переменной, то она будет иметь тип данных Object. Более того, теперь при объявлении строки вы не можете указать ее длину, т.е. все строки в VB.NET имеют переменную длину. В принципе, к этому все и шло, так как даже в старом VB все строковые функции работали только со строками переменной длины и VB, незаметно для нас, сам производил соответствующие преобразования, естественно жертвуя при этом скоростью.

Преобразование проектов VB 6

      Microsoft, понимая что процесс перехода к VB.NET будет сложным, создала специальный мастер, облегчающий преобразование проектов. Я не буду описывать, как происходит процесс конвертации проекта, так как по этой теме изданы многотомные книги, написано множество статей и, наверняка, вы уже в курсе событий. Хочу только сказать, что на практике качественно преобразовать можно только классы, т.е. только непосредственно код VB. Говоря другими словами, вы не сможете с помощью мастера преобразовать 90% своих проектов, содержащих формы (Form). Нет, конечно, если вы написали приложение с одной формой, двумя кнопками на ней и пятью строками кода, то мастер преобразования с большим удовольствием, «похрюкав» минут пять диском, выдаст вам новый проект, который скорее всего, будет работоспособен, но есть ли у вас такие программы? Кстати, предупреждаю, что результат такого преобразования, скорее всего, приведет вас в состояние глубокого шока, так что если вы хотели таким образом попутно изучить VB.NET, то хочу вас огорчить – этого не произойдет, учиться придется по книгам и читая документацию. Все, что выживает при подобной конвертации, так это классы. Почему же мастер так плохо работает? Дело в том, что преобразование невозможно сделать по причине глобального изменения структуры форм (Form), точнее говоря, переносу их в Windows Forms из библиотеки .NET Framework. Таким образом, если у вас есть программы, написанные на VB 6, то качественный перенос их в VB.NET, с помощью мастера невозможен. Однако, вы можете сделать это вручную, и тогда ваша программа сможет использовать всю мощь платформы .NET Framework.