Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Concurrent Programming in Mac OS X and iOS
Recensito da Ugo Landini il 02-02-2012 ore 15:23
Copertina ISBN: 9781449305635
Autori: Vandad Nahavandipoor
Editore: O'Reilly
Lingua: Inglese
Anno: 2011
Pagine: 46
Allegati: Nessuno
Intel Cluster Studio XE
E’ molto difficile scrivere una recensione di questo libro edito da O’Reilly poiché, per diversi motivi che spiegherò nel prosieguo, è probabilmente il libro tecnico più particolare che abbia mai letto in vita mia.

L’argomento è molto interessante e trendy, poiché tratta della programmazione concorrente su Mac OSX Lion e iOS 5. Apple, nel trimestre corrente, pare sia diventata, grazie soprattutto all’iPad, il venditore numero uno di client PC, e tutti i device di ultima generazione sono già perlomeno dei dual core. Tutti i rumors portano a pensare che già dalla prossima generazione si potranno comunemente avere chip quad core su un dispositivo portatile, per cui anche gli sviluppatori più ad alto livello di iApp dovranno acquisire qualche nozione di programmazione concorrente per sfruttare adeguatamente tutte queste CPU.

Apple ha introdotto il GCD (Grand Central Dispatch) con Lion e iOS 5: queste API permettono di astrarsi dai thread modellando la concorrenza per code (queue) e rendendo molto più semplice e mantenibile la scrittura di codice concorrente. Il GCD ha a sua volta bisogno dei blocchi (block, o closure, termine che va più di moda) per poter esprimere il concetto di azione, caratteristica questa che era stata introdotta da Apple nella generazione precedente dei suoi sistemi operativi (Snow Leopard e iOS 4).

Una closure è sostanzialmente una funzione trattata come First Class Object: in pochissime parole una funzione che può essere passata come parametro — senza puntatori a funzioni— che può essere restituita come tipo di ritorno e che può “catturare” lo stato delle variabili nel suo lexycal scope. Una closure può rappresentare efficacemente un’azione e dunque in sintesi si può dire che GCD permette di effettuare uno scheduling di closure che saranno eseguite su diverse CPU/core liberando il programmatore dal fardello della gestione diretta di thread.

Un fatto interessante e sottovalutato da molti, compreso l’autore del libro in questione, è che l’introduzione delle closure è stata realizzata a livello di C, direttamente nel compilatore clang, e proposta come estensione al linguaggio C stesso. Questo implica che i blocchi, ma anche GCD stesso, non sono appannaggio di Objective-C e dunque solo di Apple, ma possono essere utilizzati anche in altri contesti: uno degli sforzi più interessanti in tal senso è libdispatch, un progetto che mira a creare una versione di Apache in modalità MPM (Multi Process Module) più efficiente e scalabile su OSX e BSD rifattorizzando il codice multithreaded con le API di GCD.

La prima cosa che si nota del libro è la sua estrema brevità: 46 pagine in totale, divise in due capitoli. Sulle prime pensavo che la confezione fosse vuota e fosse un catalogo. Vista la copertina, ho pensato allora che fosse un estratto del libro. Ho dovuto controllare online per assicurarmi che quello sotto mano fosse il testo vero e proprio e che non ci fossero errori!

Togliendo indice, prefazioni e pagine bianche o di pubblicità, stiamo parlando di 17 pagine effettive per il capitolo sui blocchi e 27 pagine effettive per il capitolo su GCD. Ora, è vero che essere concisi è spesso un pregio più che un difetto, ma c’è anche da dire che è in assoluto la prima volta che vedo un libro trattare un argomento specialistico in maniera così stringata. Soprattutto tenendo conto che la companion guide di Apple sui blocchi è di circa 20 pagine, e quella analoga su GCD di circa 90. E le companion guide di Apple non sono esattamente famose per essere prolisse.

La seconda cosa che si nota è che nel libro non ci sono rappresentazioni grafiche, che aiutino a capire la sintassi dei blocchi, sintassi piuttosto ostica per i neofiti e dovuta principalmente alla necessità di dover essere retrocompatibile con 40 anni circa di storia, con Objective-C, con C++ e Objective C++. Disegnini che per inciso nelle companion guide di Apple ci sono.

Passando ai contenuti veri e propri, l’autore illustra le caratteristiche di blocchi e GCD con semplici snippet di codice, di fatto parafrasando le guide Apple e poco più: non ci sono pattern di utilizzo o esempi di esperienze reali in GCD, non ci sono linee guida, best practice o idiomi. Non essendo il testo esaustivo, rimangono dei dubbi da colmare e sarebbe comunque necessario leggere le guide ufficiali: credo che il libro fosse pensato per essere un (buon) tutorial online, o un'estensione del cookbook dello stesso autore, e che dunque non giustifichi assolutamente il suo prezzo, peraltro non contenuto come l’esiguo numero di pagine lascerebbe sperare.
proIl testo è più leggero di qualsiasi altra cosa possiate portare nello zaino; non contiene errori o inesattezze evidenti
controIl libro purtroppo contiene meno informazioni delle guide gratuite di Apple e le spiega anche in maniera meno curata.
Precedente: Tutti pronti per PHP 5.4: conviene aggiornare?
Successiva: Realizzare pulsanti con i CSS3
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.287 secondi.