Глава 1. Введение


Хочется верить, что книга пригодится программистам с опытом работы на любых языках, но данная глава рассчитана в основном на программистов Visual Basic. Остальные могут сразу переходить к главе 2 и начинать знакомство с невероятно мощной интегрированной средой разработки (IDE), в основу которой положен первый по-настоящему объектно-ориентированный язык семейства BASIC. Программист, привыкший работать на Visual Basic, не сразу поверит, что хлопоты по переходу на VB .NET будут оправданы. Именно поэтому и была написана данная глава.

 

Visual Basic: прошлое и настоящее

Visual Basic для Windows появился около 10 лет назад. Дебют состоялся 20 марта 1991 года на выставке «Windows World», хотя своими корнями он уходит к программе Ruby, написанной Аланом Купером (Alan Cooper) в 1988 году.

Бесспорно, появление Visual Basic произвело настоящую сенсацию. Стив Гиб-сон (Steve Gibson) в журнале «InfoWorld» назвал Visual Basic «потрясающим новым чудом», которое «радикально изменит подход к программированию для Microsoft Windows». Чарльз Петцольд (Charles Petzold), автор знаменитой книги, посвященной программированию для Windows на языке С, написал в «New York Times»: «Visual Basic представляет настоящую угрозу для благополучия тех, кто зарабатывает себе на жизнь, разъясняя программистам сложности программирования для Windows» (вряд ли к комментарию Петцольда стоит относиться серьезно, поскольку с того знаменательного дня были проданы миллионы книг, посвященных VB). Еще решительнее высказался Стюарт Элсоп (Stewart Alsop): он назвал Visual Basic «идеальной средой программирования для 90-х годов».

Но 90-е годы уже прошли, поэтому никого не удивит тот факт, что Visual Basic .NET отличается от обычного Visual Basic так же сильно, как Visual Basic версии 1 отличается от своего предшественника QuickBasic. Хотя из прежнего опыта использования Visual Basic можно вынести много полезного, переход на платформу [ Microsoft серьезно относится к этому слову. В частности, Windows тоже именуется платформой. ].NET и Visual Basic .NET (сокращенно VB .NET) сопровождается такими же основательными изменениями, как и переход с QuickBasic для DOS на VB1 для Windows.

 

Версии Visual Basic

Первые две версии Visual Basic для Windows хорошо подходили для создания прототипов программ и демонстрационных приложений — но этим все и ограничивалось. В обеих версиях отличная среда программирования сочеталась с относительной простотой языка. Сам язык обладал относительно бедными возможностями. С появлением VB3 и новых средств работы с базами данных, требовавших изучения новой модели программирования, первая реакция нередко была обескураживающей: «Зачем они испортили VB?!» Сейчас становится понятно, что включение поддержки баз данных в VB3 было необходимо, чтобы Visual Basic из «игрушечного языка» превратился в серьезный инструмент программирования. В VB4 появились базовые возможности для создания объектов, а следовательно — базовые средства объектно-ориентированного программирования. В VB5 и VB6 объектно-ориентированные аспекты языка были расширены, появились новые возможности создания элементов и использования интерфейсов. Однако сам язык постепенно утрачивал целостность, поскольку объектно-ориентированные средства строились на базовом фундаменте, в котором их поддержка не предусматривалась. Например, правильность создания объектов в Visual Basic не гарантировалась — программисту приходилось применять особые синтаксические конструкции вместо конструкторов, используемых практически во всех объектно-ориентированных языках (конструкторы рассматриваются в главе 4). В итоге разработчики VB пришли к выводу, что поддержка VB на платформе .NET потребует новых изменений — например, использование .NET Framework требует полноценной объектной ориентации языка.

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

Но даже эти ограниченные возможности, появившиеся в VB5 и VB6, при правильном применении упрощали работу над большими проектами. Например, они позволяли создавать компоненты многократного использования (такие, как элементы управления), а на более прозаическом уровне — просто приводить код в порядок, упрощая его сопровождение. В некоторых случаях удавалось исключить оператор Sel ect Case, нередко порождавший большие проблемы с сопровождением. Речь идет о конструкциях, более или менее похожих на следующие: [ В поставку VB .NET входит утилита преобразования программ, но не стоит возлагать на нее чрезмерные надежды. Ни одна серьезная программа не преобразуется автоматически — возможно, ее будет проще написать с нуля. ]

Select Case kindOfEmployee

Case Secretary

RaiseSalary 5%

Case Manager

RaiseSalary 10%

Case Programmer

RaiseSalary 15%

Case Architect

RaiseSalary 20 %

 

' и т. д.

End Select

Сопровождение подобного кода было делом крайне неприятным, поскольку при каждом добавлении нового типа сотрудника (Employee) приходилось изменять все соответствующие операторы Select Case, тогда как эту работу можно было бы поручить компилятору. Начиная с VB5 это наконец стало возможным, поскольку волшебство полиморфизма интерфейсов (см. главу 5) позволяло использовать конструкции вида:

For Each employee in Employees

employee.RaiseSalary

Next

Компилятор анализировал объект и автоматически выбирал нужный метод Rai seSal ary. "Классы заметно повышают эффективность и удобство сопровождения приложений VB. Останетесь ли вы с VB5 или перейдете на VB .NET — без классов трудно представить себе серьезное приложение VB.