Visual Basic .NET: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix.
m Corretta una parola mal scritta e aggiunto link ipertestuale
 
(200 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{Linguaggio di programmazione
Basato su [[Microsoft]] [[Visual Basic]] (VB), '''Visual Basic .NET''' (VB.NET) è un linguaggio di programmazione derivato dalla [[Visual Basic|versione 6.0]] e precedenti, ma rivoluzionato, in quanto implementa in modo completo il paradigma della [[Programmazione orientata agli oggetti|programmazione ad oggetti]], ed utilizza, come tutti gli altri linguaggi della serie .NET, il meccanismo di gestione automatica della memoria della [[garbage collection]] del [[Microsoft .NET|.NET Framework]]. Da quando è uscita la versione 1 fino alla revisione .NET, il Visual Basic è diventato sempre più complesso e potente.
|nome = Visual Basic .NET
I prossimi esempi possono darne una idea delle potenzialità:
|immagine =
|didascalia =
|autore = [[Microsoft]]
|data = [[2003]]<ref>{{cita web|url=http://www.max-visual-basic.com/history-of-visual-basic.html|titolo=History of Visual Basic|editore=Copyright © 2009-2010 Max Visual Basic|accesso=21 gennaio 2014|urlarchivio=https://web.archive.org/web/20140115091036/http://www.max-visual-basic.com/history-of-visual-basic.html|dataarchivio=15 gennaio 2014|urlmorto=sì}}</ref>
|utilizzo = Generico
|paradigmi = Multi-paradigma: [[Programmazione strutturata|Strutturata]], [[Programmazione imperativa|Imperativa]], [[Programmazione orientata agli oggetti|Object-Oriented]], [[Programmazione funzionale|Funzionale]], [[Programmazione a eventi|a eventi]]
|tipizzazione = [[Tipizzazione forte|forte]]
|specifiche =
|estensione = vb, resx, vbproj, sln
|influenzato_da = [[Visual Basic]]
|ha_influenzato =
|implementazione_riferimento = debugger e compilatore
|sistema_operativo = Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Linux, [[macOS]]
|lingua =
|sito_web = https://msdn.microsoft.com/it-it/vstudio/hh388573
}}
 
'''Visual Basic .NET''', è la nuova versione di [[Visual Basic]]. Le principali novità di questo nuovo linguaggio di sviluppo del [[Microsoft .NET|Framework .NET]] sono che è basato su oggetti e che è compilato.
 
Il Visual Basic, come il suo corrispondente [[C sharp|C#]], è un punto di congiunzione di tante iniziative e tecnologie di sviluppo Microsoft del passato come ad esempio: il [[Component Object Model|COM]] e gli [[ActiveX]], sostituiti con assembly e classi di oggetti completamente ''gestiti'': per ''gestiti'' (dall'inglese ''managed'') si intende che la gestione della memoria è gestita autonomamente dal [[garbage collector]]. Con Visual Basic è possibile realizzare: applicazioni [[Windows Forms]], web, servizi, componenti COM, MQ, Web service ed anche destinate a dispositivi mobili tramite l'uso delle librerie del ''Compact framework''.
 
Microsoft ha annunciato che non ci saranno più importanti aggiornamenti per Visual Basic .NET.
 
Visual Basic è uno dei linguaggi principali di [[Microsoft Visual Studio|Visual Studio]], la suite per programmatori di Microsoft, basata interamente sul Framework .NET.
 
==Storia==
===Visual Basic .NET (VB 7)===
'''Visual Basic .NET''' (internamente la versione 7.0), è nato nel 2002. È stato il primo Visual Basic sviluppato sul Framework .NET 1.0. Benché commercialmente sia il successore del VB6, in realtà l'unico punto in comune è la sintassi VB like.
 
Questa versione supportava il paradigma di programmazione ad oggetti con caratteristiche quali l'ereditarietà, il polimorfismo e l'incapsulamento. Si aggiunge una gestione avanzata della memoria (grazie al ''garbage collector'') e dei puntatori, tutto in un ambiente completamente gestito e ''a tipizzazione forte''.
 
Oltre tipi e librerie più classiche ritrovabili in ogni linguaggio come IO, formattazione di stringhe, calcoli matematici e statistici e quant'altro, questa versione del linguaggio supportava già il threading, la reflection, gli attributi customizzabili, la programmazione distribuita tramite remoting e la programmazione di oggetti COM.
 
===Visual Basic .NET 2003 (VB 7.1)===
Con la versione del Framework 1.1, Microsoft ha rilasciato una nuova versione di Visual Studio (Visual Studio 2003) e con esso le nuove versioni dei linguaggi inclusi, fra cui Visual Basic .NET 2003 (internamente la versione 7.1).
Oltre ad aver migliorato alcune librerie in termini di performance, come il compilatore in background, in questa versione è stato aggiunto il supporto per il [[.NET Compact Framework]] permettendo ai programmatori di sviluppare applicazioni per i dispositivi ''mobile''.
 
===Visual Basic 2005 (VB 8)===
Nel 2005, con la versione 2.0 del Framework, venne rilasciata la nuova versione di Visual Basic, con il nome commerciale di ''Visual Basic 2005'' che per la prima volta abbandona il suffisso .NET.
In questa versione si aggiungono moltissime nuove caratteristiche di programmazione, tra le quali:
* i generics
* gli eventi custom
* nuovi oggetti kernel per la sincronizzazione dei threads
* le classi parziali, con l'istruzione '''Partial Class'''
* lo pseudo-namespace ''My'' che semplifica l'accesso a molti metodi di uso comune
* il qualificatore globale di namespace ('''global''')
* i commenti XML per commentare i propri metodi
* l'overload degli operatori
* la definizione di nuovi tipi fra cui gli ''unsigned'' e i ''nullable''.
 
In più, sono comparse nuove parole chiave:
* ''Continue''
* ''IsNot''
* ''My''
* ''TryCast''
* ''Using''
 
Inoltre, centinaia di aggiornamenti sono stati eseguiti sui metodi del framework distribuiti nei vari namespace come IO, Security, Cryptography, Threading e altri.
 
===Visual Basic 2008 (VB 9)===
'''Visual Basic 2008''' è uscito in anticipo il 19 novembre 2007 ed è stato implementato sul Framework .NET 3.5 con il rilascio di [[Visual Studio 2008]].
Questa versione del linguaggio aggiunge caratteristiche innovative come i letterali XML e [[LINQ]]. Proprio per il supporto a LINQ sono state introdotte moltissime novità, fra le quali i ''tipi anonimi'', l'inferenza dei tipi, le espressioni ''lambda'' e i metodi di estensione.
Inoltre è stato integrato l'utilizzo dei nuovi Framework implementati dalla versione 3.0 di .NET fra cui:
* [[Entity Framework]], che permette di lavorare con un modello a oggetti anche sui database;
* [[Windows Presentation Foundation]], un nuovo namespace contenente classi per il disegno di interfacce utente windows o web;
* [[Windows Communication Foundation]], un nuovo namespace che rende più semplice utilizzare le tecniche di programmazione distribuita;
* [[Workflow Foundation]], per realizzare applicazioni o assembly di workflow, poi implementabili in ogni applicazione .NET;
* Card space, una nuova tecnologia per la centralizzazione dei login su sistemi web.
Inoltre, è stato esteso l'utilizzo del linguaggio tramite l'uso del nuovo [[Ambiente di sviluppo integrato|IDE]] di sviluppo ''Visual Studio 2008'', per realizzare applicazioni con la tecnologia [[Silverlight]] basata su [[Windows Presentation Foundation|WPF]].
 
===Visual Basic 2010 (VB 10)===
Nell'aprile 2010, Microsoft ha rilasciato Visual Basic 2010.
 
===Visual Basic 2012 (VB 11)===
Visual Basic 2012 è stato rilasciato insieme .NET Framework 4.5.
 
===Visual Basic 2015 (VB 14)===
Visual Basic 2015 (nome in codice VB "14.0") è stato rilasciato contemporaneamente all'uscita di Visual Studio 2015.
 
===Visual Basic 2017 (VB 15)===
Visual Basic 2017 (nome in codice VB "15.0") è stato rilasciato contemporaneamente all'uscita di Visual Studio 2017 (15.33, 15.5, 15.8). Introduce nuove tecniche di [[refactoring]] che consentono di organizzare il codice sorgente con una sola azione.<ref>{{Cita web|url=https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes|titolo=Visual Studio 2017 15.9 Release Notes|autore=jawiddis|sito=docs.microsoft.com|lingua=en|accesso=2020-02-14}}</ref><ref name="docs.microsoft.com">{{Cita web|url=https://docs.microsoft.com/en-us/dotnet/visual-basic/getting-started/whats-new|titolo=What's new for Visual Basic - Visual Basic|autore=KathleenDollard|sito=docs.microsoft.com|lingua=en|accesso=2020-02-14}}</ref>
 
===Visual Basic 2019 (VB 16)===
Visual Basic 2019 (nome in codice VB "16.0") è stato rilasciato contemporaneamente all'uscita di Visual Studio 2019. È la prima versione di Visual Basic focalizzata sul nuovo framework di Microsoft [[.NET Core]].<ref name="docs.microsoft.com" />
 
== Esempi ==
=== [[Hello world|Hello, World]] ===
 
Esempio diin Visual Basic classico (6.0 e precedenti):
 
<sourcesyntaxhighlight lang="vb">
Private Sub Command1_Click()
 
MsgBox "Hello, world!"
 
End Sub
</syntaxhighlight>
</source>
 
Esempio diin Visual Basic .NET con la nuova classe MessageBox:
 
<sourcesyntaxhighlight lang="vbnet">
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
MessageBox.Show("Hello, world!", "Titolo esempio", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
</syntaxhighlight>
 
Esempio in Visual Basic .NET con la vecchia funzione Msgbox:
MessageBox.Show("Hello, world!", "Titolo esempio", MessageBoxButtons.OK, MessageBoxIcon.Information)
 
<syntaxhighlight lang="vbnet">
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
Msgbox("Hello, world")
End Sub
</syntaxhighlight>
</source>
 
Nell'esempio sopra riportato è indicata la nuova sintassi che sostituisce il classico ''MsgBox''. La visualizzazione del messaggio è effettuata dal metodo ''Show'' della classe ''MessageBox''. Notare che normalmente per invocare un metodo è necessario creare un'[[Oggetto (informatica)|istanza]] di una classe. In questo caso, tuttavia, il metodo, essendo di tipo ''Shared'' (cioè ''condiviso''), può essere chiamato anche senza istanziare la classe. La vecchia sintassi ''MsgBox'' è, comunque, supportata anche dalla nuova piattaforma di sviluppo. Per ''istanziare una classe'' si intende creare un [[Oggetto (informatica)|oggetto]] del tipo definito dalla classe.
 
La compatibilità tra la versione classica (VB 6) e le nuove versioni VB.NET è garantita dalla libreria '''''Microsoft.VisualBasic'''''. Tale libreria è stata pensata per garantire un graduale passaggio dalla vecchia modalità di programmazione verso le nuove componenti del linguaggio VB.NET e del framework .NET. È pertanto sconsigliato l'uso di tale libreria nella realizzazione di nuovi progetti.
=== Delegati ===
Altra importante innovazione è l'introduzione dei cosiddetti ''delegate'' (delegati) per gestire in molto flessibile il [[trapping]] degli eventi. Nel seguente esempio la navigazione fra le celle di una griglia [[binding|bindata]] ad una tabella di un [[database]], provoca l'esecuzione del codice della [[routine]] ''CambioCella'':
 
=== Delegate ===
AddHandler Datagrid1.CurrentCellChanged, AddressOf CambioCella
I ''delegate'' sono puntatori a funzioni utilizzabili nella gestione degli eventi, utili nella programmazione asincrona.
&nbsp;
Private Sub CambioCella(ByVal sender As Object, ByVal e As EventArgs)
&nbsp;
' Fa qualcosa ...
&nbsp;
End Sub
 
<syntaxhighlight lang="vbnet">
Notare che la routine CambioCella (definita dall'utente) deve accettare lo stesso numero e tipo di [[argomenti]], in gergo tecnico avere la stessa ''firma'', del [[metodo]] ''CurrentCellChanged'' della [[Classe (informatica)|classe]] ''Datagrid'' del framework.
Module Module1
Public Delegate Sub dTest
 
Sub Main()
* Nota che nel VB.NET tutte le chiamate alle procedure devono essere create all'interno delle parentesi, mentre nel VB classico possono essere create solo chiamate alle funzioni.
Dim temp as new dTest(AddressOf Test)
 
'invocazione sincrona
C'è una copiosa documentazione che mette in confronto la sintassi (le regole del linguaggio), i cambiamenti per il [[debugging]] delle applicazioni, sviluppo e terminologia.
temp.invoke
 
'invocazione asincrona
== Ulteriori informazioni su Visual Basic .NET ==
temp.BeginInvoke(New AsyncCallback(AddressOf EndTest), temp)
Console.WriteLine("OK")
Console.ReadLine
End Sub
 
Sub Test()
Molti programmatori hanno considerato questa nuova edizione di Visual Basic come un linguaggio totalmente rinnovato, sia sintatticamente che logicamente. Malgrado lo strumento integrato in Visual Studio .Net che permette la migrazione automatica da progetti VB 6 a VB.NET, molti sviluppatori hanno avuto diverse difficoltà nel passaggio tra le versioni, per procedure e funzioni che prima erano integrate nel linguaggio e ora, col nuovo .Net Framework, non sono state reintegrate;
'Qui c'è un'elaborazione lunga
Ulteriore problema è stata la parziale modifica della sintassi con parole chiavi prima ammesse ma ora ritenute invalide (o come vengono chiamate dall'IDE, obsolete).
End Sub
 
Sub EndTest(ByVal ar As iAsyncResult)
In Visual Basic 2005 (il successore di VB.NET), Microsoft ha reintrodotto alcune funzionalità di cui la corrente versione di VB.NET è priva:
ar.AsyncState.EndInvoke(ar)
*una libreria di classi chiamata <code>My</code> che permette ai programmatori di accedere facilmente alle possibilità che il .NET framework offre;
Console.Writeline("EndTest")
*la funzione Pausa (in Visual Studio .Net 8) che permette di interrompere il processo di debug (senza chiudere l'applicazione), modificare il codice sorgente e riavviarlo come se non fosse stato ricompilato.
End Sub
End Module
</syntaxhighlight>
 
== Caratteristiche del linguaggio ==
== Aggiornamenti ==
Come per il suo corrispondente C#, i codici sorgenti scritti in VB.NET sono normalmente compilati secondo i criteri [[Compilatore just-in-time|JIT]]: la trasformazione in codice macchina (ovvero eseguito direttamente dalla CPU) avviene su richiesta solo all'atto di caricamento ed esecuzione del programma. In prima istanza il codice sorgente viene convertito dal framework in un codice intermedio detto [[Common Intermediate Language|CIL]] e solo all'esecuzione del programma il [[Common Language Runtime|CLR]] converte il CIL in codice macchina, man mano che viene eseguito. Una seconda possibilità è la cosiddetta ''compilazione Ngen'', che permette di convertire tutto il codice CIL in codice macchina in una volta sola.
 
== Funzionalità di Visual Basic .NET non presenti in C# ==
Una nuova suite, minore rispetto a [[Visual Studio]], che introduce il nuovo .Net Framework 2.0 può essere scaricata dal sito Microsoft.
* Le variabili possono essere dichiarate con il costrutto WithEvents;
Essa è chiamata "Express Editions" e sono la base per prossima evoluzione della storia della Programmazione. [http://msdn.microsoft.com/vstudio/express/default.aspx]
* Auto-wireup degli eventi: VB.NET usa il comando Handles per gestirli;
Ci sono 6 differenti edizioni, una per linguaggio o scopo:
* Uso della struttura With ... End With per l'accesso diretto alle funzionalità di un oggetto;
*Visual Basic 2005 Express
* Metodo IsNumeric per verificare se una stringa può essere convertita (casting) in un numero;
*Visual C# 2005 Express
* XML Literals;<ref>{{Cita web | url = http://www.infoq.com/news/2007/03/CSharp-XML | titolo = Does C# Need VB9's XML Literals? | autore = Jonathan Allen | accesso=13 gennaio 2009}}</ref>
*Visual C++ 2005 Express
* Dichiarazione diretta delle date usando la sintassi #1/1/2000#;
*Visual J# 2005 Express
* Moduli (analoghi a classi statiche);
*Visual Web Dev 2005 Express
* Accesso diretto ai membri di un Modulo (Vedi [https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.dateandtime.now.aspx Now] come esempio)
*SQL Server 2005 Express
* Il namespace <code>My.*</code>;<ref>[https://msdn.microsoft.com/en-us/library/5btzf5yk.aspx]</ref>
Al momento questa edizione è disponibile in modo totalmente gratuito. È necessaria comunque una attivazione del prodotto, con un seriale disponibile sul sito del produttore.
* I componenti COM e l'interoperabilità sono più performanti su oggetti a runtime,<ref name="early-binding">{{Cita web | url =http://visualbasic.about.com/od/usingvbnet/a/earlybind.htm | titolo =Early vs. Late Binding | urlmorto =sì | urlarchivio =https://web.archive.org/web/20150225004949/http://visualbasic.about.com/od/usingvbnet/a/earlybind.htm | dataarchivio =25 febbraio 2015 }}</ref>
* I Namespaces possono essere incorporati nel progetto in modo da non doverli richiamare ogni volta nei vari file;
* Eccezioni in-line filtrati da un'[[espressione booleana]], usando il blocco "When expression".<ref>MSDN: [https://msdn.microsoft.com/en-us/library/fk6t46tz.aspx Try...Catch...Finally Statement (Visual Basic)]</ref>;
* Sintassi differente su ''Linq To Objects'' dove, fra l'altro, è possibile omettere l'istruzione "select" finale per ottenere la lista di oggetti direttamente.
 
== OpenPassaggio Sourceda VB6 a VB.NET ==
Benché molti programmatori abbiano creduto a un aggiornamento del linguaggio, in realtà VB.NET e VB non sono compatibili.
Nell'IDE di sviluppo è integrato un convertitore che, però, garantisce una conversione parziale del codice. Nella maggior parte dei casi, è necessaria una totale revisione dello stesso dal momento che la tecnica di programmazione è passata da essere imperativa (anche se basata su eventi) a essere orientata agli oggetti.
 
== Per usare VB.NET ==
Oltre alle versioni di [[Visual Studio]], esiste anche un [[IDE]](Integrated Development Environment) Open Source, [[SharpDevelop]], che permette di creare applicazioni in modo veloce e semplice.
VB.NET è un linguaggio di libero utilizzo e il relativo [[compilatore]] è scaricabile dall'area download del sito [[Microsoft]]. Inoltre, è disponibile anche una versione completamente gratuita di [[Visual Studio]] detta ''Express''. Inoltre dalla versione Visual Studio 2013 esiste anche l'edizione gratuita denominata "Community" la quale presenta alcune limitazioni in ambito commerciale, ma per il resto identica alla versione "Professional". La scrittura di codice Visual Basic può essere fatta anche semplicemente utilizzando un qualsiasi editor di testo.
In questo momento, [[SharpDevelop]] è arrivato alla versione 2.1 (Release Candidate 1) e permette lo sviluppo di [[Plugin]] per l'[[IDE]] stesso, applicazioni [[Mono]], creazione di applicazione con [[.NET Compact Framework]] e le classiche applicazioni [[Console (software)|Console]] e [[Windows Form]]
 
Esiste inoltre un compilatore [[open source]] e multipiattaforma che, grazie al progetto [[Mono (progetto)|Mono]], è in grado di compilare su ambienti diversi da [[Microsoft Windows|Windows]] come [[macOS]] e [[Linux]].
 
== Note ==
<references />
 
== Bibliografia ==
* [http://books.aspitalia.com/VisualBasic-2010/ ''Visual Basic 2010''] (2010) ISBN 978-88-203-4469-6 - D. Bochicchio, C. Civera, M. De Sanctis, R. Golia, A.Leoncini, M. Leoncini, S. Mostarda
*Visual Basic 2019 D. Bochicchio, C. Civera M. Leoncini, S. Mostarda, M. Tumiati ISBN 978-88-203-8466-1
 
== Voci correlate ==
* [[Microsoft .NET|MicrosoftASP.NET]]
* [[ASP.NETGambas]]
* [[VisualMicrosoft Basic.NET]]
* [[Visual Basic]]
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{it}} [http://www.microsoft.com/italy/msdn/prodotti/vbasic/ Sito Microsoft su VB.NET]
* {{en}}cita [httpweb|https://msdnwww.microsoft.com/italy/msdn/prodotti/vbasic/ |Sito Microsoft su VB.NET]}}
* {{cita web|https://msdn.microsoft.com/vbasic/|Sito Microsoft su VB.NET|lingua=en}}
* {{it}} [http://www.ugidotnet.org User Group Italiano dot NET]
* {{en}}cita [web|http://www.go-monougidotnet.org/mbas.html|User ImplementazioneGroup diItaliano dot VB.NET su Mono]}}
* {{cita web|1=http://www.go-mono.org/mbas.html|2=Implementazione di VB.NET su Mono|lingua=en|accesso=4 maggio 2005|urlarchivio=https://web.archive.org/web/20051023172239/http://www.go-mono.org/mbas.html|dataarchivio=23 ottobre 2005|urlmorto=sì}}
 
{{Principali linguaggi di programmazione}}
{{portale|informatica|Microsoft}}
 
[[Categoria:.NET]]
[[Categoria:Linguaggi derivati dal Visual Basic]]
 
[[Categoria:Linguaggi di programmazione orientati agli oggetti]]
[[da:Visual Basic .NET]]
[[de:Visual Basic .NET]]
[[en:Visual Basic .NET]]
[[es:Visual Basic.NET]]
[[fr:Visual Basic .NET]]
[[he:Visual Basic .NET]]
[[ja:Microsoft Visual Basic .NET]]
[[ko:비주얼 베이직 닷넷]]
[[no:Visual Basic .NET]]
[[pl:Visual Basic .NET]]
[[pt:Visual Basic .NET]]
[[ru:Visual Basic .NET]]
[[simple:Visual Basic .NET]]
[[sv:Visual Basic .NET]]
[[zh:Visual Basic .NET]]