giovedì 3 marzo 2016

Differenza tra linguaggi: C# vs vb.net

Storia dei linguaggi

C# e VB.NET sono linguaggi sintatticamente molti diversi.
Proprio come suggerisce il nome, la sintassi di C# si basa sul linguaggio di programmazione C originariamente sviluppato da Dennis Ritchie nel 1970. Java e C++ sono altri due linguaggi di programmazione la cui sintassi si basa ancora su C e condividono quindi tratti comuni.
VB.NET ha le sue radici nel linguaggio BASIC degli anni 60, il cui nome è un acronimo di "Beginner's All-purpose Symbolic Instruction Code". All'inizio, BASIC è stato utilizzato all'università come linguaggio "basic" per una prima infarinatura alla programmazione informatica. Negli anni '70, poi, il linguaggio è stato èreso da piccole fabbriche di microccomputer per essere utilizzato sia come una semplice  linguaggio di programmazione incorporato nella ROM sia come un quasi sistema operativo di controllo input/output.
All'inizio degli anni '80, il linguaggio è stato preso da Micriosoft ed ampliato significativamente nella piattaforma/linguaggio "Visual Basic", che è stata venduta per tutti gli anni '90 come uno strumento "di sviluppo di rapida applicazione" per la programmazione Windows. Anche se Visual Basic è stata una piattaforma di sviluppo di successo, non è stato aggiornato in maniera continuativa dopo la sesta versione fino a quando Microsoft ha introdotto il .NET Framework e la sua relativa piattaforma Visual Studio nei primi anni 2000. A quel tempo, i linguaggi C++ e VB6 erano utilizzati da Microsoft come i due linguaggi di programmazione base nel loro nuovo "Integrated Development Environment (IDE)". Quesi linguaggi sono stati chiamati C# e VB.NET.

Confronto dei linguaggi

Anche se C# e VB.NET sono sintatticamente differenti, l'unica differenza riscontrabile è questa. La Microsoft ha sviluppato entrambi i linguaggi in modo che facessero parte della stessa piattaforma di sviluppo, tanto che entrambi i linguaggi sono sviluppati, gestiti e supportati dallo stesso team di programmatori della Microsoft.  Nonostante le differenze semantiche, quindi, quasi ogni comando in VB ha un comando equivalente in C#, e viceversa.
Infine, entrambi i linguaggi si rifanno alle stesse Base Classes del Framework .NET per esterndere le loro funzionalità. Come risultato, tranne alcune eccezioni, si ha che un programma scritto in uno dei due linguaggi può essere essere convertito nell'altro attraverso un semplice traduttore di sintassi.

Caratteristiche dei linguaggi

Nonostante entrambi i linguaggi permettano di realizzare la maggior parte delle features, alcune di queste sono più facilmente realizzabili in un linguaggio piuttosto che nell'altro.

Caratteristiche di Visual Basic .NET non applicabili a C#
  • La conversione del valore booleano TRUE in un intero può restituire il valore -1 o 1 a seconda della conversione utilizzata.
  • Per assegnare valori alle variabili e per confrontare variabili viene utilizzato lo stesso simbolo =mentre C# utilizza simboli diversi,  == per fare confronti e = per assegnare valori.
  • VB.NET non è case-sensitive.
  • Quando si assegna un valore a una variabile con un tipo di dato diverso (e con  Option Strict non attivato), VB.NET convertirà forzatamente il valore, se possibile. Questa forzatura può a volte portare a risultati inaspettati, come nel seguente esempio:

  • La funzione Val() converte gli oggetti in tipo double, analizzando anche i valori nulli (mentre in C# Convert.ToDouble() è utilizzata per convertire qualsiasi oggetto in un valore di tipo double, ma restituisce errore nel caso in cui il valore sia nullo).
Caratteristiche di Visual Basic .NET non applicabili a C#


  • Di default, le operazioni numeriche non sono controllare. Questo porta ad un codice leggermente più veloce, con il rischio che overflow numerici non vengano individuati. Ad ogni modo, il programmatore può definire operazioni aritmetiche per effettuare controlli dell'overflow. (In Visual Basic questo può essere fatto facendo il checking di un'opzione).
  • I cicli for possono contenere più condizioni, come ad esempio  for(int i = 0; i < 10 && somethingTrue; i++)
  • C# è case-sensitive.
Confronti sintattici

Visual Basic .NET termina un blocco di codice con l'istruzione  End BlockName  (o con l'istruzione  Next  nel caso di ciclo for), che sono più familiari a programmatori che hanno esperienza nell'utilizzo di T-SQL.
In C#, le parentesi   {} vengono utilizzate per delimitare blocchi di codice, cosa che è più familiare ai programmatori con esperienza in diffusi linguaggi di programmazione come C++ e Java. In più, in C#, se un blocco consiste in una singola istruzione, le parentesi possono essere omesse.

C# è case-sensitive mentre Visual Basic. NET non lo è. Così, in C# è possibile avere due variabili con lo stesso nome, per esempio variable1 e Variable1.  Questo può causare problemi nella conversione di codici C# in linguaggi non case-sensitive, come Visual Basic, o in quelli non predisposti alla lettura di un linguaggio case-sensitive.

Parole chiave

Visual Basic e C# condividono la maggior parte delle parole chieve, con la differenza che le parole chiave di default di Visual Basic sono versioni in maiuscolo delle parole chiave in C#, come ad esempio  Public vspublic, If vs if.
Alcune parole chiave che hanno versioni completamente diverse in Visual Basic e in C# sono:
  • Friend vs internal - modificatori di accesso che permettono referenze intra-classe 
  • Me vs this - un auto-riferimento all'istanza dell'oggetto corrente
  • MyBase vs base - per riferirsi alla classe base da cui la classe corrente deriva
  • NotInheritable vs sealed - per dichiarare le classi che potrebbero non essere ereditate
  • Shared vs static - per dichiarare metodi che non richiedono un'esplicita istanza di un oggetto.

Commenti


Condizioni


Cicli


Confronti


Tipi di oggetto



Nessun commento:

Posta un commento