Anders Hejlsberg progetta linguaggi da oltre quattro decenni, ma la sua influenza va oltre la sintassi. Da Turbo Pascal a TypeScript ha lavorato sul rapporto tra linguaggio, compilatore, editor, librerie e runtime: l’esperienza di programmazione dipende dall’intero sistema.
Turbo Pascal doveva funzionare sui microcomputer degli anni Ottanta e compilare molto rapidamente. Delphi puntava allo sviluppo visuale per Windows. C# accompagnava .NET. TypeScript doveva portare l’analisi statica a JavaScript senza rompere il suo enorme ecosistema.
Dai microcomputer a Turbo Pascal
Nato a Copenaghen nel 1960, Hejlsberg studiò ingegneria all’Università Tecnica della Danimarca. Sviluppò Compass Pascal, poi PolyPascal. Borland ne acquisì i diritti e lo trasformò nel cuore di Turbo Pascal.
Lanciato nel 1983, Turbo Pascal riuniva editor, compilatore ed esecuzione. La compilazione quasi immediata accorciava drasticamente il ciclo tra idea, prova e correzione. Hejlsberg scrisse il compilatore originale; i team Borland trasformarono quel lavoro in una piattaforma completa.
Delphi: linguaggio, componenti e interfaccia visuale
Nel 1995 Borland lanciò Delphi, con Hejlsberg come architetto principale. Object Pascal, progettazione visuale dei form, libreria di componenti e compilazione nativa erano integrati nello stesso ambiente. I controlli grafici corrispondevano a oggetti programmabili, collegando direttamente interfaccia e modello del linguaggio.
Microsoft e il contesto .NET
Hejlsberg entrò in Microsoft nel 1996, lavorando inizialmente a Visual J++ e Windows Foundation Classes. Microsoft stava preparando il Common Language Runtime, una piattaforma multilinguaggio con memoria gestita, librerie comuni e interoperabilità.
Hejlsberg è il progettista principale di C#, ma la specifica cita anche Scott Wiltamuth e Peter Golde tra i principali inventori. Presentato ampiamente nel 2000, C# combinava tipizzazione statica, memoria gestita, proprietà, eventi, delegati, metadati ed eccezioni coerenti con .NET.
Le sezioni unsafe rendono esplicito l’uso di operazioni a basso livello. La standardizzazione Ecma e ISO ha inoltre distinto la definizione del linguaggio dall’implementazione Microsoft.
Evolvere C# senza perdere coerenza
Un linguaggio diffuso deve convivere con milioni di righe esistenti. I generics di C# 2.0, le lambda, i metodi di estensione e LINQ di C# 3.0, poi async/await, pattern matching e record hanno aumentato l’espressività ma anche il costo di apprendimento. La sfida consiste nel far comporre le nuove funzioni con l’insieme esistente.
JavaScript su larga scala e TypeScript
All’inizio degli anni 2010 le applicazioni JavaScript erano diventate grandi basi di codice. La tipizzazione dinamica favoriva la sperimentazione ma rendeva più difficili navigazione, refactoring e diagnosi anticipata. Un linguaggio completamente separato avrebbe però perso browser, Node.js, pacchetti e comportamenti esistenti.
Microsoft presentò TypeScript nell’ottobre 2012 con Hejlsberg come architetto principale. TypeScript aggiunge annotazioni e un sistema di tipi, quindi produce JavaScript standard.
I tipi sono cancellabili: aiutano controllo, navigazione ed editor, ma scompaiono dall’output. La tipizzazione strutturale, le proprietà opzionali, le union, i generics, il narrowing e i tipi condizionali permettono di descrivere modelli già presenti in JavaScript.
File di dichiarazione e comunità
I file .d.ts consentono a una libreria JavaScript di offrire strumenti tipizzati senza modificare il codice runtime. DefinitelyTyped ha reso possibile un’adozione graduale per moltissimi pacchetti. Le dichiarazioni possono tuttavia essere incomplete o obsolete: una compilazione senza errori non garantisce l’assenza di problemi a runtime.
Un progetto aperto che segue JavaScript
TypeScript è open source e sviluppato pubblicamente. Il team evita sempre più funzioni runtime proprie e segue il processo ECMAScript. I servizi del linguaggio forniscono completamento, navigazione, refactoring e diagnostica, continuando una preoccupazione già visibile in Turbo Pascal: ridurre la distanza tra intenzione e feedback.
Il lavoro di un architetto, non di un inventore solitario
Turbo Pascal, Delphi, C# e TypeScript sono opere collettive. Il contributo specifico di Hejlsberg emerge nelle decisioni su velocità di compilazione, coerenza tra linguaggio e ambiente, adozione graduale, compatibilità e capacità degli strumenti di comprendere il programma.
Perché Anders Hejlsberg conta ancora
La sua carriera mostra che la storia dei linguaggi non riguarda soltanto sintassi e paradigmi. Tempi di compilazione, messaggi d’errore, completamento, librerie, migrazione e compatibilità influenzano altrettanto l’esperienza reale. TypeScript migliora JavaScript preservandone l’esecuzione; C# coordina più profondamente linguaggio, runtime e librerie, assumendosi però il peso crescente della compatibilità.
Cronologia
- 1960: nasce a Copenaghen.
- Primi anni 1980: sviluppa Compass Pascal, poi PolyPascal.
- 1983: Borland lancia Turbo Pascal.
- 1995: viene lanciato Delphi.
- 1996: entra in Microsoft.
- Fine anni 1990: progettazione del futuro C# con i team .NET.
- 2000: ampia presentazione di C#.
- 2002: prima standardizzazione Ecma di C#.
- 2007: C# 3.0 introduce LINQ e lambda.
- 2012: viene presentato TypeScript; C# 5 amplia
async/await.
- 2014: TypeScript 1.0.
Domande frequenti
Anders Hejlsberg ha creato Turbo Pascal?
Ha scritto il compilatore Pascal originale acquisito da Borland ed è diventato l’architetto centrale di Turbo Pascal. Il prodotto commerciale e le sue evoluzioni sono però frutto del lavoro collettivo dei team Borland.
È l’unico creatore di C#?
No. È il progettista principale, ma la specifica cita anche Scott Wiltamuth e Peter Golde. Linguaggio, runtime, librerie e strumenti sono stati costruiti da molti team.
TypeScript sostituisce JavaScript?
No. Analizza un’estensione tipizzata di JavaScript e produce JavaScript per gli ambienti esistenti.
Perché i tipi TypeScript scompaiono a runtime?
Servono al controllo statico e agli strumenti di sviluppo. La loro cancellazione preserva il comportamento e la compatibilità con JavaScript.
Cosa collega Turbo Pascal, C# e TypeScript?
Tutti accorciano il ciclo tra intenzione, diagnosi e risultato, pur affrontando vincoli tecnici differenti.