# Visual Basic

Il Visual Basic (formalmente abbreviato VB) è un linguaggio di programmazione a eventi creato da Microsoft nel 1991, la cui sintassi deriva dal BASIC: nel 2008 Microsoft ha cessato il supporto all'IDE per tale linguaggio.

## Descrizione
### Caratteristiche

* Facilità d'uso (non utilizza formalità di punteggiatura tipica di quasi tutti gli altri linguaggi);
* il suo ambiente di lavoro RAD che permette di realizzare in breve tempo interfacce GUI anche complesse;
* il pratico accesso alle basi dati;
* la creazione di controlli ActiveX con il linguaggio stesso (anche se nelle prime versioni si doveva usare il linguaggio C).
Tramite l'integrazione dei controlli VBX (nelle versioni a 16 bit), dei controlli OCX (presenti nelle versioni a 32 bit) e dei collegamenti OLE presenti nell'ambiente di lavoro o realizzati da altri programmatori, è possibile aggiungere potenzialità al linguaggio, aggiungendo nei propri progetti nuove funzioni o ampliando funzioni già esistenti.

### Peculiarità

* Indice di base degli array. Il primo elemento di un array può essere referenziato con l'indice 0 o con l'indice 1 (in base alle impostazioni del parametro "option base"); questo può causare una certa confusione quando si legge del codice di Visual Basic. L'indice inferiore inoltre non è limitato al valore di 0 od 1 in quanto può essere definito diversamente al momento della dichiarazione dell'array. In questo modo sia il limite inferiore dell'array che quello superiore sono personalizzabili.
* Possibilità di eseguire un'applicazione senza effettuare una compilazione completa; in questo modo è possibile cambiare il codice e continuare l'esecuzione direttamente in fase di debug.

### Funzionalità non supportate

* Programmazione orientata agli oggetti. Visual Basic, fino alla versione 4, non supporta la programmazione orientata agli oggetti. Successivamente con la versione 5 e 6 vi è un supporto limitato alla programmazione orientata agli oggetti. Non si può per esempio implementare l'ereditarietà degli oggetti ed altro. In Visual Basic .Net però la programmazione orientata agli oggetti è pienamente supportata.
* Multithreading. Nelle versioni "pre .NET", non esiste un supporto diretto per la programmazione multithread (esistono alcuni oggetti COM di terze parti che implementano alcune funzionalità tipiche, e naturalmente sono sempre possibili chiamate all'API di Windows).
* Puntatori. La gestione dei puntatori è molto più limitata rispetto a molti altri linguaggi (anche in questo caso, per molte operazioni è necessario ricorrere direttamente a chiamate all'API di Windows)
* Numerici senza segno. I tipi di dati numerici supportati da Visual Basic sono esclusivamente quelli con il segno (da 8 a 32 bit), mentre molti altri linguaggi supportano nativamente i numerici senza segno.
Molte di queste lacune sono state colmate con l'uscita di Visual Basic .Net, una nuova versione di Visual Basic basata sulla piattaforma .NET Framework (Vedi sotto).

## Linguaggi derivati e implementazioni
### Visual Basic .NET

Con l'uscita del .NET Framework, Microsoft ha introdotto una nuova "visione" del suo più famoso linguaggio di sviluppo. Non è, perciò, un aggiornamento del vecchio VB6, ma un nuovo linguaggio che integra tutte le classi di base del framework .NET, mantenendo una sintassi simile a quella di Visual Basic. Questo cambiamento ha interrotto la compatibilità verso il basso di Visual Basic, ma ha colmato tutte quelle carenze tipiche del VB6 descritte in precedenza. Sono state introdotte tutta una serie di funzionalità tipiche del .NET Framework, come "remoting", "Web service", "Servizi Windows", ADO.NET e il completo supporto alla programmazione a oggetti (ereditarietà, polimorfismo, ecc.). Anche se esiste un tool per la migrazione delle applicazioni, alcune funzionalità non possono essere convertite automaticamente, richiedendo quindi uno sforzo successivo per completare la migrazione.
Molte delle originali carenze sono state colmate, ma questo ha reso Visual Basic .Net un linguaggio più complesso del suo predecessore, al tempo stesso estremamente più potente e versatile. Alcuni ritengono che il supporto per Visual Basic .NET diminuirà nel tempo a favore del C#, che diventerà il linguaggio più utilizzato in ambito .NET. Tuttavia, al momento, Microsoft non ha rilasciato alcuna dichiarazione ufficiale al riguardo e fornisce il pieno supporto a Visual Basic .Net così come agli altri linguaggi integrati (C++, F#, ecc.). Inoltre, essendo un'architettura basata sul .NET Framework, i linguaggi condividono le stesse identiche potenzialità; di conseguenza, la scelta di utilizzare l'uno o l'altro linguaggio è una cosa influenzata più dalla cultura degli sviluppatori che dalle reali necessità tecniche. Analizzando la presenza di Visual Basic .NET in Internet è chiaro che questo linguaggio rimane tuttora il punto di riferimento e la prima scelta della maggior parte dei programmatori.

### Visual Basic for Applications

Abbreviato in VBA, è una implementazione inclusa nei programmi Microsoft Office.

## Programma di esempio
### Hello World!

Il seguente esempio, inserito nell'evento Form_Load (l'evento che scatta al caricamento del form) fa apparire un popup (con il solo bottone OK, per chiuderlo) e la scritta "Hello World!".
Un secondo campo del MsgBox, non presente nell'esempio in quanto facoltativo, modifica l'icona del tipo di messaggio che si vuole visualizzare (es: VBCritical, VBInformation) e il suono di attivazione della form che corrisponderà ai parametri di Windows.
Se si vuole scrivere "Hello World!" in un campo di testo del proprio progetto, al caricamento del main form, occorrerà trascinare un controllo Label sul form, e nell'evento Form_load scrivere il seguente codice:
Oppure si può stampare il testo nella finestra stessa con il seguente codice:
Es. in VB .Net 2008: Il seguente esempio, inserito nell'evento Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load (l'evento che scatta al caricamento del form) fa apparire un popup (con il solo bottone OK, per chiuderlo) e la scritta "Hello World!".
Un secondo campo del MsgBox, non presente nell'esempio in quanto facoltativo, modifica l'icona del tipo di messaggio che si vuole visualizzare (es: MsgBoxStyle.Critical, MsgBoxStyle.Information) e il suono di attivazione della form che corrisponderà ai parametri di Windows.
Se si vuole scrivere "Hello World!" in un campo di testo del proprio progetto, al caricamento del main form, occorrerà trascinare un controllo label sul form, e nell'evento Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load scrivere il seguente codice:
In questo caso non si può stampare il testo nella finestra stessa.

## Controversie

Molti programmatori hanno un rapporto difficile con Visual Basic in quanto è stato progettato per essere un linguaggio semplice e molte caratteristiche che sono presenti in linguaggi come Java non sono disponibili in Visual Basic. Nell'interesse della convenienza e del rapido sviluppo, alcune funzionalità come la verifica del "cast" dei dati e la dichiarazione obbligatoria delle variabili (anche se è possibile rendere questa dichiarazione obbligatoria) sono disabilitate. Questo rende Visual Basic molto semplice da utilizzare, ma i programmi così realizzati possono essere distribuiti con errori nascosti dovuti a questa mancanza di controlli.
Molti critici di Visual Basic spiegano che la sua natura semplice è dannosa nel lungo periodo. Innanzitutto, è spesso utilizzato per insegnare la programmazione proprio a causa della sua semplicità, ma imparare a programmare in Visual Basic non introduce i programmatori a molte delle tecniche e dei costrutti fondamentali della programmazione. In secondo luogo, come già detto in precedenza, la possibilità di disabilitare errori e avvertimenti in fase di compilazione può rendere difficoltosa la ricerca degli errori. Molti dei suoi sostenitori insistono, invece, sul fatto che la sua semplice natura è il suo punto di forza, in quanto permette un rapido sviluppo di applicazioni da parte di programmatori esperti e una curva di apprendimento piuttosto breve per i programmatori che provengono da altri linguaggi. Inoltre, le applicazioni Visual Basic possono essere integrate con le basi dati in maniera molto semplice.
Visual Basic è, inoltre, un agglomerato di funzionalità e sintassi diverse con meno consistenza, ma con più tolleranza degli altri moderni linguaggi di programmazione. Alcune istruzioni come "gosub", "on error" e la dichiarazione del tipo di variabile con l'ultimo carattere del nome (ad esempio miaStringa$ per le stringhe), sono retaggi delle origini del Basic che sono state incluse per avere retrocompatibilità.
Il linguaggio continua ad attirare molti apprezzamenti e molte critiche, ma la grande base "storica" di programmatori che lo hanno utilizzato e che basano su di esso la propria produttività fa sì che continui ad avere una grande diffusione, nonostante l'uscita del successore Visual Basic .Net. È bene ricordare che Visual Basic .NET non è una semplice evoluzione di VB6, ma è a tutti gli effetti un altro linguaggio, ad oggetti, basato su classi, costruttori e forti tipizzazioni che lo rendono un sofisticato strumento di sviluppo per la nuova generazione di software e di sistemi operativi.

## Versioni

* Visual Basic 1.0 per Windows (maggio 1991). L'approccio per collegare il linguaggio di programmazione con l'interfaccia grafica è derivato da un sistema chiamato Tripod, sviluppato in origine da Alan Cooper.
* Visual Basic 1.0 per DOS (settembre 1992). Il linguaggio in sé non era compatibile con quello di Visual Basic per Windows. L'interfaccia utilizzava i caratteri ASCII estesi per simulare l'apparenza di una interfaccia grafica.
* Visual Basic 2.0 (novembre 1992). L'ambiente di sviluppo era stato semplificato e la velocità aumentata.
* Visual Basic 3.0 (Estate 1993). Venne rilasciato nelle versioni Standard e Professional. Includeva un motore di database che poteva leggere e scrivere basi dati Access.
* Visual Basic 4.0 (agosto 1995). È stata la prima versione che permetteva di creare applicazioni a 16 bit o 32 bit. È stata inoltre introdotta la possibilità di scrivere classi in Visual Basic.
* Visual Basic 5.0 (febbraio 1997). Viene rilasciata una versione esclusivamente per lo sviluppo a 32 bit. Visual Basic 5.0 offriva anche la possibilità di compilare in eseguibili Windows nativi, in modo da migliorare la velocità rispetto agli eseguibili compilati in P-Code.
* Visual Basic 6.0 (Estate 1998-2006). Sono state aggiunte numerose funzionalità, fra cui la possibilità di creare applicazioni web. VB6 ha smesso di essere supportato da Microsoft nel marzo 2008. Sono stati rilasciati diversi Service pack per correggere o aggiungere funzionalità. L'ultimo service pack installabile è il 6.
Per quanto Visual Basic 6.0 IDE sia non più supportato dall'8 aprile 2008, la squadra di sviluppo di Visual Basic è ufficialmente impegnata a mantenere la compatibilità "It Just Works" delle applicazioni Visual Basic 6.0 su Windows Vista, Windows Server 2008 inclusa la R2, Windows 7, Windows 8, Windows 8.1, Windows Server 2012 e Windows 10. Ancora nel 2014 ci sono decine di migliaia di sviluppatori che preferiscono Visual Basic 6.0 a Visual Basic .NET. Inoltre, negli ultimi anni alcuni sviluppatori hanno chiesto con insistenza che venga sviluppata una versione nuova di Visual Basic 6.0.