**Visual Basic** on Microsoftin kehittämä BASIC-sukuinen yleiskäyttöinen ohjelmointikieli. Visual Basic pohjautuu 1980-luvulla julkaistuun QuickBASIC-kieleen. Visual Basic saavutti 1990-luvulla laajan suosion, joka on jatkunut 2000-luvun aikana. Kieltä käyttävät sekä aloittelijat että ammattilaiset ja se soveltuu sekä pienten että laajojenkin ohjelmien laadintaan.

Kielen historiaa
----------------

Visual Basic -kielen ensimmäinen versio esiteltiin vuonna 1991. Versio 1.0 oli saatavissa sekä Windowsille että MS-DOS-käyttöjärjestelmään. DOS-version kehitys kuitenkin loppui ja seuraavat versiot (2.0-6.0) toimivat enää vain Windowsissa. Vuonna 2002 tapahtui kielessä merkittävä uudistus. Tuolloin julkaistiin Visual Basic .Net (VB.NET), joka on myös kielen nykyinen versio. Se kuuluu Microsoftin .NET-perheeseen.

VB.NET-uudistuksesta huolimatta vuonna 1998 julkaistu Visual Basic 6.0 on edelleen laajalti käytössä. Yhtenä syynä vanhan version käyttöön on se, että VB.NET poikkeaa huomattavasti aiemmista versioista. Vanhojen ohjelmien muunnos VB.NET-ympäristöön on suhteellisen työlästä. 6.0-versiolla laaditut ohjelmat myös toimivat paremmin vanhoissa käyttöjärjestelmissä.

Murteita
--------

Visual Basicin pohjalta on laadittu eräitä sen kanssa hyvin samankaltaisia kieliä erityistarkoituksiin.

Visual Basic for Applications (VBA) on isäntäohjelman sisällä toimiva ohjelmointikieli. Se on käytössä mm. Microsoft Office -tuotteissa. Käyttötarkoitukseltaan VBA on makrokieli, jolla ohjataan ja täydennetään isäntäohjelman toimintoja. Kieliopiltaan VBA on hyvin Visual Basic 6.0:n kaltainen.

VBScript on WWW-sivujen ohjelmointiin soveltuva kieli. Sekin on hyvin läheistä sukua Visual Basic 6.0:lle. VBScriptillä voidaan ohjata sekä palvelimella sijaitsevia ASP-sivuja että WWW-sivun toimintoja selaimessa.

Käyttöympäristöt
----------------

Visual Basic -kieltä kirjoitettiin alun perin käyttäen ohjelmointiympäristöä, jonka nimi oli myös Visual Basic kuten itse kielenkin. Se oli graafinen ohjelmointiympäristö. Nykyisellä Visual Basic .Net -kielellä ohjelmoidaan yleensä käyttäen Microsoftin Visual Studiota, joka sekin on graafinen ohjelmointiympäristö, mutta joka nykyisin on osa Microsoft .NET -perhettä. Visual Basic for Applications -ohjelmat laaditaan yleisesti isäntäohjelman sisään rakennetussa VBA-ohjelmointiympäristössä.

Visual Basic .Net -kielellä ohjelmoidut ohjelmat toimivat .Net-ympäristössä. Ohjelmien ajamista varten tulee asentaa .NET framework, jonka saa ladattua Microsoftin sivuilta.
Vanhemmilla Visual Basic -versioilla (1.0–6.0) laaditut ohjelmat toimivat ainoastaan Windows-käyttöjärjestelmissä. Poikkeuksena on vanha Visual Basic 1.0 DOS-versio, jolla tehdyt ohjelmat toimivat MS-DOS-järjestelmässä. Nykyään Visual Basicilla tehtyjä ohjelmia voi ajaa myös esimerkiksi Linuxissa käyttäen jotakin Windows-emulaattoria.

Visual Basic for Applications -ohjelmat toimivat niissä järjestelmissä, joissa kyseinen isäntäohjelmakin toimii. VBScript-kieli puolestaan toimii ASP-palvelimissa ja Microsoftin Internet Explorer -selaimessa.

Syntaksi ja ominaisuudet
------------------------

Visual Basic on BASIC-sukuinen kieli. Sukulaisuus näkyy kielen syntaksissa. Visual Basicin kielioppi periytyy suoraan Microsoftin aiemmista tuotteista (Mbasic, SV-Basic, MSX-Basic, GW-Basic, QuickBasic, AmigaBASIC). Visual Basic on rivipohjainen kieli. C-sukuisista ohjelmointikielistä poiketen lauseet erotetaan rivinvaihdolla tai (tarvittaessa) kaksoispisteellä, ei puolipisteillä. Lohkoja ei varsinaisesti määritellä millään tietyllä standardilla tavalla (vrt. C:n aaltosulut), vaan lohkon alussa ja lopussa on varatut sanat (esimerkiksi While ... Wend, If ... End If, For ... Next), jotka määrittelevät lohkon.

Visual Basic .Net on ohjelmointikielenä jonkin verran lähempänä C-sukuisia kieliä kuin aiemmat Visual Basicin versiot. Tämä johtuu pitkälti .NET-frameworkin käytöstä. Ominaisuuksiltaan VB.NET vastaa hyvin pitkälle C#-kieltä. Ensimmäisissä versioissa mahdollisuudet olio-ohjelmointiin olivat hyvin rajalliset, mutta VB.NET:in myötä kielestä on tullut täysiveroinen oliokieli.

Korkean tason kielenä Visual Basic on ilmaisuvoimaltaan sillä tavoin rajoittunut, että laitteistotasoon on vaikea päästä suoraan käsiksi. Toisaalta samasta syystä useiden abstraktien asioiden käsittely on kielessä selkeätä ja yksinkertaista.

Suuri hyöty Visual Basicissä on myös kääntäjän mukana tuleva laaja työkaluvalikoima. Ohjelmaa on, useista käännettävistä kielistä poiketen, mahdollista tulkata virheiden paikannusta varten. Tulkkauksen aikana ohjelmoijalla on mahdollisuus keskeyttää ohjelman ajo lähes milloin tahansa, tarkastella muuttujien arvoja ja jopa muuttaa niitä. Visual Basic -ohjelmat on mahdollista myös kääntää. Tällainen työkaluvalikoima ei kuitenkaan ole pelkästään Visual Basicin ominaisuus. Muillekin ohjelmointikielille on kehitetty vastaavia työkaluja, mutta usein ne on hankittava erikseen, joka voi lisätä kustannuksia merkittävästi. Toisaalta Visual Basicille on mahdoton löytää muita kuin Microsoftin kääntäjiä.

Esimerkkiohjelma
----------------

```
Private Sub Form\_Load() ' Määritellään aliohjelma Form\_Load (joka käynnistyy automaattisesti)

 Dim strNimi as String ' Määritellään muuttuja (tätä VB:ssä ei ole pakko tehdä)
 strNimi = InputBox("Mikä on nimesi?") ' Kysytään käyttäjältä nimeä Windows-dialogin avulla
 MsgBox "Hei "& strNimi & "!" ' Näytetään Windowsin viestiruutu, jossa tervehdys
 
End Sub

```

Hei Maailma -ohjelma:

```
Private Sub Form\_Load() ' Määritellään aliohjelma Form\_Load (joka käynnistyy automaattisesti)
 MsgBox "Hei Maailma!" ' Hei Maailma -teksti on viestiruudun teksti 
End Sub

```

Kielen erityispiirteitä
-----------------------

Visual Basicissä (ei kuitenkaan VB.NET:issä) on lukuisten muiden BASIC-kielten tapaan mahdollista käyttää rivinumeroita. Rivinumerot eivät kuitenkaan ole välttämättömiä. Tavallisesti niitä ei käytetäkään. Goto-hyppykäsky halutulle riville on mahdollinen samoin kuin Gosub-hyppy aliohjelmaan. Nämäkään eivät ole tavallisia, sillä kielessä on hyvä valikoima ehto- ja silmukkarakenteita aivan kuten useimmissa muissakin ohjelmointikielissä.

Visual Basicissä on mahdollista käyttää muuttujia esittelemättä niitä. Tällainen muuttuja voi sisältää minkä tyyppistä tietoa tahansa. Tämän ominaisuuden vuoksi saattaa syntyä hyvinkin vaikeasti havaittavia virheitä erityisesti silloin, kun muuttujan nimessä on kirjoitusvirhe. Sellaiset voidaan kuitenkin estää kirjoittamalla ohjelmamoduulin alkuun rivi 

```
Option Explicit ' VB

```

tai 

```
Option Explicit On ' VB.NET

```

Visual Basic 6.0:aan asti virheidenkäsittelyssä voidaan käyttää määrittelyä **On Error Resume Next**. Virheen sattuessa ohjelma ei aina anna virheilmoitusta, vaan se jatkaa suoritettua seuraavasta lauseesta. Jos virhe aiheutuu arvon palauttavassa lausekkeessa, se saa arvon nolla. Tämä voi aiheuttaa odottamattomia seurauksia esimerkiksi käytettäessä loogista Not-operaatiota. 

```
' Setti on RecordSet-tyyppinen olio, mutta sitä ei ole avattu
On Error Resume Next
Do While Not Setti.EOF ' EOF-kutsu aiheuttaa virheen, mutta virheenkäsittely palauttaa arvon 0 --> Not 0 = True
 ' Tehdään jotain
 Setti.MoveNext ' Taas aiheutuu virhe, mutta virheenkäsittely estää virheilmoituksen
Loop ' Näin saatiin aikaan ikuinen silmukka

```

Visual Basicissä on versiosta 3.0 alkaen ollut hyvä tuki tietokannoille. Tuki mahdollistaa graafisten käyttöliittymien luomisen tietokantoihin suhteellisen vaivattomasti.

Katso myös
----------

* Gambas, avoimen lähdekoodin kilpailija Visual Basicille.

Lähteet
-------

1. ↑  Ek, J. Eriksson, U. Isanovic, S.: "Johdanto", *VBA-ohjelmointi Office 2000:ssa*, s. 5. Schildts Kustannus Oy, 2000.

Kirjallisuutta
--------------

* Franklin, Keith: *VB.NET*. Jyväskylä: Docendo Finland Oy, 2002. ISBN 951-846-156-2. (suomeksi)
* Suvisaari, Sampo & Suvisaari, Osmo: *Visual Basic 4*. Espoo: Suomen ATK-kustannus, 1997. ISBN 951-762-363-1.

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **Visual Basic**.
* Visual Basic 2008 Express Edition Kieleen voi tutustua Microsoftin sivulta ilmaiseksi ladattavissa olevalla versiolla.

|  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Yleisimmät ohjelmointikielet |
| --- |
|  |
| Tuotantokäytössä | 
* Ada
* APL
* Assembly
* AWK
* C
* C++
* C#
* COBOL
* Dart
* Delphi
* Eiffel
* Erlang
* Forth
* Fortran
* Go
* Java
* JavaScript
* Kotlin
* Lisp
* Lua
* Objective-C
* Pascal
* Perl
* PHP
* PostScript
* Python
* R
* Ruby
* Rust
* Smalltalk
* Swift
* Tcl
* TypeScript
* Visual Basic

 |
|  |
| Akateemiset | 
* CLU
* Haskell
* Logo
* ML
* OCaml
* Prolog
* Scheme

 |
|  |
| Historialliset | 
* ALGOL
* BASIC
* Modula-3
* MUMPS
* Plankalkül
* PL/I
* Simula

 |
|  |
| Luettelo yleisimmistä ohjelmointikielistä |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Microsoft |
| --- |
|  |
| Tuotteet | 

|  |  |
| --- | --- |
| Laitteisto | 
* Kinect
* HoloLens
* LifeCam
* Surface
	+ Hub
	+ Go
	+ Laptop
	+ Laptop Go
	+ Pro
	+ Studio
	+ Duo
	+ Neo
* Xbox

 |
|  |
| Ohjelmisto | 
* 365
* Clipchamp
* Dynamics
* Havok
* Office
* Power Platform
* Servers
* Start
* Tay
* Visual Studio
* Visual Studio Code
* Windows

 |
|  |
| Ohjelmointikielet | 
* BASIC
	+ VB.NET
	+ VBA
	+ VBScript
	+ Visual Basic
* C#
* C/AL
* F#
* MVPL
* Power Fx
* PowerShell
* Transact-SQL
* TypeScript
* Q#
* *Visual J#*
* *Visual J++*

 |
|  |
| Web-ominaisuudet | 
* Azure
* Bing
* Learn
	+ Channel 9
	+ Developer Network
	+ TechNet
* GitHub
* LinkedIn
	+ LinkedIn Learning
* MSN
* Outlook.com
* Store
* Translator

 |

 |
|  |
| Yritys | 

|  |  |
| --- | --- |
| Tapahtumat | 
* Build
* Ignite
* Inspire
* MIX
* PDC
* WinHEC

 |
|  |
| Osastot | 
* Microsoftin tekniset ryhmät
	+ Microsoft Mobile
	+ Skype-yksikkö
* Digital Crimes Unit
* Garage
* Press
* Research
* Myymälät
* .NET Foundation
* Outercurve Foundation
* Gaming
	+ Xbox Game Studios
	+ ZeniMax Media
	+ Activision Blizzard

 |

 |
|  |
| Henkilöt | 
* Bill Gates
* Paul Allen
* Satya Nadella (CEO)

 |
|  |
| Oikeustapaukset | 
* *Komissio vs. Microsoft*
* *Yhdysvallat vs. Microsodt*

 |

 |

|  |  |  |
| --- | --- | --- |
| 

|  |  |
| --- | --- |
| Auktoriteettitunnisteet: Kansalliset Muokkaa Wikidatassa | 
* Yhdysvallat

 |

 |