venerdì 21 ottobre 2011

Piccoli programmatori crescono.





Gli Stati Uniti avranno anche tanti difetti, ma un pregio dobbiamo riconoscerglielo: sanno 
valorizzare e sostenere le idee. Questa è la storia di un’idea.

Siamo nel 2000, all’università dell’Illinois si sta per laureare Chris Lattner un giovane che 
nei suoi studi si è interessato principalmente di sistemi operativi e di compilatori. Ma la sua 
tesi di laurea verterà su un’idea alla quale sta lavorando già da un po’. 
Tutto nasce da una serie di considerazioni che Chris ha incominciato a fare durante il corso di 
teoria dei compilatori e soprattutto sui compilatori per il linguaggio C/C++. Analizzando molto 
da vicino questi compilatori (e soprattutto gcc) Chris era arrivato alla conclusione che questi 
compilatori si basavano su tecniche di generazione del codice vecchie di decenni. La 
generazione del codice non era “Just In Time” e non esistevano ottimizzazioni cross-file. E 
si era accorto che questi compilatori diventavano sempre più lenti ad ogni nuova release. 
Perché quindi non scrivere un compilatore che avesse le caratteristiche che i compilatori 
all’epoca non avevano? Perché non attingere dalla letteratura tecnica le idee migliori e 
metterle assieme in un moderno compilatore che produca codice estremamente 
ottimizzato e sia molto veloce?
Quindi Chris inizia a lavorare su questa idea. E a questa idea ci lavora dal 2000, anno 
della tesi, fino al 2005, anno in cui inizia a pubblicare i primi risultati della sua ricerca. Gli 
articoli pubblicati da Chris parlano di LLVM (Low Level Virtual Machine), il nome che lui ha 
dato a questo sistema universale di compilazione. Manca ancora un passo. Il front-end. 
Inizialmente Chris ha utilizzato il front-end di gcc (llvm-gcc), ma già nel 2005 ha iniziato a 
lavorare ad un sostituto per questo front-end che in ogni caso reintroduceva quelle 
limitazioni sistemiche proprie di gcc. 
E qui viene il bello. 
Nel frattempo un altro attore della nostra storia, un grande colosso dell’informatica si era 
reso conto delle limitazioni di gcc. Stiamo parlando della Apple. Apple utilizzava gcc per il 
suo ambiente di sviluppo e per la compilazione di tutte le applicazioni e del sistema 
operativo. E proprio nel periodo in cui Chris Lattner pubblicava i suoi risultati la Apple si 
stava guardando attorno per trovare una valida alternativa a gcc. Gli sviluppatori Apple 
provando l’LLVM si sono ritrovati con la soluzione a portata di mano. Lattner è stato subito 
convocato a Cupertino per un seminario su LLVM e sulle innovazioni che questa 
tecnologia introduceva nel mondo dei compilatori. 
Il mese dopo questo seminario, Lattner è stato assunto da Apple e oggi è il capo del team 
che si occupa dell’architettura software dei compilatori del dipartimento ricerca e sviluppo. 
Qui ha visto la luce il nuovo front-end per LLVM, chiamato Clang. L’unione di Clang con 
LLVM fornisce quindi un compilatore innovativo, veloce e che produce codice 
estremamente ottimizzato per i86, i86-64, PowerPC e ARM. 
Tutto quello che vediamo oggi funzionare su macchine Apple è stato compilato con LLVM. 
Io ora sto scrivendo con un word processor compilato con LLVM e tutte le “App” che ci 
sono su iPhone e iPad (sistema operativo compreso) sono state compilate con LLVM. 
Questa è la storia di Chris Lattner e di come una sua idea (quando era ancora studente) 
abbia cambiato il modo di vedere la compilazione. 
Ora una domanda. 
Che fine avrebbe fatto Chris Lattner e la sua idea se si fosse laureato in Italia e in Italia 
avesse pubblicato i suoi risultati? 
Non c’è bisogno che mi rispondiate...

Luca Ciciriello

Nessun commento:

Posta un commento