Advanced Mac OS X Programming

Recensione

Advanced Mac OS X Programming
Advanced Mac OS X Programming e’ un libro importante e unico, perche’ nella maggior parte di libri di programmazione per Mac si tratta principalmente di alcuni Framework come Cocoa o Carbon (come l’essenziale Cocoa: Programming for OS X scritto da uno degli autori). Qui invece si parla di tutto quello che solitamente potrebbe essere trattato su un libro di programmazione per BSD aggiungendogli le particolarita’ di Mac OS X come il suo filesystem proprietario o di svariate API di basso livello.

Ovviamente non si tratta di un libro per novellini, ma chi conosce un po’ di unix potrebbe trovarsi proprio a suo agio.

La prima parte del libro sembra quella di un libro di sistemi operativi : si parla del compilatore, delle librerie, della gestione della memoria e del debugging. Tutto e’ molto in stile unix ma con tutte le aggiunte particolari di Mac OS X, come alcune ottimizzazioni, i fat binaries, i Frameworks e i Bundles.

Mi e’ piaciuto particolarmente il capitolo sulle librerie, che analizza per bene tutto quello che si puo’ fare con con unix tradizionalmente e i confronti nell’uso delle librerie dinamiche usando NSBundle, NSModule oppure dlopen() che e’ usato negli altri unix ma che solo in Mac OS X 10.4 e’ diventata una API nativa.
Tempo fa avevo avuto a che fare con un programma che usava dlopen() ma che era stato progettato su linux : anche la semplice info che ho trovato in questo libro per stampare sull’stdout quando venivano caricate le librerie mi sarebbe stata molto utile (DYLD_PRINT_LIBRARIES).

I tre capitoli sul Filesystem sono poi molto interessanti, perche’ oltre a ripassare le tipiche funzioni per la lettura e scrittura dei files, si parla di tutti gli attributi e metadati che puo’ avere un file. Con Mac OS X siamo ai massimi storici come quantita’ di metadati perche’ oltre ad avere i classici permessi POSIX e proprietari, abbiamo da tener conto di attributi del Finder, Resource Forks, Extended Attributes, ACL e altro. Tutto questo poi purtroppo non puo’ essere gestito da una sola API, ma da un miscuglio di BSD,Carbon e Cocoa. Se si e’ pignoli, fare un backup corretto non e’ proprio un gioco da ragazzi.

Questi sono solo i primi esempi. E’ un libro che non ha bisogno di essere letto da dall’inizio alla fine, quasi ogni capitolo ha un contenuto che non dipende dagli altri ed e’ quindi comodissimo da usare come reference per il futuro. Argomenti come i Directory Services o Launchd potrebbero non interessarci per il momento, ma prima o poi si meriteranno una lettura.

2006-05-18