Visual Basic .NET

Visual Basic .NET
Типclass-based programming languaged
Високорівнева мова програмування
strict programming languaged
event-driven programming languaged
мультипарадигмальна мова програмування
імперативна мова програмування
мова функціонального програмування і generic programming languaged
РозробникMicrosoft
Стабільний випускVisual Basic 2022 (17.9.2) (27 лютого 2024; 8 місяців тому (2024-02-27))
Платформа.NET Framework, Mono і .NET
Операційна системаWindows, Android, Berkeley Software Distribution, IOS, Linux, macOS, Solaris і UNIX
ЛіцензіяApache Software License 2.0d
Репозиторійhttps://github.com/dotnet/vblang, https://github.com/dotnet/roslyn
Вебсайтdocs.microsoft.com/en-us/dotnet/visual-basic/

Visual Basic .NET — найсучасніша BASIC-базована мова програмування. Станом на лютий 2022 року найновішою є версія VB.NET 2022 — частина VS 2022.

Працює ця мова на базі .NET- фреймворку (працює за допомогою CLR), для роботи з яким також розроблена мова програмування C#, до 2005 року існувала J#, а починаючи з 2010 додана F#. З виходом .Net Core шаблони для VB.NET не були включені, тобто на ньому можна було писати тільки для .NET Framework, а для .Net Core тільки деякі бібліотеки, що викликало думку, що розвиток мови припинений, але з виходом .Net 5 додані усі шаблони за винятком Unity-проєктів, для яких і надалі може слугувати як мова розробки бібліотек.

VB.NET — є першою з сімейства повністю об'єктноорієнтованою мовою, у ній підтримується всі основні принципи ООП, за винятком множинного успадкування.

Частково також підтримується фреймворком Mono.

Історія

[ред. | ред. код]

VB.NET розвивається як частина Visual Studio починаючи з 2001 року, перший офіційний реліз у 2002 (посів місце Visual Basic і відповідно версії нумеруються починаючи з числа 7)

  1. Visual Basic.NET (VB 7.0) — у 2002 році з Visual C# і ASP.NET.
  2. Visual Basic.NET 2003 (VB 7.1) — з .NET Framework 1.1.
  3. Visual Basic 2005 (VB 8.0) — кінець жовтня 2005 року, у складі Visual Studio 2005 (.NET 2.0), частково підтримує проєкти попередньої версії.
  4. Visual Basic 2005 Express — урізана безплатна версія не для комерційних цілей.
  5. Visual Basic 2008 (VB 9.0) — Visual Studio 2008 (.NET 3.5, у перших релізах — 3.0), повністю підтримує проєкти попередньої версії.
  6. Visual Basic 2008 Express — урізаний попередній.
  7. Visual Basic 2010 (VB 10.0) — Visual Studio 2010 (.NET 4.0), повністю підтримує дві попередні версії, призначена для програмування під віндовс від XP до 7.
  8. Visual Basic 2010 Express — урізаний попередній.
  9. Visual Basic 2012 (VB 11.0) — Visual Studio 2012 (.NET 4.5), призначена для Windows 8 та Windows Store (частково, без тайл-інтерфейсу та власне Windows Store, підтримується також Windows 7 і Windows Vista за умови встановлення фреймворку), повністю підтримує усі версії .NET від 1.1 тобто дозволяє програмувати для попередніх версій Windows починаючи з Windows 2000.
  10. Visual Basic 2012 Express — урізаний попередній (існує тільки як частина Visual Studio Express, бо Microsoft починаючи з цієї версії не випускає окремих мов у експрес-варіантах).
  11. Visual Basic 2013 (VB 12.0) — Visual Studio 2013 (.NET 4.5.1 та 4.5.2), призначена для Windows 8.1 та Windows Store, за системними вимогами та можливостями (при застосуванні з попередніми версіями) не відрізняється від попереднього випуску, тільки не підтримує розробку під Windows XP. Visual Studio 2013 і відповідно Visual Basic .NET має наступні Update:
    1. Visual Studio 2013 Update 1 — листопад 2013.
    2. Visual Studio 2013 Update 2 — травень 2014.
    3. Visual Studio 2013 Update 3 — серпень 2014.
    4. Visual Studio 2013 Update 4 — листопад 2014.
  12. Visual Basic 2015 (VB 14.0) — Visual Studio 2015 (.NET 4.6 та 4.6.1), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня.
    1. Visual Studio 2013 Update 1 — листопад 2015.
    2. Visual Studio 2013 Update 2 — березень 2016.
    3. Visual Studio 2013 Update 3 — червень 2016.
  13. Visual Basic 2017 (VB 15.0) — Visual Studio 2017 (.NET 4.6.x та 4.7.x), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
  14. Visual Basic 2019 (VB 16.0) — Visual Studio 2019 (.NET 4.7.x та 4.8.x), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
  15. Visual Basic 2022 (VB 16.0) — Visual Studio 2019 (.NET Framework 4.7.x, 4.8.x та .Net 5, 6, 7), призначена для Windows 10 та 11, а також кросплатформної розробки (Windows 11, macOS, Linux, Android, iOS), але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.

Починаючи з 2013 року Express замінено на Community Edition, що є повною версією з обмеженнями комерційного використання, тобто малі команди та індивідуальні розробники можуть користуватись нею безплатно.

Назва мови програмування

[ред. | ред. код]

VB — абревіатура від Visual Basic — безпосереднього предка мови та .NET — використовувана платформа. (хоча повна назва мови — Visual Basic .NET її часто називають VB.NET для диференціації від попередніх версій така ситуація, імовірно, триватиме до повного виходу з ужитку версії 6.0).

Особливості мови

[ред. | ред. код]

Реалізовано всі можливості CLR з деякими надбудовами (у більшості випадків це так званий синтаксичний цукор).

У зв'язку з наявністю традиційних назв типів у мові є також шість специфічних типів, що застосовуються поряд з загальновживаними, а саме:

Тип BASIC-аналог Опис
Int16 Short 16-бітне знаковане ціле число
UInt16 UShort 16-бітне беззнакове ціле число
Int32 Integer 32-бітне знаковане ціле число
UInt32 UInteger 32-бітне беззнакове ціле число
Int64 Long 64-бітне знаковане ціле число
UIn64 ULong 64-бітне беззнакове ціле число

Вважається, що ці назви зсуваються зі зміною технологій обчислення, тобто коли набудуть поширення 128-бітні процесори, усі назви посунуться, тому що вони не прив'язані до конкретної бітності, а є чвертю, половиною та повною бітностями, для системи з найвищою бітністю (на даний час - AMD64 / Intel64).

Опис статичного класу здійснюється конструкцією «Module … End Module», що створює ілюзію ніби у мові є процедури, які не належать ніякому класу, бо доступ до всіх членів такого класу (за відсутності конфліктів імен) здійснюється через загальний простір імен. Це можна проілюструвати наступними прикладами:

Module MainModule  Sub Main   Console.WriteLine(Func1)   Console.WriteLine(Func2)  End Sub End Module Module M1  Public Function Func1() As Integer   Return 1  End Function End Module Module M2  Public Function Func2() As Integer   Return 2  End Function End Module 

Функції з різних просторів імен викликаються з головного простору імен.

Module MainModule  Sub Main   Console.WriteLine(M1.Func1)   Console.WriteLine(M2.Func1)  End Sub End Module Module M1  Public Function Func1() As Integer   Return 1  End Function End Module Module M2  Public Function Func1() As Integer   Return 2  End Function End Module 

Функції вимагають вказання класу до якого належать.

Особливим також є формування текстових констант: мова не підтримує так званих esc-послідовностей, тобто для вставки у текстову константу деяких символів необхідно використовувати вбудовані константи, наприклад:

Const TextConstant = "First line" & vbCrLf & "Second line" 

вставка «перенесення рядка»

Особливим є обмеження текстових констант їх обмежують символи прямі лапки " але пара прямих лапок не обмежує константу, а служить заміною символу у ній в середині, тобто константа описана виразом: "This is «„word“» inside quotes" міститиме наступне значення This is «word» inside quotes

Також мова не має ключового слова для визначення розширення, тобто розширення класу пишеться наступним чином.

Public Module ListExtensions  <Runtime.CompilerServices.Extension>  Public Function CountGreaterThan(l As List(Of Integer), n As Integer) As Integer   Return l.Where(Function(i) i > n).Count  End Function End Module 

В коді такі фунції викорстовужться як звичайні члени відповідного класу, хоча насправді вони є статичними функціями де екземпляр класу є першим аргументом.

Dim L As New List(Of Integer) From {1, 2, 3, 4, 5} Dim Greater2 = L.CountGreaterThan(2) 

Порівняння з іншими мовами

[ред. | ред. код]

Найближчою (майже ідентичною) за фукціональними властивостями є C#, найподібнішою за синтаксисом - VBA.

  VB.NET C# VBA
Синтаксис BASIC-подібний з вкрапленнями C майже ідентичний C BASIC-подібний
Об'єктна парадигма часткова (як у .NET) часткова (як у .NET) у зародковому стані
Типізація строга з широкими, подекуди «розхлябаними», можливостями неявного приведення строга з можливостями неявного приведення вільна з типом Variant
Компіляція (інтерпретація) компілятор в IL компілятор в IL інтерпретатор
Специфіка C# C++ та інші тільки як скомпільовані бібліотеки можна включати unmanaged code (C++) обмежено, як скомпільовані бібліотеки
Специфіка VB.NET спрощені конструкції доступу до системи (наприклад до CurrentCulture), широкі можливості форматування даних при виводі   широкі можливості форматування даних при виводі

Недоліки

[ред. | ред. код]
  • Успадковане від предка розхлябане приведення типів по замовчуванню та пізнє зв'язування (треба вимикати, режимом Option Strict).
  • Досить велика, але рідко потрібна (для забезпечення належної роботи код необхідно переписувати) бібліотека сумісності з Visual Basic, починаючи з 2010 (10.0, .NET 4.00) — відсутня.
  • C-подібні конструкції, що не вписуються у синтаксис (даний недолік — умовність, до якої досить швидко звикається).

Переваги

[ред. | ред. код]
  • Автоматичне визначення типу змінних з присвоюваного значення (вигідне при використанні у невеликих фрагментах коду таких, як наприклад, методи).
  • Поєднання простоти та зрозумілості синтаксису з широкими можливостями .NET.
  • Наявність зручних BASIC-подібних конструкцій (яких не було у попередніх мовах).
  • Легка інтеграція з офісними програмами (аналогічний базовий синтаксис).
  • Легкість переходу з інших мов при потребі.

Приклад коду «Hello World!»

[ред. | ред. код]
Module MainModule  Sub Main   Console.WriteLine("Hello World!")  End Sub End Module 


Див. також

[ред. | ред. код]

Джерела

[ред. | ред. код]