Leggendo le recensioni di questo libro su Amazon si scopre che anche Scott Guthrie, il creatore delle pagine ASP.NET, ne traccia gli elogi, ed afferma di tenerne una copia sulla propria scrivania come veloce riferimento quando è assalito da qualche dubbio (ma che dubbi potrà mai avere uno come lui?).
Anche altri lettori danno 5 stelle a questo libro (il massimo dei voti).
Personalmente sono d’accordo con loro, ma solo in parte.
È effettivamente un libro molto completo. Malgrado il titolo riporti “solo” C# 3.0, tratta a 360 gradi di tutto il Framework 3.0, non solo del linguaggio in sé (che ne costituirebbe solo un componente).
Per chi è interessato esclusivamente al C# in quanto tale, solo i primi 4 capitoli, su ben 24 complessivi, trattano del linguaggio. Il resto, infatti, copre gli innumerevoli, e spesso poco conosciuti, aspetti del Framework .NET, nella sua ultima versione 3.5.
Ma a voler guardare, che senso avrebbe focalizzarsi solo sulle caratteristiche del linguaggio, trascurando poi tutto il contesto in cui questo linguaggio si esprime e viene utilizzato?
Gli autori (fratelli tra l’altro) sembrano aver preso seriamente questo proposito, e hanno scritto un libro molto simile ad una “reference” su tutto il mondo .NET 3.5, cercando di non trascurare nessun aspetto, LINQ compreso. Anzi, proprio su quest’ultima novità (in fondo la vera innovazione portata da questa versione del linguaggio) si soffermano a lungo, occupando per intero i capitoli 8, 9 e 10 (circa 120 pagine in totale).
Il lettore di riferimento possiede già dei rudimenti di programmazione ad oggetti, meglio se in ambito .NET. Non è richiesta la conoscenza preventiva del C# (stando perlomeno a quanto è dichiarato nella prefazione).
Non lo ritengo però un manuale su cui imparare il linguaggio, ma piuttosto un veloce riferimento (anche per approfondimenti) per chi già conosce un po’ il C#, oppure vuole fare il passaggio alla versione 3.0 provenendo dalle precedenti versioni.
Basta vedere che già a pagina 5 si parla di “Lambda expressions” per capire che non si tratta del solito manuale per imparare il linguaggio da zero o quasi. Il formato compatto e il tipo di carattere molto piccolo, lo rendono ideale compagno da tenere sulla scrivania, per un veloce ripasso o approfondimento quando non ci si ricorda qualche dettaglio del linguaggio.
I capitoli 2 e 3 (ben 100 pagine complessive) comunque effettuano un ripasso completo del linguaggio, e sono forse gli unici adatti a lettori alle prime armi. Nel capitolo 4 già si introducono gli argomenti avanzati, sia di C# 2 che 3, come le Lambda Expressions, Anonymous methods, delegati e altro. Molto utili in questo capitolo le note che indicano se una feature è relativa alla versione 2 o 3 del linguaggio.
Dopo il quarto capitolo direi di passare subito al settimo, dedicato alle Collections (stranamente posizionato molto dopo), per poi ritornare al quinto e al sesto in cui si fa un’overview del .NET Framework.
Dall’undicesimo capitolo in poi (da metà testo esatto) i capitoli posso essere letti in ordine sparso in base alle proprie esigenze, tenendo presente che ci si addentra ora in argomenti piuttosto avanzati.
Concludono il testo due brevi appendici: la prima riposta l’elenco delle parole chiave del linguaggio con a fianco una breve descrizione sull’uso (elenco dal quale però ne mancano 6, almeno stando al documento dell’Errata), mentre la seconda riporta un altro elenco, quello dei vari namespace e il corrispondente assembly .NET nel quale sono contenuti.
Essendo una “reference” non ci sono esercizi da completare, quiz o domande a cui rispondere, e i capitoli nemmeno dispongono dei (ormai) diffusissimi introduzione e riassunto finale. Il codice comunque non è poco: è raro trovare più di 10 righe non inframmezzate da “snippet” di codice.
Malgrado la numerosa carne al fuoco, il libro non tratta tutta una serie di argomenti in qualche modo legati a C# e al Framework .NET, come ad esempio: ASP.NET, ADO.NET, WF, WPF, WCF, CardSpace, Web Service e WinForms. Effettivamente, se fossero stati affrontati con lo stesso grado di approfondimento dei concetti effettivamente presenti, sarebbe stato necessario qualche centinaio di migliaia di pagine. A pagina 4 (ed anche subito dietro la copertina) c’è una bellissima figura a cerchi concentrici in cui gli argomenti trattati si dipanano dal centro verso la periferia, con a fianco il capitolo in cui sono trattati.
Concludendo vorrei che fosse chiaro una cosa: malgrado il nome non è un testo per imparare a programmare in C#, né nella programmazione ad oggetti in generale. Rappresenta piuttosto una completa reference da tenere sulla scrivania pronta al bisogno quando si ha bisogno di approfondire/rivedere *rapidamente* un concetto o un argomento. Io stesso mi sono ben guardato dal leggerlo tutto dall’inizio alla fine. In base all’argomento che mi serviva ripassare, mi sono letto il capitolo e via.
Data la sua struttura e gli argomenti trattati, questo libro rappresenta un valido riferimento per la preparazione all’esame 70-536 (l’esame base per certificarsi su .NET), magari in affiancamento ai consueti Training Kit della Microsoft Press.
A questa pagina è presente la scheda dettagliata del libro, mentre per quanto riguarda il codice scaricabile, si è reindirizzati al sito personale degli autori, dove tutti gli esempi sono suddivisi nei rispettivi capitoli di appartenenza.
Consiglio inoltre, prima di iniziare a leggere il libro, di correggere gli errori (confermati e presunti) presenti a questa pagina per quanto riguarda quelli confermati, e a questa pagina per quanto riguarda quelli presunti.
Di questi ultimi, alcuni rientrano già tra quelli confermati (e quindi è una ripetizione), altro non sono molto chiari (il lettore esprime una sua opinione ma non propone la soluzione), altri erano già stati corretti (perlomeno nella copia in mio possesso), ed infine, una minoranza sono effettivamente refusi/errori da correggere.
Pro
Notevole trattazione di parecchi concetti riguardanti C#, nelle sue varie versioni, del .NET Framework in generale e di LINQ in particolare. Il discorso è estremamente conciso e diretto al punto, senza giri di parole.
Davvero ottima la rilegatura, che evita il logorio della carta e consente di tenere tranquillamente il testo aperto sulla scrivania malgrado la sua dimensione non sia minuscola. Anche l’impaginazione complessiva è impeccabile.
Contro
Sono presenti, ahimè, un buon numero di refusi, e prima della lettura è necessario dedicare un paio di ore, matita alla mano e pagina delle “Errata” davanti al monitor, per “sistemare” il testo. In diversi paragrafi il testo assomiglia troppo a MSDN, ovvero un freddo elenco di metodi/proprietà/overloading/ecc. di una particolare classe o metodo di C# e del .NET Framework.
Voto complessivo: 8/10
Livello: Intermedio/Avanzato
Summary
Preface
1 - Cap. 1 – Introducing C# and the .NET Framework
8 - Cap. 2 – C# Language Basics
60 - Cap. 3 – Creating Types in C#
105 - Cap. 4 – Advanced C#
159 - Cap. 5 – Framework Overview
170 - Cap. 6 – Framework Fundamentals
229 - Cap. 7 - Collections
274 - Cap. 8 – LINQ Queries
320 - Cap. 9 – LINQ Operators
362 - Cap. 10 – LINQ to XML
395 - Cap. 11 – Other XML Technologies
422 - Cap. 12 – Disposal and Garbage Collection
432 - Cap. 13 – Streams and I/O
469 - Cap. 14 - Networking
498 - Cap. 15 - Serialization
535 - Cap. 16 - Assemblies
562 - Cap. 17 – Reflection and Metadata
612 - Cap. 18 - Security
639 - Cap. 19 – Threading
698 - Cap. 20 – Asynchronous Methods
709 - Cap. 21 – Application Domains
722 - Cap. 22 – Integrating with Native DLLs
738 - Cap. 23 – Diagnostic
756 - Cap. 24 – Regular Expressions
775 - A. C# Keywords
782 - B. Namespace-to-Assembly Reference
791 - Index
Titolo: C# 3.0 in a Nutshell, Third Edition
Autori: Joseph Albahari, Ben Albahari
Editore: O’Reilly
ISBN: 0-596-00916-X
Pagine: 838
Prezzo: 32,97 $ (su Amazon)
Data di uscita: Sett. 2007