Bit a bit, si cresce sempre


Blog di un ingeformatico









Statistiche
  • Views Home Page: 288.525
  • Views Posts: 980.255
  • Views Gallerie: 326.622
  • n° Posts: 480
  • n° Commenti: 284
Ora e Data
Archivio Posts
Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

Recensione libro C# in Depth (Manning)

  

Era da un po’ di tempo che questi particolari libri con le immagini di tipici personaggi medioevali mi incuriosivano. Per tutta una serie di circostanze non ero riuscito ad entrare in possesso di nemmeno uno di questi libri. Finalmente lo scorso agosto sono riuscito ad avere una copia di questo titolo dedicato a C# e composto da poco più di 400 pagine, nemmeno eccessivo da leggere quindi.

Appena ho potuto sfogliarlo mi sono subito reso conto della sua originalità. È ormai da un po’ di anni che leggo o semplicemente consulto libri su C#, e devo ammettere che questo è diverso da tutti gli altri. Non è un manuale su cui imparare le basi del linguaggio; non è un tutorial ricco di esempi per impratichirsi con la sintassi e i costrutti, e non è nemmeno un testo dedicato ad una versione di C# in particolare (infatti nel titolo non riporta la versione). La sua originalità sta nel fatto che nella prima metà cerca di rendere più chiari gli aspetti spesso più ostici delle versioni 1 e 2 di C#, mostrando come lo stesso codice che esegue certe operazioni, possa evolvere (e rendersi più sintetico e leggibile) passando da una versione all’altra. E questo lo fa con un approccio molto discorsivo, spiegando ogni dettaglio e analizzando ogni possibile sfumatura, magari riducendo la quantità di codice, ma dando grande spazio alle parole e ai discorsi.

Detto questo bisogna subito fare un precisazione: il lettore di riferimento conosce già C# (fino alla versione 2), e soprattutto conosce bene l’inglese. È sorprendente infatti trovare in un libro che tratta un linguaggio di programmazione pagine e pagine senza una riga di codice, ma scritte fitte fitte da testo pregno di concetti. E questo è ciò che differenzia questo testo da tutti gli altri.

 

La prima parte, consistente nei primi due capitoli, traccia la un po’ la storia di C# e del .NET Framework, introducendo già qualche corposo dettaglio e misconosciuta sfumatura del linguaggio (delegati, value/reference type, boxing/unboxing, ecc.), e soprattutto sfatando alcuni miti e false credenze su queste particolarità (e qua si nota da subito l’originalità del testo).

Come esempio viene portato avanti il classico “Prodotto/Nome/Prezzo di vendita”, definito dall’autore come evoluzione “e-commerce” del classico “Hello World” (come dargli torto?).

Il codice di questi capitoli, a parte questo esempio, è ben poco, e ci sono pagine intere di discorsi.

La grande differenza di questo libro rispetto a tutti gli altri libri su C# in commercio è proprio legata a tutta questa parte scritta. Non è infatti una mera e fredda spiegazione di come funziona il linguaggio (del tipo “si fa così e basta”), ma è tutto un susseguirsi di ragionamenti e considerazioni assolutamente imparziali, un po’ come farebbero due programmatori esperti che discutono e commentano i pregi e i contro di questo linguaggio.

 

La seconda parte, costituita da 5 capitoli, approfondisce alcuni argomenti della seconda versione di C# che possono (e spesso lo sono) risultare più ostici da studiare ed assimilare, come ad esempio i generici, i delegati (con i metodi anonimi), i nullable type e gli iteratori (ma non solo). Anche qua in questa parte il codice riportato è limitato allo stretto essenziale, e la parte scritta è decisamente preponderante.

 

La terza parte, (capitoli dal 7 al 13) che come dimensione copre la metà del testo, è tutta dedicata alle novità dell’ultima versione di C#, la 3.0 (o semplicemente “3”, come la definisce l’autore). Si parte dalle Lambda Expressions, per introdurre poi gli Extension Methods e quindi LINQ to SQL e LINQ to Object.

Personalmente questa parte non l’ho letta approfonditamente, ma solo sfogliata, riservandomi una lettura più attenta quando avrò necessità di imparare ed approfondire questi argomenti.

Mi sono però letto il breve ultimo capitolo, dal titolo eloquente “Elegant Code in the New Era”, in cui l’autore traccia la situazione attuale dello sviluppo .NET e pronostica le prossime evoluzioni. Tra l’altro, e qua mi trova perfettamente d’accordo, “prega” la Microsoft di non rilasciare con troppa frequenza nuove versioni dei linguaggi o delle piattaforme, dando tempo agli sviluppatori di assimilare per bene i concetti prima di iniziare a dedicarsi a cose nuove. Sante parole!

 

La lunghezza dei capitoli varia dalle 20 alle 49 pagine, tranne l’ultimo (il tredicesimo), di riepilogo, di sole 7 pagine. Non sono presenti esercizi o domande di riepilogo finali (solo un breve paragrafo di sommario). È presente però un’utile appendice di una decina di pagine sugli operatori LINQ. Le immagini sono rarissime, e non si fa uso di Visual Studio. La trattazione del linguaggio è, come dire, da puristi. Tant’è che nel codice scaricabile l’autore mette a disposizione un piccolo programmino, “Snippy”, che consente di eseguire brevi pezzi di codice (dall’inglese “snippet”) osservando subito il risultato senza la procedura di dover prima crearsi un progetto in Visual Studio e aprire tale impegnativo ambiente di sviluppo.

Non si parla neanche di tutte le varie tecnologie dove C# può essere utilizzato: ASP.NET, WinForm, ADO.NET e via dicendo. Lo scopo del libro è focalizzarsi sul linguaggio in quanto tale, senza distrazioni.

 

A questa pagina è presente la scheda dettaglia del libro, con la possibilità di scaricare parecchia roba. Oltre ai consueti “Sommario”, “Indice completo”, “Prefazione”, “Introduzione”, “Errate” ecc. sono presenti i capitoli 6 e 8 in versione completa. Davvero niente male come offerta, e posiziona la Manning al vertice tra le case editrici come ampiezza del materiale offerto gratuitamente per ogni libro.

Il file zippato del codice sorgente – circa 1.5 MB – un volta scompresso crea una cartella contenente altre sottocartelle, relative sia alle soluzioni per ogni capitolo (sia nella versione per Visual Studio 2005 che 2008), sia come snippet singoli, ai due database utilizzati, sia ai pdf delle immagini presenti nel libro.

Ma soprattutto merita un’occhiata il sito dedicato al libro, ovvero www.csharpindepth.com.

È pieno zeppo di materiale. Oltre a tutto quello recuperabile dal sito della casa editrice, sono presenti (giusto per nominare qualcosa) le osservazione che il revisore tecnico (ovvero Eric Lippert) poneva all’autore capitolo dopo capitolo (praticamente sono i loro scambi di mail) man mano che procedeva con la revisione; tutta una serie di articoli e di aggiunte che completano ed approfondiscono quanto scritto nel testo; osservazione dell’autore su C# e .NET in generale e diverse altre risorse. Meglio dargli spesso un’occhiata (per chi fosse interessato), dato che ho notato che cambia e si arricchisce con una certa frequenza.

 

È presente poi all’interno del testo una cedola con dei numeri casuali (tipo battaglia navale). Collegandosi al sito della Manning e inserendo uno di questi codici, si ha la possibilità di scaricare la versione integrale in Pdf.

 

Tra l’altro, la prima volta che ho visitato questo sito, avevo notato che tutto il contenuto finiva nel lato destro del mio browser (IE6), obbligandomi a scrollare orizzontalmente per leggere le pagine (pratica indubbiamente non molto comoda).

Mi ero registrato sul sito della Manning e nel forum dedicato al libro avevo postato un thread per chiedere lumi su questo strano comportamento. Dopo nemmeno qualche minuto è proprio l’autore, Jon Skeet, che mi risponde chiedendomi di mandargli una mail con gli screenshot presi dal mio pc. Subito dopo mi risponde spiegandomi che non si capacita di questo bizzarro comportamento. Mi consiglia quindi di provare con un altro browser. Provo quindi con Firefox, e inspiegabilmente questa volta appare correttamente (è la schermata di sopra). Scusandosi per questo disguido, mi scrive poi che avrebbe approfondito la faccenda, raccomandandomi di segnalargli eventuali altri problemi su cui fossi incorso.

Quanti autori italiani avrebbero dato tutta questa disponibilità?

Plauso quindi al sig. Skeet.  

 

 

PRO

Per chi, conoscendo già bene C#, vuole approfondire per bene le caratteristiche e gli aspetti meno comuni delle versioni 1 e 2, e necessita di una solida introduzione a C# 3 (LINQ in primis) non c’è libro migliore. L’autore, espertissimo nella materia, mette a disposizione del lettore tutte le sue conoscenze, e fa luce su sfumature del linguaggio che in genere non vengono trattate adeguatamente in altri testi.

Notevole la quantità di materiale fornito sul sito della casa editrice, come anche la disponibilità dell’autore a rispondere nei forum e nei newsgroup. Codice perfettamente indentato ed ottima, in generale, la cura realizzativa.

 

 

CONTRO

Chi si aspetta notevoli quantità di codice di esempio, rimarrà sicuramente deluso. Gli esempi, pur molto significativi, sono presenti con il contagocce. Come anche chi necessita di numerose schermate di Visual Studio per poter proseguire nella lettura; non ce ne sono. Per leggere con una scioltezza il testo, ed evitare di ricorrere continuamente al dizionario (la prosa dell’autore è abbastanza ricercata), serve una conoscenza dell’inglese superiore alla media. Avrei evitato di tediare il lettore con tutta una serie di “introduzione + prefazione + prefazione del revisore + ringraziamenti + commenti + ecc. ecc.” che necessitano di almeno un paio di ore di lettura prima di arrivare al capitolo 1. Decisamente troppo rigida la rilegatura.

 

Voto complessivo: 9/10

 

Lettore: Avanzato

 

 

Summary

foreword xvii
preface xix
acknowledgments xxi
about this book xxiii
about the cover illustration xxviii
comments from the tech review xxix

Part 1 Preparing for the journey

1 The changing face of C# development

1.1 Evolution in action: examples of code change

1.2 A brief history of C# (and related technologies)

1.3 The .NET platform

1.4 Fully functional code in snippet form

1.5 Summary

2 Core foundations: building on C# 1

2.1 Delegates

2.2 Type system characteristics

2.3 Value types and reference types

2.4 C# 2 and 3: new features on a solid base

2.5 Summary

Part 2 C# 2: solving the issues of C# 1

3 Parameterized typing with generics

3.1 Why generics are necessary

3.2 Simple generics for everyday use

3.3 Beyond the basics

3.4 Advanced generics

3.5 Generic collection classes in .NET 2.0

3.6 Limitations of generics in C# and other languages

3.7 Summary

4 Saying nothing with nullable types

4.1 What do you do when you just don’t have a value?

4.2 System.Nullable and System.Nullable

4.3 C# 2’s syntactic sugar for nullable types

4.4 Novel uses of nullable types

5 Fast-tracked delegates

5.1 Saying goodbye to awkward delegate syntax

5.2 Method group conversions

5.3 Covariance and contravariance

5/4 Inline delegate actions with anonymous methods

5.5 Capturing variables in anonymous methods

5.6 Summary

6 Implementing iterators the easy way

6.1 C# 1: the pain of handwritten iterators

6.2 C# 2: simple iterators with yield statements

6.3 Real-life example: iterating over ranges

6.4 Pseudo-synchronous code with the Concurrency and Coordination Runtime

6.5 Summary

7 Concluding C# 2: the final features

7.1 Partial types

7.2 Static classes

7.3 Separate getter/setter property access

7.4 Namespace aliases

7.5 Pragma directives

7.6 Fixed-size buffers in unsafe code

7.7 Exposing internal members to selected assemblies

7.8 Summary

Part 3 C# 3—revolutionizing how we code

8 Cutting fluff with a smart compiler

8.1 Automatically implemented properties

8.2 Implicit typing of local variables

8.3 Simplified initialization

8.4 Implicitly typed arrays

8.5 Anonymous types

8.6 Summary

9 Lambda expressions and expression trees

9/1 Lambda expressions as delegates

9.2 Simple examples using List and events

9.3 Expression trees

9.4 Changes to type inference and overload resolution

9.5 Summary

10 Extension methods

10.1 Life before extension methods

10.2 Extension method syntax

10.3 Extension methods in .NET 3.5

10.4 Usage ideas and guidelines

10.5 Summary

11 Query expressions and LINQ to Objects

11.1 Introducing LINQ

11/2 Simple beginnings: selecting elements

11.3 Filtering and ordering a sequence

11.4 Let clauses and transparent identifiers

11.5 Joins

11.6 Groupings and continuations

11.7 Summary

12 LINQ beyond collections

12.1 LINQ to SQL

12.2 Translations using IQueryable and IQueryProvider

12.3 LINQ to DataSet

12.4 LINQ to XML

12.5 LINQ beyond .NET 3.5

12.6 Summary

13 Elegant code in the new era

13.1 The changing nature of language preferences

13.2 Delegation as the new inheritance

13.3 Readability of results over implementation

13.4 Life in a parallel universe

13.5 Farewell
 
appendix: LINQ standard query operators
index

 

Titolo: C# In Depth
Autore: Jon Skeet
Editore: Manning
ISBN: 1933988363
Pagine: 424
Prezzo: 18.99 £ (su Amazon, sconto 40%)
Data di uscita: 21/04/2008

Categoria: Books
mercoledì, 01 ott 2008 Ore. 08.35

Messaggi collegati


Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003