Nel primo episodio di nuovo podcast denominato “The Swift Community Podcast”, Chris Lattner racconta la nascita di Swift, il linguaggio di programmazione di Apple, creato da un suo progetto a partire dal 2010.
Prima di trovare un nome definitivo, il linguaggio di programmazione era stato denominato “Shiny”. Il perché lo riferisce Lattner spiegando che stava lavorando su qualcosa di “brillante” e quel nome, al momento, sembrava appropriato. Era qualcosa ad ogni modo ancora lontano dal potere competere con Objective-C, più che altro un progetto personale, creato per puro divertimento.
Lattner ha cominciato a lavorare su Swift subito dopo la WWDC del 2010, offrendo agli sviluppatori una versione del front-end Clang, compilatore fatto in casa in grado di compilare i sorgenti C++. Questo progetto era piuttosto dispendioso e complesso da seguire.
Chris Lattner
Lattner voleva lavorare su qualcosa di nuovo, più semplice e anche intellettualmente più stimolante. Nel tempo libero iniziò a lavorare sul progetto di un linguaggio di programmazione nuovo, più moderno e libero, parlando di questo con Bertrand Serlet, all’epoca responsabile del software Apple. Dalle prime discussioni sono nate idee su come doveva essere un linguaggio migliore, tenendo conto di peculiarità quali la gestione della memoria.
Uno degli obiettivi è stato da subito automatizzare quest’ultima, semplificando le procedure di protezione della memoria, non previste dal C o C++ (spetta allo sviluppatore occuparsi di tipicamente di questi aspetti e un errore nel codice o un uso improprio della RAM può causare perdite di memoria o instabilità).
All’epoca l’Objective-C non disponeva di meccanismi predefiniti per la protezione della memoria. Gli scambi di opinioni tra Chris Lattner e Bertrand Serlet hanno portato alla creazione di ARC, una funzione del compilatore responsabile della convalida del codice, verificando il corretto uso della memoria.
Swift, ancora prima che nascesse, ha permesso dunque di migliorare gli strumenti di sviluppo. Per vari motivi, non era ad ogni modo possibile trasformare progressivamente Objective-C (Lattner spiega che ARC è uno strumento utile ma questo linguaggio rimane fondamentalmente basato su C e non integra funzionalità che consentono di proteggere la memoria) ma bisognava pensare ad un linguaggio del tutto nuovo.
Objective-C è rimasto a lungo il linguaggio di programmazione di riferimento per Apple e lo sviluppo di Swift è stato ufficializzato con la nascita di un team dedicato guidato da Chris Lattner. Nell’aprile del 2011 Apple decise di scommettere sul nuovo linguaggio, invogliando i dipendenti a lavorare a tempo pieno su questo progetto. Tra le persone che si sono occupate di coordinare il progetto, Ted Kremenek, la persona che ha sostituito Chris Lattner quando ha lasciato Cupertino.
Un piccolo ma agguerrito gruppo ha creato le basi di Swift sapendo che bisognava partire da zero. Lattner aveva delineato i principi generali e creato le basi del linguaggio ma il lavoro più importante è stato svolto successivamente. Alcuni dei principi, come ad esempio la sintassi per definire variabili e funzioni non sono mai cambiati, ma molti elementi importanti sono arrivati negli anni seguenti.
Per creare Swift, Apple ha avuto la buona idea di non arruolare solo sviluppatori specializzati in linguaggi di programmazione e compilatori. Sono stati reclutati anche membri del team che si occupano di documentazione, invitati anche a esprimere le loro opinioni su molteplici decisioni non semplici da prendere quando si ha a che fare con un progetto del genere.
Lattner spiega che anche elementi semplici come scegliere un punto o una virgola nella sintassi, posso essere oggetto di discussione. La scelta di lavorare da subito con i team che si occupano di documentazione, si è rivelata ottima per migliorare il linguaggio di programmazione. Anziché creare e provare a spiegare in seguito il perché di determinate scelte, Swift è stato progettato documentando le funzioni man mano che nascevano, con ogni decisione spiegata e documentata in modo logico e coerente.
Apple presentò Swift in concomitanza della WWDC del 2014. La novità fu presentata da Craig Federighi, l’uomo che ha preso il posto di Bertrand Serlet nel 2011 che descrisse Swift come un nuovo, potente linguaggio di programmazione per iOS e OS X che rende più facile che mai per gli sviluppatori la creazione di app, spiegando che univa le prestazioni e l’efficienza dei linguaggi compilati con la semplicità e l’interattività dei linguaggi di scripting più popolari, evidenziando per gli sviluppatori la possibilità di scrivere codice più sicuro e affidabile, eliminando intere categorie di comuni errori di programmazione.
Federighi usò lo slogan “Objective-C, senza il C”, accattivante riconosce Lattner, ma si rammarica della scelta spiegando che non era questo l’obiettivo.
Sin dall’inizio, Lattner ha concepito Swift come un linguaggio di programmazione utilizzabile per tutto, dalla creazione del nucleo di un sistema operativo, a script che l’utente stesso può creare, per passare alla creazione di app, o di un firmware per interagire con l’hardware. Un’ambizione che va ben oltre le esigenze di Apple e che spiega la scelta di renderlo open-source. Quest’ultima scelta è stata gradita da Lattner (“l’apertura è migliore della chiusura”), spiegando che consente di coinvolgere più persone e ottenere risultati migliori.
La prima versione del linguaggio aveva dei limiti. Apple scelse di rilasciare Swift 1 nel 2014 sapendo che vi erano varie cose da sistemare ma lo scopo era anche ottenere feedback da parte degli sviluppatori. Sono nati in seguito vari progetti: il linguaggio di Apple è concepito per essere multipiattaforma ed è nato anche un gruppo di lavoro dedicato a Swift in ambito server.
C’è ancora ad ogni modo molto da fare su questo versante e, spiega, Chris Lattner, bisogna ancora portare Swift su Windows. D’altra parte la maggiorparte degli utenti lavora con l’ecosistema di Apple e la documentazione è dedicata quasi del tutto ai framwork e alle API di Cupertino.
Lattner spera che Swift diventi più aperto di altre piattaforme. Nulla lo impedisce, se non precise scelte di Apple che deve comunque rimanere al timone, fondamentale per modifiche importanti come la stabilizzazione dell’ABI (Application Binary Interface), possibile soltanto con risorse tecniche e umane che un solo player come Apple può dedicare allo scopo.
L’obiettivo secondo Lattner deve essere quello di un linguaggio adatto a tutte le esigenze; l’ex dipendente di Apple parla dell’apprendimento automatico come un possibile settore del quale Swift potrebbe trarre beneficio (un’area alla quale Apple da tempo dedica particolare attenzione). Chris Lattner dal 2017 ha iniziato a lavorare per Google e ha adattato Swift a TensorFlow, il framework per il machine learning, specificatamente ottimizzato per l’uso su dispositivi mobili. L’intervista completa può essere ascoltata a questo indirizzo.