Credo che i libri della collana “Head First” della O’Reilly non conoscano mezze misure: o si amano o si odiano.
La loro struttura, la loro impaginazione, il loro modo di insegnare le cose sono troppo originali per non provocare reazioni estreme: di sicuro non passano inosservati.
Consiglio a chiunque di passare in una libreria, ben fornita di libri di informatica, per provare a sfogliarli e rendersi conto di come sono fatti.
Non è da tutti i giorni infatti vedere un libro di programmazione infarcito con immagini, foto (spesso d’epoca, tipo anni ’50 e ’60), fumetti, giochi e cruciverba, e tutta una serie di altre amenità che si trovano in genere nei fumetti per ragazzi. Questo tomo da oltre 700 pagine, larghe oltre la media, è solo uno dei tanti titoli della collana “Head First”, e tutti rispecchiano questa filosofia, che dovrebbe aiutare l’apprendimento e l’assimilazione dei concetti.
Leggendo, o anche solo sfogliando questo libro, sembra di ritornare ai tempi della scuola, con le scritte a margine (proprio in stile calligrafico), le nuvolette, gli scarabocchi, le frecce e tutti quei segni che tutti facevamo in matita sui libri. Se da un lato questo, insieme alla continua ripetizione dei concetti, può effettivamente aiutare nella comprensione, dall’altro lato crea pagine di testo molto caotiche, direi quasi confusionarie, in cui si fa un po’ fatica a seguire il flusso logico del discorso (la lettura viene continuamente interrotta e distratta da tutti questi abbellimenti estetici).
Meglio quindi sottolineare subito questi aspetti, in modo che un potenziale acquirente sia reso cosciente di cosa avrà poi tra le mani.
Potenziale acquirente, inoltre, che vedrei come un principiante quasi assoluto. Si parte infatti dalle basi che più basi non si può, e questo per parecchie pagine. Un’altra caratteristica, in contrapposizione con tanti altri testi, è la totale esclusione di esempi con le classiche “Console Application”, per dedicarsi da subito alle WinForm.
Ogni capitolo contiene parecchie sezioni del tipo “Domande stupide”, immedesimandosi in un ipotetico utente alle prime armi che potrebbe domandare anche le cose più ovvie. I progetti da portare avanti sono tanti, ed ogni volta potrebbe essere molto “time consuming” immedesimarsi preventivamente nella logica del progetto stesso.
Devo ammettere che questo libro non l’ho letto tutto; sia perché è davvero per principianti, e la lettura per un utente già discretamente esperto potrebbe essere piuttosto noiosa, sia perché essendo pagine molto “ricche”, viene richiesta un enorme quantità di tempo per leggere anche un solo capitolo (e questo senza nemmeno provare gli esercizi). Per la parte del codice, spesso “annegato” in mezzo alle varie scritte, viene indentato con la prima graffa in linea, cosa che a me personalmente piace poco (la ritengo poco leggibile, ma è una questione di gusti).
Idealmente il lettore non dovrebbe limitarsi ad una lettura passiva, ma eseguire tutti le varie esercitazioni, i cruciverba, i giochi, i quiz e quant’altro (ma appunto per questo il tempo si dilata enormemente).
Per quanto riguarda la pura trattazione degli argomenti, il libro segue il percorso classico dei libri per principianti, esponendo solo gli argomenti base del linguaggio, e “osando” argomenti più avanzati, quali potrebbero essere i delegati e LINQ negli ultimi capitoli.
Grande importanza – fortunatamente – viene data alla programmazione ad oggetti, il cui richiamo si nota in ogni capitolo.
Ma arriviamo ai punti dolenti.
La primissima edizione di questo libro (novembre 2007) è riuscita a riempire una pagina web di “errata” che stampata si espandeva su decine e decine pagine A4…
È andata un po’ meglio con la seconda ristampa (gennaio 2008), e infine la quarta (settembre 2008) sembra che abbia risolto la quasi totalità di errori e refusi.
Purtroppo la copia in mio possesso è quella indicata con “01/2008”, quindi ancora ben dotata di imprecisioni. In tali casi mi ci metto di buzzo buono, mi stampo le errate e mi correggo il testo a matita (e questo ancora prima di leggerlo). Con questo invece ho desistito subito non appena mi sono accorto che ci avrei messo come minimo una mezza giornata per sistemarle tutte.
Raccomando quindi, a chi volesse acquistarlo, di controllare (si trova nelle primissime pagine, dove ci sono i dati della casa editrice, nell’angolino in basso a destra) di che edizione/ristampa si tratta.
È molto facile trovare librerie fornite con la prima edizione, assolutamente da evitare.
Questa è la pagina del sito della O’Reilly dedicata al libro:
http://oreilly.com/catalog/9780596514822/index.html
Da qui è possibile scaricare il quinto capitolo completo (“Encapsulation”, di ben 32 pagine), e tutto il codice sorgente (poco più di 2 MB).
Il libro ha poi anche un sito dedicato http://www.headfirstlabs.com/books/hfcsharp/
con all’interno parecchio materiale, oltre al codice sorgente, comodamente suddiviso capitolo per capitolo.
PRO
Per chi ama gli approcci fantasiosi, divertenti e fuori dagli schemi, con questo libro si troverà davvero a proprio agio. Gli autori infatti si impegnano al massimo per rendere l’insegnamento di un linguaggio di programmazione il più divertente possibile. L’approccio graduale, la ripetizione dei concetti, i numerosissimi esercizi, test, quiz ecc. aiutano ad assimilare gradatamente i concetti. Effetto secondario non sgradito, si migliora anche il proprio inglese (grazie ai numerosi fumetti e disegni).
CONTRO
A parte gli innumerevoli refusi, che comunque dipendono molto anche dalla edizione/ristampa del libro, i “contro” rispecchiano specularmente i “pro”. Ovvero, l’eccessiva ricchezza di grafica fumettistica può appesantire la lettura e renderla caotica. Enorme, inoltre, la quantità di tempo che questo libro richiede per la lettura, senza peraltro arrivare a coprire argomenti avanzati che altri libri coprono (e che impiegano, nel complesso, meno pagine).
Voto: 7/10
Lettore: Principiante
Sommario
Intro
1 – Cap. 1: Get Productive in C# - Visual Applications, in 10 minutes or less
43 – Cap. 2: It’s All Just Code – Under the hood
85 – Cap. 3: Objects Get Oriented – Making code make sense
123 – Cap. 4: Types and References – It’s 10:00. Do you know where your data is?
163 – C# Lab1: A Day at the Races
173 – Cap. 5: Encapsulation: Keep your privates…private
205 – Cap. 6: Inheritance – Your object’s family tree
251 – Cap. 7: Interfaces and abstract classes – Making classes keep their promises
309 – Cap. 8: Enums and collections – Storing lots of data
363 – C# Lab 2: The Quest
385 – Cap. 9: Reading and writing files – Save the byte array, save the world
439 – Cap. 10: Exception handling – Putting Our Fires Gets Old
483 – Cap. 11: Events and delegates – What Your Code Does When You’re Not Looking
515 – Cap. 12: Review and Preview – Knowledge, Power, and Building Cool Stuff
563 – Cap. 13: Controls and graphics – Make it pretty
621 – Cap. 14: Captain Amazing – The Death of the Object
653 – Cap. 15: LINQ – Get Control of your data
681 – C# Lab 3: Invaders
703 – Leftovers: The top 5 things we wanted to include in this book
Titolo: Head First C#
Autori: Andrew Stellman, Jennifer Greene
Editore: O’Reilly
ISBN: 0-596-51482-4
Pagine: 778
Prezzo: 49.99 $ (prezzo di copertina)
Data di uscita: Nov. 2007