Язык Visual Basic: версии, плюсы и минусы, статус в 2026 году

Язык Visual Basic: версии, плюсы и минусы, статус в 2026 году Полезное

Visual Basic (VB) — это семейство языков программирования Microsoft, выросших из BASIC, а не один язык. Под этим именем сегодня скрываются четыре разные технологии с разной судьбой: классический VB6, современный VB.NET, VBA для макросов Office и скриптовый VBScript. Ниже разбираю, чем они отличаются, какие у VB плюсы и минусы, где он реально используется в 2026 году и когда вместо него разумнее учить C#.

Мини-словарь, чтобы не путаться дальше:

  • VB6 (Visual Basic Classic) — язык и среда разработки для Windows-программ, последняя версия вышла в 1998 году.
  • VB.NET — язык платформы .NET с 2002 года; синтаксис похож на VB6, но устройство и библиотеки другие.
  • VBA (Visual Basic for Applications) — встроенный в Office язык макросов, близкий к VB6.
  • VBScript — облегченный скриптовый диалект для Windows и старого Internet Explorer.

Коротко об истории

BASIC появился в 1964 году в Дартмутском колледже как учебный язык. Microsoft выпустила Visual Basic 1.0 в 1991 году: главной идеей было «рисовать» окно программы мышью и дописывать код к кнопкам. Это сделало VB одним из самых массовых инструментов для офисных и корпоративных программ под Windows.

Версия 3.0 (1993) получила удобную работу с базами данных, 4.0 (1995) — поддержку 32-битных Windows, 5.0 (1997) — компиляцию в машинный код. VB6 (1998) стал последним классическим выпуском. В 2002 году вместе с .NET Framework вышел VB.NET — фактически новый язык, несовместимый с VB6 на уровне исходного кода.

Четыре Visual Basic: сравнение

Вариант Для чего Где выполняется Статус в 2026
VB6 десктоп-программы для Windows Windows, рантайм msvbvm60.dll среда разработки без поддержки, живет только в старых системах
VB.NET приложения на .NET .NET 10, .NET Framework поддерживается, но без новых возможностей языка
VBA макросы Excel, Word, Access, Outlook внутри приложений Office активно используется
VBScript скрипты администрирования, старые ASP-страницы Windows Script Host, IIS (Classic ASP) выводится из Windows, для новых задач не годится

Главное различие: VB6, VBA и VBScript — родственники по устройству (COM, тип Variant), а VB.NET — отдельный язык со строгой объектной моделью .NET. Код VB6 в VB.NET напрямую не переносится, его переписывают.

Статус Visual Basic в 2026 году

В 2020 году Microsoft объявила, что VB.NET переходит в режим поддержки: язык работает на современных версиях .NET (консольные приложения, библиотеки классов, WinForms, WPF), но развивать сам язык команда .NET не планирует. В актуальной стратегии это названо подходом consumption-only: VB может пользоваться новыми возможностями .NET и библиотек на C#, но собственного нового синтаксиса не получает. Возможности C# и VB.NET с тех пор расходятся, и новые шаблоны проектов .NET ориентированы в первую очередь на C#.

VB6 как среда разработки давно без поддержки, хотя старые программы на нем все еще запускаются в Windows. VBA, наоборот, живее всех: на нем держатся тысячи отчетов и автоматизаций в Excel. VBScript Microsoft постепенно убирает из Windows — сначала в виде отключаемого компонента, затем полностью.

Как выглядит VB.NET: минимальный пример

Проект создается командой .NET SDK. Шаблон консольного приложения для VB в SDK есть:

dotnet new console -lang VB -o VbDemo
cd VbDemo
dotnet run

Замените содержимое Program.vb на этот код:

Option Strict On

Module Program
    Sub Main()
        Dim total As Integer = 7
        Dim parts As Integer = 2

        Console.WriteLine(total / parts)    ' Integer / Integer дает Double
        Console.WriteLine(total \ parts)    ' целочисленное деление
        Console.WriteLine(total Mod parts)  ' остаток

        Dim scores(2) As Integer            ' индексы 0..2
        Console.WriteLine(scores.Length)

        Console.WriteLine(CInt(True))
        Console.WriteLine(Convert.ToInt32(True))
    End Sub
End Module

После dotnet run в консоли появится:

3.5
3
1
3
-1
1

Первая строка зависит от региональных настроек: на русской локали будет 3,5. Разбор по строкам:

  • Option Strict On запрещает неявные сужающие преобразования. По умолчанию в VB.NET он выключен, и компилятор молча превращает, например, Double в Integer.
  • Оператор / в VB не делает целочисленного деления: для двух Integer он возвращает Double (для Decimal — Decimal), а для целочисленного деления есть отдельный \. В C# наоборот: 7 / 2 для двух int дает 3.
  • Dim scores(2) задает верхнюю границу, а не размер: элементов три.
  • CInt(True) дает -1 — это наследие VB6, где «истина» хранилась как 16-битное число со всеми единицами. Метод .NET Convert.ToInt32(True) возвращает 1.

Типичная ошибка: граница массива

Неверный код — перебор массива по привычке из других языков:

Dim items(2) As String
For i As Integer = 0 To items.Length
    Console.WriteLine(items(i))
Next

Результат: цикл доходит до i = 3, и обращение items(3) выбросит IndexOutOfRangeException (первые три итерации успеют напечатать пустые строки). В VB For ... To включает верхнюю границу. Исправление:

Dim items(2) As String
For i As Integer = 0 To items.Length - 1
    Console.WriteLine(items(i))
Next
' или без индексов: For Each item As String In items

Особенности языка

  • Регистр не важен: Total и total — одно имя, а среда сама выравнивает написание.
  • Многословный синтаксис: блоки закрываются словами (End If, End Sub, Next), а не скобками. Код читается почти как текст.
  • Операторы And/Or проверяют обе части. Для короткого замыкания есть AndAlso и OrElse — частая ловушка при проверке на Nothing.
  • Мягкая типизация по умолчанию: в VB6 и VBA переменная без типа получает Variant, в VB.NET при Option Strict Off действуют неявные преобразования.
  • ООП по-разному: в VB6 есть классы и интерфейсы (Implements), но нет наследования реализации. В VB.NET полноценное наследование (Inherits), обобщения, LINQ, Async/Await.

Частый миф из старых статей — «в VB истина равна 1». В VB6 и VBA True равно -1, а в VB.NET это значение видно при преобразовании средствами VB (CInt, CType или неявно при Option Strict Off), тогда как методы .NET вроде Convert.ToInt32 дают 1.

Преимущества Visual Basic

  • Низкий порог входа. Читаемый синтаксис и прощающий компилятор позволяют быстро получить работающую программу.
  • Быстрая разработка интерфейсов под Windows. Дизайнер форм WinForms в Visual Studio по-прежнему поддерживает VB.NET.
  • Доступ ко всей платформе .NET. VB.NET пользуется той же библиотекой классов и пакетами NuGet, что и C#, и компилируется в тот же промежуточный код.
  • VBA есть везде, где есть Office. Для автоматизации отчетов не нужно ничего устанавливать.
  • Безопасная работа с памятью. В VB.NET нет ручного управления памятью, объекты убирает сборщик мусора.

Недостатки Visual Basic

  • Язык не развивается. Новые возможности .NET сначала и часто только появляются в C#.
  • Узкий рынок вакансий. Задачи на VB — в основном поддержка и миграция старых систем, а не новые проекты.
  • Мало современных материалов. Документация, примеры и ответы на форумах в основном на C#.
  • Ограничения по платформам. VB.NET-консоль и библиотеки работают на Linux и macOS через .NET, но WinForms и WPF — только Windows. VB6 и VBA привязаны к Windows (VBA есть и в Office для Mac, но с ограничениями).
  • Риски безопасности VBA. Макросы долго были каналом распространения вредоносов. Сейчас Office по умолчанию блокирует макросы в файлах из интернета, и включать их для непроверенных документов не стоит.

Стоит ли учить Visual Basic в 2026 году

Ответ зависит от задачи, а не от языка в целом:

Задача Что взять Когда иначе
Автоматизировать Excel или Word на работе VBA если нужна облачная версия Office — Office Scripts или Python в Excel
Поддерживать корпоративную программу на VB.NET VB.NET при переписывании — C# на той же платформе
Сопровождать старое приложение на VB6 VB6 плюс план миграции новую функциональность лучше выносить в .NET
Начать карьеру разработчика на .NET C# VB.NET — только если его требует конкретная работа
Писать скрипты администрирования Windows PowerShell VBScript не выбирать для новых скриптов

VB.NET и C#: одна платформа

VB.NET и C# компилируются в один и тот же промежуточный язык и используют одну библиотеку .NET. Поэтому переход с VB на C# — смена синтаксиса, а не платформы: классы, коллекции, LINQ и асинхронность работают одинаково. Для новых проектов на .NET обычно выбирают C#: именно в него Microsoft добавляет новые возможности языка.

Тот же пример с делением на C# показывает главное отличие в поведении:

int total = 7, parts = 2;
Console.WriteLine(total / parts);          // 3 - оба операнда int
Console.WriteLine((double)total / parts);  // 3.5 (на русской локали 3,5)
int[] scores = new int[2];                 // размер, а не верхняя граница
Console.WriteLine(scores.Length);          // 2

Выводы

  • Visual Basic — семейство из четырех технологий: VB6, VB.NET, VBA и VBScript, и у каждой своя судьба.
  • VB.NET поддерживается на современном .NET, но с 2020 года язык не развивается: нового синтаксиса нет, только поддержка использования новых возможностей .NET.
  • VBA остается практичным инструментом автоматизации Office, VB6 и VBScript — наследие без будущего.
  • Плюсы VB — простота и быстрый интерфейс под Windows, минусы — остановка развития и узкий рынок.
  • Для старта в .NET-разработке логичнее C#: платформа та же, а язык активно развивается.

Где применяется / связь с практикой

Освойте тему на практике

На практике VB чаще всего встречается в поддержке корпоративных систем и отчетов, и почти всегда рядом с ним уже есть C#-код на той же платформе .NET. Если хотите войти в .NET-разработку с актуальным языком, основы C# — прямое продолжение: те же классы, коллекции и среда Visual Studio, но с развивающимся синтаксисом. Системно это разбирается на курсе «C# Developer. Basic». Чтобы попробовать формат, загляните на бесплатные открытые уроки Otus.

FAQ

Можно ли вызывать код на VB.NET из C#?
Да. Библиотека классов на VB.NET подключается к C#-проекту как обычная сборка .NET, и наоборот, поэтому миграцию часто ведут постепенно.

Работает ли VBA в Google Таблицах или LibreOffice?
В Google Таблицах нет, там используется Apps Script. LibreOffice частично выполняет макросы VBA, но совместимость неполная, и сложные макросы приходится переписывать.

Чем открыть старый проект VB6?
Для правки кода нужна оригинальная среда VB6, которая официально не поддерживается. Инструменты автоматической конвертации в VB.NET из Visual Studio давно убраны, поэтому такие проекты обычно переписывают на .NET вручную.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)