Caro Steve dacci il garbage collector

Caro Steve dacci il garbage collector


Jon Evans di TechCrunch, oltre che blogger, è anche uno sviluppatore sia iOS che Android. Egli ha provato entrambe le piattaforme nel corso della sua carriera imparando a conoscerne pregi e difetti. Dalla sua esperienza con iOS ha partorito una serie di lettere indirizzata a Steve Jobs e Scott Forstall: le lettere che tutti gli sviluppatori vorrebbero mandare a Cupertino. Quella che segue è la prima.

Steve Jobs (and Scott Forstall)
One Infinite Loop
Cupertino, CA
USA 95014

Caro Steve,

per favore dacci il garbage collection. Per favore, per favore, per favore dacci il garbage collection.
Lo so che non è sexy, o brillante, o rotondo. Lo so che gli utenti non possono accorgersi della differenza (tranne quando le applicazioni crashano, o ci mettono il doppio del tempo necessario per svilupparle).
Mentre quasi ogni altra cosa di iOS SDK, l’editor, le librerie, lo stesso Objective-C, è fantastica, la sua gestione della memoria è onestamente ferma agli anni ’80. Come un compatriota ha recentemente detto con orrore quando ha sviluppato per la prima volta con iOS, “Aspetta un attimo, di che decennio è questo?”.
E’ come guidare una Ferrari con i freni realizzati da Lada.


La gestione della memoria, per i non addetti ai lavori, si riferisce al modo in cui il dispositivo assegna la propria limitata memoria fisica, RAM, alle diverse applicazioni aperte che ne richiedono una quantità potenzialmente illimitata. Ogni moderno ambiente di sviluppo possiede un servizio automatico, garbage collector, che fa da vero e proprio spazzino di risorse (vedete il funzionamento nell’immagine in alto). I problemi con la memoria possono sempre spuntare fuori anche in questo caso, ma almeno non è necessario mettersi ad allocare e deallocare ogni blocco di memoria che si vuole utilizzare, con il rischio di inserire bug maledettamente difficili da scovare.

Il primo linguaggio di programmazione che utilizzò tale tecnologia fu il Lisp nel 1959 grazie a John McCarthy, padre del garbage collector. Da allora, tranne nei linguaggi di bassissimo livello, il resto ha adottato servizi simili, evoluti e non, a tutto vantaggio degli sviluppatori che possono concentrarsi su quello che il software deve fare, piuttosto che su come “smaltire” gli oggetti impiegati nel codice. D’altro canto, non è una novità, il servizio richiede risorse in più ed è forse per questo motivo che Apple ha deciso di non implementarlo, sebbene esistano garbage collector minimali molto leggeri. Non saranno all’altezza di quello di Java, ad esempio, ma sarebbe pur sempre un grandissimo contributo.

Ti consigliamo anche

Link copiato negli appunti