Mappa Via Marconi 20, Bussolengo (VR)
Email info@devinterface.com

Cosa sta succedendo a TypeScript?

Indice


Come abbiamo visto nel nostro articolo "Dove sta andando la programmazione?", cinque su sei delle prime 10 posizioni relative alle risorse che abbiamo analizzato, presentano TypeScript nella loro classifica.

TypeScript è un linguaggio di programmazione open source che si basa sul linguaggio JavaScript ed è stato rilasciato nel 2012 da Microsoft, quindi una tecnologia presente e in uso da 13 anni. Lo scorso marzo, però, la stessa Microsoft ha rilasciato una dichiarazione annunciando il porting del compilatore TypeScript da JavaScript a Go, promettendo così un incredibile miglioramento delle prestazioni di 10 volte. 

Nella community tech queste dichiarazioni hanno suscitato molto interesse, ma anche stupore, in particolare proprio per la scelta di GO e non di tecnologie come ad esempio C++, C# o Rust. 

In questo articolo vi proponiamo una breve panoramica di TypeScript, GO e delle novità in arrivo. 



TypeScript

TypeScript è un superset di JavaScript, ciò significa che è possibile utilizzare JavaScript ed avere accesso a molte funzionalità ideate per creare codice migliore. TypeScript funziona compilando se stesso in un performante e affidabile JavaScript. Questa fase di compilazione viene eseguita in TypeScript. Perché TypeScript è stato così popolare e comunque continua a giocare un ruolo importante?

TypeScript è stato sviluppato da Microsoft e rilasciato nel 2012 come un superset di JavaScript, con l'obiettivo di risolvere alcune delle limitazioni del linguaggio, come la mancanza di tipizzazione statica.

Nel frattempo, nel 2011, Google ha lanciato AngularJS, un framework frontend basato su JavaScript. Poco dopo, nel 2013, Facebook ha introdotto ReactJS, un'altra libreria frontend che ha rapidamente guadagnato popolarità. Entrambi si basavano esclusivamente su JavaScript. Tuttavia, nel 2016, Google ha rilasciato Angular 2, un nuovo framework che, a differenza del suo predecessore, era interamente scritto in TypeScript.

Con il tempo, Angular (basato su TypeScript) ha iniziato a guadagnare sempre più consensi, distinguendosi per la sua struttura più organizzata e la tipizzazione statica, che aiutava a prevenire errori e migliorare la manutenibilità del codice. Questo ha contribuito alla crescente adozione di TypeScript, spingendo anche la comunità di React a integrare il supporto per TypeScript a partire dal 2020.

Al presente, sempre più sviluppatori e aziende hanno migrato da JavaScript a TypeScript, grazie ai suoi vantaggi in termini di sicurezza, produttività e scalabilità. È diventato uno standard per lo sviluppo frontend e backend, utilizzato in framework come Angular, React e persino Node.js.


GO

Alla fine degli anni 2000, Google si trovava ad affrontare sfide nello sviluppo backend per i suoi servizi su larga scala. Il linguaggio principale utilizzato per i microservizi era il C++, che offriva ottime prestazioni ma presentava una sintassi complessa e una curva di apprendimento ripida per i nuovi sviluppatori. Per gestire meglio la scalabilità e la produttività del team, alcuni ingegneri di Google iniziarono a cercare alternative.

L'obiettivo era creare un linguaggio che fosse facile da apprendere, altamente performante e leggibile, mantenendo al tempo stesso un alto livello di efficienza. Per un periodo, venne utilizzata una combinazione di C++ e Assembly, ma presto divenne evidente la necessità di un linguaggio nuovo e più adatto alle esigenze moderne.

Nel novembre 2009, Google annunciò ufficialmente Go (Golang) come open source, sviluppato da Robert Griesemer, Rob Pike e Ken Thompson. Dopo diversi miglioramenti, nel marzo 2012 venne rilasciata la versione stabile Go 1.0, che divenne lo standard per lo sviluppo con Go.

Grazie alla sua semplicità, efficienza e supporto alla concorrenza, Go guadagnò rapidamente popolarità, diventando un pilastro nel mondo del backend, cloud computing e microservizi. Oggi è ampiamente utilizzato da aziende come Google, Uber, Dropbox e Docker.


Perché GO e non altri linguaggi?

Come anticipato nell'introduzione, a marzo Anders Hejlsberg ha annunciato che il compilatore TypeScript, nella sua forma attuale, verrà sostituito da una nuova implementazione scritta in Go. Questo non significa una riscrittura completa da zero, ma un porting del codice esistente, attualmente scritto in TypeScript, verso Go. Microsoft prevede un incremento delle prestazioni fino a 10 volte, oltre a una gestione più efficiente della memoria e una maggiore stabilità e affidabilità.

L'esecuzione di codice nativo è generalmente più veloce ed economica rispetto a quella che dipende da un compilatore JIT (Just-In-Time) in fase di esecuzione. Ma perché è stata scelta proprio Go?

Rust è stato considerato, ma il suo complesso modello di gestione della memoria (con concetti come borrowing e ownership) avrebbe reso difficile un porting one-to-one del codice esistente. Sarebbe stato più adatto per una riscrittura completa (greenfield), ma non per una migrazione diretta.

Anche C++ è stato valutato, dato che offre prestazioni eccezionali, ma presenta molte peculiarità e una sintassi datata, rendendolo meno adatto in termini di manutenibilità e sviluppo.

Per quanto riguarda C#, la sua compilazione classica richiederebbe l'utilizzo del runtime .NET, il che sarebbe poco pratico: un compilatore dovrebbe funzionare come un binario collegato staticamente, mentre il compilatore AOT (Ahead of Time) di .NET non supporterebbe tutte le piattaforme desiderate. Per questo motivo, è stato escluso.




I vantaggi di Go per il nuovo compilatore TypeScript

La scelta di Go è dovuta al suo equilibrio tra prestazioni, manutenibilità e facilità di porting. Concettualmente, Go è simile a TypeScript, semplificando la migrazione. Inoltre:



  • Gestione automatica della memoria: grazie alla garbage collection, non è necessaria una gestione manuale.
  • Generazione di binari statici: Go può produrre eseguibili autonomi per diverse piattaforme, senza dipendere da un runtime esterno.
  • Ottimizzazione per prestazioni e parallelizzazione: due aspetti fondamentali per un compilatore.
Microsoft non ha scelto Go perché è il linguaggio "più veloce" o "migliore", ma perché è quello che offre la soluzione più bilanciata per le esigenze del progetto.




Cosa cambierà per gli sviluppatori TypeScript?

Se stai lavorando con TypeScript nel breve termine non cambierà molto, TypeScript è attualmente alla versione 5.8, e la 5.9 sarà la prossima release. Sarà con TypeScript 6.0 che inizieranno le prime deprecazioni e i cambiamenti necessari per prepararsi al nuovo compilatore in Go. Quest'ultimo debutterà con TypeScript 7.0, anche se non ci sono ancora date ufficiali.




Conclusione

Il passaggio del compilatore TypeScript a Go porterà numerosi vantaggi, tra cui build più veloci, sia in locale che nelle pipeline CI/CD. Inoltre, il server dei linguaggi di TypeScript beneficerà di una maggiore reattività, migliorando le prestazioni degli IDE e rendendo l’esperienza di sviluppo più fluida. Un altro aspetto significativo è che, a partire da TypeScript 7, Node.js non sarà più un requisito per la compilazione del codice, semplificando ulteriormente il setup degli ambienti di sviluppo.

Da diverso tempo anche noi a DevInterface abbiamo adottato Go come parte del nostro stack tecnologico, apprezzandone la velocità, la scalabilità e l’efficienza nella gestione della concorrenza. Grazie alla nostra esperienza con questo linguaggio, siamo in grado di realizzare applicazioni robuste e performanti, ideali per backend ad alte prestazioni, microservizi e progetti cloud-native.

Se stai pensando di sviluppare un progetto con Go, il nostro team può aiutarti a sfruttare al massimo il potenziale di questo linguaggio. Contattaci per scoprire come possiamo supportarti!