C# e VisualBasic.Net (VB.Net) sono due linguaggi di programmazione sviluppati da Microsoft e progettati per la piattaforma .NET utili per la compilazione di un'ampia gamma di applicazioni nel Common Language Runtime (CLR) del Framework.NET, che costituisce una piattaforma di esecuzione per un gran numero di linguaggi.
Più che stabilire quale sia il “migliore”, è interessante capire le peculiarità di ciascun linguaggio. Ci soffermeremo sulla valutazione delle differenze più importanti.
Ad una prima analisi è evidente che VB.Net risulta la scelta preferita per chi proviene dalle versioni precedenti di VB e ASP-VBScript, mentre C# è più accattivante per chi proviene da esperienze con C++ e Java. La sintassi di C# assomiglia moltissimo a quella di Java, mentre quella di VB.Net è evoluzione del Visual Basic.
La differenza più importante nel passaggio dal vecchio al nuovo non riguarda tanto la sintassi quanto la sensazione di novità in termini di approccio alla programmazione ad oggetti.
Una volta scritto il programma che si vuole eseguire la trasformazione in codice macchina può avvenire in due modi:
Read to line su richiesta al caricamento ed esecuzione del programma. In prima istanza il codice sorgente viene convertito dal Framework in un codice intermedio detto CIL, solo all'esecuzione del programma il CLR converte il CIL in codice macchina, man mano che viene eseguito.
Read to end alla fine del codice. In cui tutto il codice CIL viene convertito in codice macchina in una sola volta.
Chi è abituato a lavorare in C++ o Java trova un ambiente in cui i concetti sono analoghi quando non del tutto sovrapposti, mentre chi proviene dai “vecchi” ASP e VB si trova davanti ad un linguaggio simile in alcuni aspetti della sintassi di base ma con un approccio alla programmazione a oggetti che è comune a tutto il Framework ed è più proprio di Java e compagnia.
Un primo aspetto evidente è che il codice scritto in VB .Net risulta più lungo rispetto all’equivalente in C#. Consideriamo, per esempio, una funzione che prende in ingresso due numeri e ne calcola la media:
//C#
public double CalcolaMedia(double N1, double N2)
{
return (N1 + N2) / 2;
}
‘Visual Basic .NET
Public Function CalcolaMedia(ByVal N1 As Double, ByVal N2 As Double) As Double
Return (N1 + N2) / 2
End Function
public double CalcolaMedia(double N1, double N2)
{
return (N1 + N2) / 2;
}
‘Visual Basic .NET
Public Function CalcolaMedia(ByVal N1 As Double, ByVal N2 As Double) As Double
Return (N1 + N2) / 2
End Function
Un’altra grande differenza, forse la più evidente, è che C# è case sensitive, ovvero fa distinzione tra maiuscole e minuscole, mentre VB case insensitive: per C# le variabili nomePersona e NomePersona sono diverse, mentre per Visual Basic .Net sono la stessa.
Differenza fondamentale è che il codice di VB.Net è più uniforme di quello di C#, in quanto viene meno l'utilizzo delle parentesi graffe e del comando ";" che in C# corrisponde alla fine di un istruzione e l'inizio della successiva, mentre in VB.Net non viene utilizzato.
Al di là delle differenze che riguardano la sintassi, C# permette di realizzare cose che in VB .Net non si possono fare, e viceversa. Ad esempio, C#, mostrando la sua derivazione dal C++, consente di utilizzare i puntatori, cosa che VB .Net non permette.
VB .Net, in particolare con la nuova versione del Framework, rende ancora più semplice e veloce la scrittura di applicazioni: tra i tanti esempi che si potrebbero fare a riguardo, citiamo il namespace My , che fornisce un rapido accesso a tutta una serie di proprietà e metodi di uso comune, consentendo uno sviluppo più efficiente.
Le informazioni contenute nel namespace My sono comunque disponibili anche da C#, ma la sua presenza in VB .Net rende molto più agevole lo svolgimento di alcuni compiti. Ad esempio, per scaricare un file da Internet, usando Visual Basic .Net con il Framework 2.0 è sufficiente un’istruzione:
My.Computer.Network.DownloadFile(“http://www.html.it/file.zip”, “C:/Test”)
In C# non esiste un oggetto My e dovremmo istanziare noi un oggetto della classe Network per ottenere lo stesso effetto.
I due linguaggi hanno però sicuramente più similitudini che differenze e per questo è anche molto semplice trovare sul web dei veri e propri convertitori di linguaggio che permettono di ricavare istantaneamente la "traduzione" in C# di un codice VB.Net e viceversa.
Nessun commento:
Posta un commento