Главная страница Visual 2000 · Средства разработки · Общий список статей · Общий список статей по VB/VBA
Полный архив статей по VB А.Колесова & О.Павловой

Заключительные cоветы тем, кто программирует на VB & VBA

Андрей Колесов, Ольга Павлова

© Андрей Колесов, Ольга Павлова, 2002
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" 06/2002, компакт-диск.

Кто не может сделать что-то сам, советует другим, как это лучше сделать.
Из жизненного опыта авторов


"Сериал" длиною в шесть лет

В начале 1996 года журнале"КомпьютерПресс" N 3/96 впервые была опубликована наша статья под названием "Советы для тех, кто программирует на Visual Basic". В ней мы давали всего три совета и, честно говоря, даже не предполагали, что потребуется продолжение. И уж совсем не думали, что эта любительская статья откроет "сериал", который растянется на шесть с гаком лет, а число советов приблизится к 450, и что с середины 1997 года параллельно с "Советами..." начнут публиковать наши тематические статьи о VB (это было связано с изучением возможностей новых версий VB), а еще спустя полгода — новый цикл публикаций под рубрикой "Разработка приложений в Office/VBA".

Кстати, появление этого цикла статей именно в "КомпьютерПресс" было неслучайным: еще за четыре года до этого, в 1991 году, также в мартовском номере журнала появилась статья "QuickBASIC — это то, что вам нужно", которая стала нашей первой публикацией в только зарождавшейся тогда отечественной компьютерной прессе.

Нужно открыть читателям наш маленький секрет. Дело в том, что до 1995 года мы были профессиональными программистами (профессиональными в том смысле, что именно этим ремеслом мы зарабатывали себе на жизнь) и работали с 1988 года в основном на Microsoft QuickBasic 4.5 for DOS (см. наш Web-ресурс "MS Basic/DOS"). Хотя написание статей о разработке ПО в среде QB и не приносило особых доходов, но способствовало продвижению нашей "торговой марки", к тому же нам было просто интересно этим заниматься. Логичным продолжением нашей "писательской деятельности" стало то, что в 1995 году мы "завязали" с программированием и стали профессиональными (в том же смысле) журналистами, пишущими на "околокомпьютерные" темы, не связанные с техническими вопросами программирования.

Эту историю мы изложили, чтобы пояснить: мы никогда не занимались практическим программированием на VB. В конце 1994 года мы установили на свои компьютеры VB 3.0 только из любопытства, а первые Советы..." появились совершенно случайно. Таким образом, изучение VB/VBA в течение этих лет было связано исключительно с необходимостью написания все новых и новых советов и статей, так что его лучше отнести к хобби, а не к профессиональной деятельности. Вступив "в бой", мы "сражались" более шести лет, пройдя путь от VB 3.0 до VB .NET (7.0).

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

Учитывая все вышесказанное, мы решили дать в этой завершающей статье несколько советов для тех, кто собирается и в будущем программировать на Visual Basic.

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

Совет 445. Изучайте VB в контексте его исторического развития

В современном VB, конечно же, очень сложно узнать его прародителя, созданного преподавателями Дартмутского колледжа (США) почти 40 лет назад, тем не менее связь времен легко прослеживается.

Долгие годы Бейсик был довольно примитивной системой, и о его использовании в качестве средства разработки серьезных программ не могло быть и речи. Однако нужно подчеркнуть, что Бейсик фактически никогда и не был языком программирования типа Фортрана или Алгола. Ведь он изначально представлял собой качественно новую технологию создания программ (с использованием режима "позднего связывания"!) в режиме интерактивного диалога между разработчиком и компьютером, то есть был прообразом современных систем быстрой разработки программ. Другое дело, что решение подобной задачи с помощью техники тех лет было возможно только за счет максимального упрощения языка программирования и использования транслятора типа "интерпретатор".

Сейчас вряд ли кто-то рискнет заявить, что сегодня Бейсик практически стал аналогом системы Microsoft Visual Basic, которая, в свою очередь, является самым популярным в мире инструментом разработки приложений. Конечно, у нее есть свои недостатки, многие относятся к ней с иронией, но факт остается фактом: не менее 80-90% программистов если не используют эту систему в работе, то, по крайней мере, знакомы с ней и при желании могут легко сотворить в ней что-то полезное. Существенный рост числа VB-программистов начался несколько лет назад, после появления MS Office 97/VBA — осваивать программирование в среде этого пакета стали многие его продвинутые пользователи.

Некоторые основные этапы развития Бейсика и Visual Basic приведены в таблице 1 и таблице 2. Хотим похвастаться: на нашем "боевом" компьютере установлены почти все версии MS Basic для DOS и Windows, упомянутые в этих таблицах (кроме VB 1.0 и 2.0, VBA 1.0 и 4.0). Все они — лицензионные, причем версии до 1995 года выпуска (включая VB 3.0) мы покупали на свои деньги, позднее — получали "для изучения" от московского представительства Microsoft, за что ему очень благодарны.

К приведенной хронологии хотелось бы сделать еще несколько дополнительных комментариев:

  1. Мы выделили в истории Бейсика три основных этапа, обозначенные в таблице 1. К этому можно только добавить, что в силу исторических причин большинство российских программистов второй половины 80-х годов вообще не знало о возможностях современных Basic-систем той поры. Их представление о Бейсике в лучшем случае базировалось на знакомстве с весьма примитивным интерпретатором GW-Basic из состава MS DOS 4.0. Во многом именно такими устаревшими представлениями о Basic-системах объясняется очень настороженное отношение к VB российских программистов примерно до 1995 года.

    Успех же Visual Basic в США в значительной степени базировался на огромной популярности семейства Microsoft QuickBasic.

  2. В конце 80-х годов насчитывалось около десятка систем Basic различных фирм-разработчиков. Однако главная борьба шла между QuickBasic (компания Microsoft) и TurboBasic (Borland). Вообще-то, конкуренция между этими двумя разработчиками средств программирования шла по целому спектру языков — Basic, Pascal и C. И результатом ее в 1989 году стало неявное мировое соглашение, когда Microsoft отказалась от дальнейшей поддержки Pascal, а Borland — Basic.

    В те времена многие эксперты, комментируя такой поворот событий, часто упоминали о личной заинтересованности руководителей Microsoft в Basic. Однако, как нам представляется, победа QuickBasic определялась чисто технологическими причинами — в этой системе была удачно реализована схема смешанного использования традиционных Basic-технологий и классических методов создания сложных программных систем.

    Turbo Basic имел много достоинств, главным же его недостатком был полный переход к компилятору, в результате чего он потерял свою изюминку — эффективную отладку программ.

  3. В американском журнале PC Magazine от 28 сентября 1993 года был опубликован большой обзор рынка Basic-средств, где было проанализировано около десяти ведущих систем того времени, в том числе CA Realizer (Computer Associates), GFA-BASIC, TrueBASIC, PowerBASIC. От Microsoft были представлены три системы — PDS 7.1, VB/Win 3.0 и VB/DOS 1.0.

    Обзор этот весьма примечателен по двум причинам. Во-первых, системы для DOS и Windows рассматриваются в нем как равные конкуренты. Во-вторых, это был, кажется, последний случай, когда у Microsoft еще были реальные конкуренты.

    Любопытно, что выбор редакции в разделе Basic/DOS был сделан в пользу PowerBASIC 3.0, а не в пользу более сильного PDS 7.1 из-за "неясной позиции Microsoft в плане развития систем для DOS". Действительно, Microsoft темнила почти два года и даже выпустила совершенно тупиковый вариант VB/DOS, чтобы дождаться естественной кончины DOS'овского направления.

  4. В конце 1993 года, одновременно с официальным объявлением о прекращении развития Basic/DOS, корпорация Microsoft объявила о намерении создать на основе VB новую универсальную систему программирования для прикладных программ, которая получила название Visual Basic for Applications (VB для приложений). Но нужно отметить, что, казалось бы, довольно ясная задача была реализована далеко не сразу.

    Первый вариант VBA 1.0 появился в составе MS Office 4.0, но лишь в программах Excel 4.0 и Project 6.0. В других же приложениях — Word 6.0 и Access 2.0 — были собственные варианты Basic. К тому же VBA 1.0 довольно сильно отличался (причем он имел ряд существенных преимуществ) от используемой тогда универсальной системы VB 3.0.

    Качественный перелом наступил в конце 1996 года — после выпуска MS Office 97, в котором была реализована единая среда программирования VBA 5.0, включенная в программы Word, Excel и PowerPoint. Более того, VBA 5.0 использовала тот же самый языковый механизм и среду разработки, что и универсальная система VB 5.0. В состав выпущенного два год назад пакета MS Office 2000 вошла соответственно версия VBA 6.0, используемая в шести программах — Word, Excel, PowerPoint, Access, Outlook, FrontPage.

    Одновременно VBA активно продвигают в качестве отраслевого стандарта для управления программируемыми приложениями, объявив о возможности его лицензирования и выпустив соответствующий SDK.

  5. Появление Visual Basic .NET открыло новый, четвертый, этап в истории Бейсика. В этом нет никаких сомнений.

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

Совет 446. Не спешите расставаться с VB 6.0

Выпуск VB .NET открывает качественно новый этап в развитии семейства VB. Хотя VB .NET имеет рабочий номер версии 7.0, но было бы правильнее назвать его VB .NET 1.0. Для VB-программистов миграция в .NET будет более сложной, чем переход от 16-разрядных версий Windows к 32-разрядным, не говоря уже о смене VB 5.0 на VB 6.0. Масштаб изменений скорее сравним с переходом с DOS Basic на Visual Basic.

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

Тут полезно вспомнить, что любой продукт практически всегда достигает "зрелости" (то есть его можно начинать использовать для решения критически важных бизнес-задач) лишь с выходом 3-й версии. Мы же сейчас имеем дело с версией .NET 1.0 и, несмотря на обилие рекламной шумихи, понимаем, что пока идет лишь этап практического изучения этой технологии.

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

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

Совет 447. Помните о наших советах

Хотя наш "сериал" назывался "Советы тем, кто программирует на VB", на самом деле он был посвящен скорее программированию вообще, но на примере VB. А это означает, что большинство наших советов остаются актуальными — независимо от используемых версий языков, а в значительной степени и от самих средств программирования.

Попробуем кратко сформулировать основные наши рекомендации:

  1. Всегда устанавливайте режим обязательного описания переменных (Option Explicit). Это делается автоматически, если вы установите флажок Require Variable Declaration в диалоговом окне Tools | Options | Editor.

  2. Следите за правильным использованием типов данных. Избегайте неявного преобразование типов. Не используйте тип Variant, кроме случаев, когда это действительно необходимо. В VB .NET появилась дополнительная возможность жесткой проверки типов (запрет неявного преобразования типов данных, на необходимость которого мы неоднократно обращали внимание) — режим Option Strict On. Мы настоятельно рекомендуем включать его (вкладка Build диалогового окна Project Properties).

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

    Кроме многочисленных советов, теме Windows API посвящена наша статья "Работа с функциями Windows API и DLL". В своих публикациях мы часто упоминали (и еще чаще использовали в работе) серию книг американского автора и разработчика ПО Дана Эпплмана, посвященных Windows API для VB. Уже более восьми лет они неизменно входят в состав бестселлеров для VB-программистов. Год назад издательство "Питер" выпустило одну из последних книг этой серии: Эпплман Д. Win32 API и Visual Basic (+CD)/Пер. с англ. — СПб.: Питер, 2001. — 1120 с.: ил.

    Настоятельно рекомендуем приобрести ее, поскольку это действительно книга из разряда "вечных" (хотя мы-то с вами понимаем, что "вечность" в ИТ — это срок более 4-5 лет).

  4. Будьте очень аккуратны при работе со строковыми переменными. Помните, что это — динамические переменные и что операции с ними являются самыми ресурсоемкими. Советуем прочитать нашу статью "Особенности работы со строковыми переменными в VB".

  5. Учитывайте особенности работы VB-приложений в Windows с различными национальными установками. На эту тему можно посмотреть упомянутую статью "Особенности работы со строковыми переменными в VB", а также "Особенности обработки дат в VB".

  6. Помните о различиях режимов раннего и позднего связывания. При прочих равных условиях рекомендуем применять раннее связывание. (Подробнее об этом см. в статье "Особенности технологий раннего и позднего связывания в VB".)

  7. VBA-программисты! Помните, что для освоения VBA вам крайне необходимо изучать обычный VB (в том числе наши советы и статьи о VB). Дело в том, что в многочисленной литературе по Office/VBA акцент обычно делается на особенности работы с объектной моделью того или иного офисного приложения. При этом аспекты собственно программирования детально не рассматриваются, так как авторы совершенно справедливо полагают, что они уже обстоятельно изложены в публикациях о VB. Таким образом, не менее 70% информации в статьях и книгах о VB являются актуальными для VBA (в отношении Windows API — 100%), но при этом в материалах о VBA эти сведения обычно приводятся в минимальном объеме.

    Советуем также посмотреть нашу статью "Как осваивать программирование в среде MS Office/VBA 2000".

Наверное, это далеко не все так называемые "общие" советы. Кстати, архив всех наших публикаций по VB/VBA можно найти на нашем Web-сайте.

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

Совет 448. Готовьтесь к VB .NET

Мы абсолютно уверены, что для тех, кто собирается продолжать заниматься программированием (а не как мы во времена перехода от DOS к Windows — сменить профессию), вообще не стоит вопрос о том, переходить или не переходить на VB .NET. Вопрос в другом — когда это случится?

Впрочем, еще одним реальным вариантом является переход с VB 6.0 на C#, обладающий более гибкими возможностями по сравнению с VB .NET. (Мы считаем, что Microsoft сохранила определенные функциональные различия между VB .NET и C# исключительно из маркетинговых соображений "разделяй и властвуй". Но при этом нужно подчеркнуть, что C# создавался с чистого листа, специально под .NET, а при модернизации VB .NET корпорация все же была вынуждена учитывать проблему унаследованного кода.) Но тут следует подумать: расширенные функции C# могут быть просто неактуальными для вас, а синтаксис VB выглядит, на наш взгляд, более четким и наглядным, по крайней мере привычным. Мы уверены, что для 99% VB-программистов функциональность VB .NET будет вполне достаточной. К тому же вы можете легко реализовать технологию смешанного программирования, работая на VB .NET и в случае необходимости создавая какие-то функции на C#.

Начать изучение VB .NET нужно было еще полтора года назад. Но и сейчас еще не поздно.

Итак, переход на VB .NET неизбежен. Когда же и как он произойдет?

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

Не забывайте и о печальном опыте времен перехода от DOS к Windows: Многие программисты долго не хотели заниматься "тупым Windows-программированием" и в результате им пришлось менять профессию.

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

Таким образом, лучше всего уже сейчас определиться со своими текущими разработками, которые можно разделить на три категории:

  1. жизненный цикл этих разработок будет определяться исключительно VB 6.0 (см. совет 446);
  2. разработки сегодня ведутся на VB 6.0 с перспективой перехода на VB .NET;
  3. для новых приложений изначально выбран VB .NET.

Для последнего случая лучше всего подходят Web-приложения (VB .NET в этом плане имеет явные преимущества перед VB 6.0) и новые серверные приложения. Что касается клиентских приложений, то тут ключевым моментом является такой вопрос: установили ли уже ваши клиенты исполнительную среду .NET?

Мы не хотим в данной статье затрагивать тему новшеств VB .NET — этот вопрос требует отдельного рассмотрения. Ограничимся лишь одним простым примером:

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

Хотя мы профаны в С++/C#, в первой книге мы нашли много интересной и полезной информации. Что касается второй, то мы настоятельно рекомендуем прочитать ее всем, кто собирается заниматься программированием (и даже тем, кто уже от этого отказался). В книге очень хорошо рассказано о VB .NET и о .NET. Но самое замечательное в этом издании — общий подход к восприятию современных информационных технологий

На этом мы заканчиваем свои "Советы...". Но хотим еще раз предупредить: переход на VB .NET будет весьма непростым и потребует от вас серьезных усилий. Впрочем, выбора у вас просто нет...

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