Visual Basic .NET
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)
- Visual Basic.NET (VB 7.0) — у 2002 році з Visual C# і ASP.NET.
- Visual Basic.NET 2003 (VB 7.1) — з .NET Framework 1.1.
- Visual Basic 2005 (VB 8.0) — кінець жовтня 2005 року, у складі Visual Studio 2005 (.NET 2.0), частково підтримує проєкти попередньої версії.
- Visual Basic 2005 Express — урізана безплатна версія не для комерційних цілей.
- Visual Basic 2008 (VB 9.0) — Visual Studio 2008 (.NET 3.5, у перших релізах — 3.0), повністю підтримує проєкти попередньої версії.
- Visual Basic 2008 Express — урізаний попередній.
- Visual Basic 2010 (VB 10.0) — Visual Studio 2010 (.NET 4.0), повністю підтримує дві попередні версії, призначена для програмування під віндовс від XP до 7.
- Visual Basic 2010 Express — урізаний попередній.
- 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.
- Visual Basic 2012 Express — урізаний попередній (існує тільки як частина Visual Studio Express, бо Microsoft починаючи з цієї версії не випускає окремих мов у експрес-варіантах).
- 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:
- Visual Studio 2013 Update 1 — листопад 2013.
- Visual Studio 2013 Update 2 — травень 2014.
- Visual Studio 2013 Update 3 — серпень 2014.
- Visual Studio 2013 Update 4 — листопад 2014.
- Visual Basic 2015 (VB 14.0) — Visual Studio 2015 (.NET 4.6 та 4.6.1), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня.
- Visual Studio 2013 Update 1 — листопад 2015.
- Visual Studio 2013 Update 2 — березень 2016.
- Visual Studio 2013 Update 3 — червень 2016.
- Visual Basic 2017 (VB 15.0) — Visual Studio 2017 (.NET 4.6.x та 4.7.x), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
- Visual Basic 2019 (VB 16.0) — Visual Studio 2019 (.NET 4.7.x та 4.8.x), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
- 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