A inizio Marzo, Microsoft ha pubblicato un blog post in cui spiega che continuerà a supportare Visual Basic su .NET 5 ma non aggiungerà più nuove funzionalità né evolverà il linguaggio.
(Se preferisci ascoltare l'articolo anzichè leggerlo, puoi farlo grazie al podcast di Valerio Galano premendo semplicemente play nel lettore qui sotto).
Visual Basic: gloria, declino e...
Per chi non lo sapesse, .NET 5 è una delle release previste per .NET standard, una specifica per l'implementazione dei vari framework Microsoft come il classico .NET Framework, che viene utilizzato per la creazione di applicazioni desktop e applicazioni web ASP, oppure .NET Core, un sottoinsieme di .NET Framework ridisegnato per essere open source, cloud native e multipiattaforma.
A differenza di .NET Framework, .NET Core non è considerato un componente di Windows, pertanto, gli aggiornamenti vengono forniti come pacchetti NuGet e non tramite Windows Update come invece avviene per il primo.
Si può pensare alla relazione che intercorre tra .NET Standard e una sua implementazione .NET come il rapporto che c'è tra la specifica HTML ed un browser: quest'ultimo implementa la prima.
In futuro, non prevediamo di evolvere Visual Basic come linguaggio [...]
Il futuro di Visual Basic [...] si concentrerà sulla stabilità [...] e la compatibilità tra le versioni .NET Core e .NET Framework di Visual Basic.
È il riassunto di quello che ha scritto il team .NET.
Quando Microsoft rilasciò la versione .NET di Visual Basic, lo fece insieme a C# all'inizio dell'era .NET e i due linguaggi iniziarono a crescere di pari passo con aggiornamenti che introducevano interi set di funzionalità identici per entrambi.
Con l'andar del tempo questo cambiò, gli sviluppatori professionisti che adottarono C# e i tanti fan del classico Visual Basic (VB è la sua abbreviazione) iniziarono ad abbandonare il linguaggio di fronte alla sempre più crescente complessità dell'ambiente .NET nelle nuove versioni, anche se più potenti.
Oggi, la documentazione per sviluppatori di Microsoft è praticamente quasi solo in C#, con esempi di codice sorgente VB sempre più difficili da trovare.
Nel 2017 Microsoft ha annunciato che la sua strategia originaria di co-sviluppo di C# e VB era arrivata alla fine. Solo C# avrebbe ottenuto tutte le nuove funzionalità, mentre VB si sarebbe concentrato sugli scenari più semplici ed accessibili che un tempo dominava. Ma ciò non è mai realmente accaduto e Microsoft ha effettivamente abbandonato VB. L'annuncio a cui facciamo riferimento all'inizio del post lo rende di fatto ufficiale.
Se si è soddisfatti di .NET Framework, siate sicuri che sarà supportato finché Windows sarà supportato, perché viene fornito assieme al sistema operativo.
È quanto afferma l'azienda, sempre nello stesso post.
Verosimilmente, gli sviluppatori VB saranno in grado di portare le loro codebase esistenti su .NET Core o, presto, su .NET 5. Il problema è che non tutte le tecnologie legacy saranno supportate, quindi gli sviluppatori che utilizzano alcune feature (penso per esempio a WebForms, Workflow o WCF) dovranno attenersi al classico .NET Framework.
Dato che le versioni di quest'ultimo vengono rilasciate nello stesso bundle delle nuove versioni di Wndows, tali applicazioni continueranno a funzionare e saranno supportate solo finchè l'azienda di Redmond non deciderà il ritiro delle versioni di Wndows sottostanti.
Perché parliamo di Visual Basic?
Per quanto io non sia mai stato un amante di Visual Basic, la notizia non mi ha lasciato indifferente; leggerla ha rievocato in me alcuni vecchi ricordi della scuola superiore: è lì che ho potuto usarlo per un po'.
Parliamo dei primi anni 2000 e per un ragazzino che iniziava a conoscere la programmazione a suon di Turbo Pascal e Borland C++, ecco qualcosa di completamente nuovo!
Per uno abituato a schermate blu (durante la scrittura di codice) o nere (durante l'esecuzione) poter creare dei pulsanti per i miei programmi disegnandoli direttamente sulla finestra dell'interfaccia era qualcosa di speciale!
Per fare in modo che un pulsante potesse eseguire un'azione, era sufficiente fare doppio clic su di esso nell'ambiente di sviluppo e scriverne il codice relativo!
Agli occhi di allora, non era come scrivere codice C++ pieno di classi, complessa gestione della memoria e chiamate oscure a funzioni di librerie ignote. Era semplicemente codice VB dall'aspetto amichevole, intuitivo, con dei programmi dignitosamente carini, che potevano addirittura definirsi tali!
La nascita
Le origini di Visual Basic si trovano in un glorioso linguaggio di programmazione creato nel 1964 da John Kemeny e Thomas Kurtz: il BASIC (Beginners All-purpose Symbolic Instruction Code - Codice di istruzioni simbolico multiuso per principianti).
Originariamente esso era un linguaggio interpretato, progettato per semplificare e rendere la programmazione più accessibile al mondo. Usando questa filosofia, Microsoft integrò un interprete BASIC all'interno del suo primo sistema operativo: MS-DOS. Nonostante l'ampia distribuzione e la relativa semplicità, BASIC non è mai stato in grado di competere con linguaggi compilati più veloci come C o C++.
Pertanto, BASIC era comunemente usato per scopi banali o educativi, mentre le applicazioni "reali" venivano solitamente sviluppate con altri linguaggi.
In questo articolo ci soffermiamo perlopiù su Visual Basic, perchè BASIC stesso, ovviamente, ha una storia ancora più lunga.
Alla fine degli anni '80, Wndows e altre interfacce grafiche (GUI - Graphic User Interface) erano agli albori e la maggior parte dei PC utilizzava sistemi operativi testuali. Più le persone iniziavano a comprendere i vantaggi di un sistema operativo a interfaccia grafica, più Wndows acquisiva popolarità.
Sfortunatamente, la creazione di programmi basati su Wndows era estremamente difficile ed era necessario scrivere codice molto complicato solamente per definire l'aspetto dell'interfaccia e il modo in cui un utente avrebbe potuto interagire con essa!
È proprio in questi anni che Microsoft iniziò ad interessarsi ad un'applicazione che avrebbe permesso la creazione di form tramite interfaccia visuale. Un'idea audace per l'epoca, poiché la maggior parte dei computer utilizzava immagini grossolane basate su codici ASCII che raramente assomigliavano a qualcosa di reale.
L'azienda fondata da Bill Gates si avvicinò ad un uomo di nome Alan Cooper che aveva creato tale interfaccia la quale sembrava adatta a soddisfare le esigenze di Microsoft.
La compagnia di Cooper, Tripod, aveva fatto nascere Ruby (nessuna connessione al linguaggio di programmazione Ruby), un'applicazione che faceva esattamente al caso loro.
Ecco che per ovviare alla difficoltà nella creazione di programmi per Wndows, Microsoft pensò bene di comprare Tripod ed integrare BASIC nel loro prodotto di punta.
Ruby nasceva con un piccolo linguaggio capace solamente di supportare i pochi principali comandi di cui una shell necessita. Sin dal principio l'intenzione di Microsoft era quella di far crescere tale linguaggio o addirittura sostituirlo del tutto con uno "reale".
C fu il candidato forte per parecchio tempo ma alla fine Microsoft optò per la soluzione casalinga, nonchè più comoda, e scelse BASIC.
È così che nel 1991 nasce Visual Basic 1.0, riutilizzando il concetto di semplicità e parte della sintassi caratteristica di tale lingaggio.
La gloria
Questo nuovo strumento di sviluppo forniva un modo semplice e veloce per creare applicazioni Windows. Negli anni successivi, Microsoft continuò il lavoro rilasciando nuove versioni con miglioramenti non solo relativi all'ambiente di sviluppo, ma anche alla modernizzazione del linguaggio sottostante. Questi refactoring includevano il supporto alla programmazione orientata agli oggetti, la gestione degli eventi ed il superamento dei limiti di un linguaggio interpretato, consentendo ai programmatori di generare codice eseguibile compilato.
Visual Basic, come dice la parola stessa, è un linguaggio di programmazione visuale, guidato da eventi. Questa è la vera differenza rispetto al vecchio BASIC. In BASIC, la programmazione era solamente testuale ed il programma eseguito in sequenza. In VB, la programmazione avviene in un ambiente grafico. Nel vecchio BASIC, era necessario scrivere il codice del programma per ogni oggetto grafico che si desiderava visualizzare sullo schermo, compresa la sua posizione e il suo colore. In VB era sufficiente trascinare e rilasciare qualsiasi oggetto grafico in qualsiasi punto del modulo e poi cambiarne il colore in qualsiasi momento utilizzando le finestre delle proprietà. D'altra parte, poiché l'utente poteva fare clic su un determinato oggetto in modo del tutto imprevedibile, ogni oggetto doveva essere programmato indipendentemente per essere in grado di rispondere a tali azioni (eventi). Pertanto, un programma VB è composto da molti sottoprogrammi, ognuno con il suo codice corrispondente ed ognuno potenzialmente eseguibile contemporaneamente ad un altro.
Visual Basic originale ha prosperato per circa un decennio. Ciò che iniziò per essere un ambiente easy per principianti, divenne uno strumento abbastanza valido anche per programmatori seri che non creavano solo applicazioni giocattolo. Visual Basic si fece strada negli uffici delle aziende e persino sul web attraverso ASP (Active Server Pages), che permetteva di creare pagine web in grado di comunicare con componenti VB, denominati database, e scrivere HTML al volo.
Ora che la platea era aumentata immancabilmente arrivarono le prime critiche: i fanatici dell'object oriented lamentavano la mancanza del supporto all'ereditarietà, anche se possiamo considerarla un'arma a doppio taglio, un ottimo modo per gli sviluppatori meno esperti di darsi la zappa tra i piedi.
Paradossalmente, il vero problema fu quello di aver avuto troppo successo: era così efficace nel ridurre le barriere d'ingresso ai nuovi programmatori che letteralmente chiunque poteva usarlo - principianti disattenti, operai annoiati e studenti - tutti potevano metterci mano e combinare qualcosa che sarebbe stato molto più difficile su qualsiasi altra piattaforma, seminando spaghetti code ora quì, ora lì.
In altre parole, siccome anche per i programmatori non esperti era abbastanza facile usare VB, veniva utilizzato da molte persone che non erano programmatori esperti - lapalissiano!
La colpa di VB è stata quella di non far nulla per incoraggiare la correzione dello stile e delle abitudini sbagliate di queste persone.
Il declino
Nel 2002, Microsoft decide una riorganizzazione dell'ecosistema di sviluppo introducendo un modo nuovo di fare le cose, facendo uscire .NET.
Il nome è dovuto ad una una serie di motivi, primo fra tutti il fatto che le tecnologie internet fossero roba nuova da fighi e poiché .NET includeva funzionalità web che Microsoft aveva deciso di promuovere.
Fu fortemente influenzato da Java, pieno di tool per comunicare con database, sviluppare siti internet, scrivere programmi multithreading, creare connessioni tramite socket - praticamente ogni caso d'uso che un developer pro potesse immaginare all'epoca.
Vi era un unico grande downside di questa mini rivoluzione vista dagli occhi di chi utilizzava VB: per ottenere tutto ciò, Microsoft dovette buttar via quasi tutto il classico Visual Basic.
La nuova versione, chiamata VB.NET, sembrava la stessa a prima vista ma introduceva tante differenze che rompevano la retro compatibilità (o breaking changes). Non si fece molto per i vecchi programmi se non un wizard di migrazione abbastanza scarno che la maggior parte delle volte era inutile.
Con l'avvento di questo nuovo strumento, i programmatori VB dovettero cambiare il modo in cui contavano gli elementi dell'array: non potevano più iniziare da 1, come la gente comune, ora si iniziava da 0, come dei veri programmatori!
I cambiamenti si sa, spesso non sono bene accetti e non passò molto tempo prima che un gruppo di precursori influencer di VB volgesse critiche aspre a questo nuovo linguaggio.
Si potrebbe supporre che le modifiche introdotte da .NET abbiano distrutto le fondamenta sulle quali il classico VB si fondava e che abbiano messo in moto il suo inevitabile declino. Ma questo a mio avviso non è corretto, anche se VB.NET prese una nuova direzione, esso portò una caratteristica che il vecchio VB non aveva mai avuto: il rispetto.
Ora VB e C# stavano sullo stesso piano, ogni riga di codice VB poteva essere tradotta in una riga equivalente di C# e viceversa. Entrambi i linguaggi avevano le stesse feature, utilizzavano gli stessi componenti e compilavano esattamente nella stessa maniera: quando un linguaggio è supportato dalla piattaforma .NET vi è un compilatore che traduce i programmi scritti in tale linguaggio in istruzioni CIL (Common Intermediate Language - simile al bytecode del mondo Java).
Ma c'era un problema nell'essere finalmente un linguaggio degno di questo nome: l'entusiasmo con il quale lo avevano scelto così tante persone era sparito. Non perché VB era cambiato, ma perché C# era cambiato.
Nella stessa maniera con la quale VB aveva acquisito la medesima potenza di C#, C# aveva guadagnato le stesse comodità che offriva Visual Basic.
Ad esempio, le funzionalità di sicurezza e di gestione della memoria introdotte da .NET permettevano agli sviluppatori C# di ignorare totalmente le classiche problematiche legate a questi temi, proprio come gli sviluppatori VB potevano già fare in passato.
In altre parole, ora C# poteva essere utilizzato da hobbisti, studenti e nuovi programmatori, senza rinunciare al suo potere - improvvisamente VB non era più qualcosa di speciale.
Il presente
Oggi Visual Basic si trova nella situazione che ho descritto inizialmente, non ha praticamente alcun peso nella comunità di sviluppatori professionisti e non è nemmeno presente nelle statistiche dei repo di GitHub.
Tuttavia, è ancora là fuori da qualche parte a tenere insieme macro di Office, a servire vecchi database Access o antiche pagine ASP.
Un utilizzo in cui Visual Basic avrebbe potuto riciclarsi in modo naturale è, come nel mio caso, il mercato dell'istruzione, ma è un discorso che si poteva fare tanti anni fa, i linguaggi moderni come C# o Python ora sono abbastanza facili da esercitare appeal anche tra i principianti. E se si ha bisogno di qualcosa di più semplice per insegnare coding ai bambini, il mercato odierno offre strumenti di programmazione grafica molto validi come Scratch.
Anche i linguaggi "a parentesi graffa" come C#, C, JavaScript e Java hanno un altro fascino: imparata la sintassi di uno, se proprio si deve cambiare, ci si può sentire più propensi a passare ad un altro di essi.
Con il crescere dello sviluppo in ambito web, Microsoft avrebbe potuto tentare la via di una versione Visual Basic facile da usare come VB 6, che avrebbe potuto essere compilata in JavaScript e abbinata a un qualche design di form HTML predefinito.
Ovviamente non sarebbe stato uno strumento adatto a costruire fantasmagoriche applicazioni web, ma avrebbe potuto tornare utile consentendo a sviluppatori, studenti e appassionati, di creare semplici app online senza l'ingombro di JavaScript.
Invece, a tal proposito Microsoft ha creato un prodotto basato su VB chiamato LightSwitch che è scomparso con la morte di Silverlight.
L'esistenza di Visual Basic è stata minacciata in precedenza, ma questa volta è diverso.
Il sole è tramontato su uno dei linguaggi di programmazione più famosi al mondo...