I libri della famosa collana “For Dummies” della Wiley stanno col tempo riguadagnando la reputazione che si stavano perdendo negli ultimi anni a causa della qualità di alcuni titoli diciamo non eccelsa (anzi proprio pessima).
Ora stanno progressivamente migliorando. Questo piccolo volume (meno di 400 pagine) su LINQ uscito non proprio recentemente (all’inizio del 2008) fa già parte di questa nuova ondata virtuosa, pur mantenendo le caratteristiche principali per cui questa collana è conosciuta. Ovvero il fatto di non dare nulla per scontato, di usare un linguaggio semplice e molto discorsivo, le immagini chiare, le numerose note a margine e gli esempi di codice abbondanti e di piccola dimensione.
John Paul Mueller, di cui qualche tempo fa avevo recensito il suo libro su C++ (reperibile a questo link):
ha confezionato un valido testo introduttivo a LINQ per chi, pur avendo sufficienti basi di C# (nella versione 2.0), non hai visto questa importante innovazione del linguaggio nella sua terza versione.
Dopo averne letto circa i ¾ devo ammettere che la prosa dell’autore è molto chiara, comprensibile, molto informale e ben adatta anche ai principianti. C’è solo da mettere in conto una certa prolissità, aspetto ormai caratterizzante di questo autore, che preferisce riempire mezza pagina di testo per esprimere un concetto che si potrebbe spiegare in un paio di frasi.
Gli esempi mostrati, a differenza di altri libri, non fanno uso delle Console Application, ma bensì di semplici WinForms. Non è una cattiva scelta; personalmente non amo tanto le console application, mentre le WinForm, pur non complicando troppo il progetto, rendono il tutto più facilmente visualizzabile.
Il linguaggio utilizzato è C# 3.0, tranne che nel capitolo 4 (dedicato espressamente a chi usa VB).
L’indentazione è ottima, ed anche il fatto di mostrare gli esempi in riquadri con lo sfondo in grigio chiaro aumenta di non poco la loro chiarezza e leggibilità.
Le righe dei commenti sono tantissime, e spesso superano come quantità il codi
Non ci sono domande o esercizi riepilogativi a fine capitolo, come qualche volta capita in altri testi, e nemmeno un sommario riassuntivo. Direi che comunque non se ne sente la mancanza, dato che di esercizi ed esempi ce ne sono in abbondanza, e anche la parte scritta, riassuntiva o meno, non manca di sicuro.
Il primo capitolo è molto soft, senza esempi di codice, ma con lo scopo di preparare il terreno per le imminenti prove con LINQ. È un capitolo molto discorsivo: non lo ritengo fondamentale per la comprensione di ciò che segue, ma per ampliare la propria cultura direi che non fa mai male, e alla fine è una oretta bene spesa.
Decisamente importante il terzo capitolo.
.
Vengono spiegate le nuove feature di C# 3.0, ovvero (in ordine sparso): Object Initializers, Collection Initializers, Anonymous Types, Local Variable Type Inference, Auto-Implemented Properties, Extension Methods, Lambdas, Query Expressions, Expression Trees e Partial Methods.
Tutte queste informazioni non sono per pura cultura generale, ma vengono più o meno massicciamente sfruttate da LINQ, e quindi la loro conoscenza è d’obbligo. LINQ, sotto certi aspetti, è la rappresentazione unitaria di tutte queste nuove piccole caratteristiche introdotte con la versione 3.0 del linguaggio.
Malgrado questo libro utilizzi C# come linguaggio degli esempi, tutto il capitolo 4 è dedicato invece agli sviluppatori VB. Mostra perciò come vengono tradotti in VB gli snippet di codice finora visti, sottolineando le differenze sintattiche tra i due linguaggi. Da quanto si vede anche sull’MSDN, sembra infatti che la Microsoft dia una preferenza a C# quando si tratta di parlare di LINQ, ma non bisogna dimenticare che il mondo è ancora pieno di sviluppatori VB, che gradiranno molto questo non breve (22 pagine) capitolo.
Leggendolo anche solo per curiosità, si potranno scoprire interessanti differenze tra i due linguaggi. Ad esempio, VB non supporta le Collection Initializers e le Automatic Properties, ma in compenso possiede keywords che C# invece non dispone.
Altrettanto particolare è il capitolo successivo, dedicato a chi vuole usare LINQ con Visual Studio 2005 come ambiente di sviluppo (ricordo che LINQ è stato introdotto con la versione successiva, la 2008, di Visual Studio). L’impresa non è impossibile, come si potrebbe pensare, ma bisogna seguire alcuni accorgimenti, esaurientemente spiegati in questo capitolo (sì, si riesce, ma si perdono parecchie funzionalità dell’Intellisense).
Magari un tale capitolo, proprio ora che sta per essere rilasciato Visual Studio 2010, potrebbe sembrare inutile, ma bisogna considerare che questo libro è stato pubblicato nel 2008, e a quei tempi, un piccolo aiuto per chi ancora usava Visual Studio 2005 poteva avere un senso.
Dopo questi primi 5 capitoli introduttivi (costituenti la prima delle 4 parti in cui è suddiviso il libro), si entra nella seconda parte costituita da 4 capitoli, ognuno dedicato ad un tipologia di LINQ. Nell’ordine: LINQ to Object, Dataset, SQL (Server) e XML.
Queste rappresentano 4 possibili “fonti dati” per le espressioni LINQ, e l’autore le espone sempre con dovizia di particolari e una moltitudine di piccoli esempi.
La terza parte è forse quella che in prima battuta può essere saltata, e tenuta pronta al bisogno. Tratta infatti dell’applicazione di LINQ in contesti particolari: con applicazioni Office, con Active Directory e argomenti un po’ avanzati sempre con SQL Server (quest’ultimo capitolo, magari, risulta il più utile dei 4 che costituiscono questa parte).
Gli ultimi 3 capitoli – la quarta parte – sono di contorno, e non strettamente indispensabili per la comprensione dell’argomento, anche se li raccomanderei comunque caldamente. Si parla infatti di come ottimizzare il codice LINQ, sia in fase di scrittura che in fase di deploy, e l’ultimo capitolo è una rassegna ragionata di utili url dove reperire informazioni o postare commenti e aiuti (blog, siti e forum).
All’inizio di ognuna delle 4 parti ci sono le famose vignette di Rick Tennant, molto apprezzate dall’altra parte dell’oceano. La rilegatura è abbastanza flessibile, e la copertina (appena poco più spessa delle pagine che contiene) rischia di rovinarsi se il libro viene usato con un certo impegno.
Per quanto riguarda il codice scaricabile, esso è suddiviso in capitoli già all’atto dello scaricamento, quindi bisogna scaricarsi i file capitolo per capitolo (non c’è un unico file contenente il tutto), come mostra questa immagine.
Mettendo insieme tutti i file, si crea una cartellina di circa 11 MB.
Bisogna però constatare, una volta scaricati i capitoli che interessano, che il codice C# è ben scritto, ottimamente commentato e perfettamente indentato. Ottimo lavoro da questo punto di vista quindi.
Questa è la pagina del sito della Wiley dedicata al libro.
Da qui si può scaricare il capitolo 1 (“Getting to Know LINQ”) di 14 pagine, dalla struttura molto descrittiva e senza codice sorgente.
Nell’immagine qua sotto, tutti i dettagli del libro.
PRO
La dimensione contenuta, il linguaggio chiaro ed informale, la ricchezza di piccoli e semplici esempi, rendono questo libro un ottimo punto di ingresso nel mondo LINQ.
Molto valido il capitolo 3 contenente le nuove funzionalità di C# 3.0: può rappresentare un ottimo punto di partenza (o ripasso) per chi è interessato solo alle innovazioni nella versione 3.0 del linguaggio. Ottima l’impaginazione, l’indentazione del codice, sia nel testo che nei file scaricabili. Rilegatura comoda e flessibile.
CONTRO
In certi punti la prolissità dell’autore si fa un po’ troppo sentire, e una maggiore concisione sarebbe più apprezzata. Manca un cenno (o anche qualcosa di più) ad Entity Framework.
Voto complessivo: 8/10
Lettore: Principiante/Intermedio
Table of contents
Introduction
Part I: An Overview of LINQ.
Chapter 1: Getting to Know LINQ.
Chapter 2: Creating Simple LINQ Queries.
Chapter 3: Considering the .NET Language Extensions.
Chapter 4: Working with LINQ in Visual Basic .NET.
Chapter 5: Working with LINQ in Visual Studio 2005.
Part II: Using Standard LINQ to Technologies.
Chapter 6: LINQ to Object.
Chapter 7: LINQ to DataSet.
Chapter 8: LINQ to SQL Server.
Chapter 9: LINQ to XML.
Part III: Extending LINQ to New Horizons.
Chapter 10: Using LINQ with Office 2007.
Chapter 11: Advanced LINQ to SQL Server.
Chapter 12: LINQ to Active Directory.
Chapter 13: Other LINQ to Strategies.
Part IV: The Part of Tens.
Chapter 14: Ten Ways to Improve LINQ Development.
Chapter 15: Ten Ways to Reduce Application Support Costs.
Chapter 16: Ten LINQ Resources.