C# La Guida Completa

Uno degli autori di libri di informatica, e in particolare sulla programmazione, maggiormente conosciuti a livello mondiale, è senz'altro Herbert Schildt, la cui competenza spazia dal C, al C++, a Java, per arrivare fino al C#, cui è dedicato questo libro. Uno dei vantaggi di leggere questo autore è il suo continuo raffronto che fa tra i vari linguaggi, mettendone in luce (in maniera obiettiva, non parteggia né per l'uno né per l'altro) pregi e difetti, e soprattutto le differenze di comportamento nelle varie situazioni.
Ovviamente con la dovuta discrezione; infatti pur non essendo io un appassionato di Java (men che meno di C), mi hanno incuriosito queste differenze tra i vari linguaggi riportate dall'autore, fosse solo per cultura personale, e che comunque non appesantiscono la lettura e non rallentano l'apprendimento. Lettura che inoltre procede spedita. Schildt ha il dono della sintesi, riesce in poche parole a rendere chiaro un concetto, e solo da una persona esperta come lui si possono ritrovare non solo le spiegazioni "oggettive", ma anche il perché si fa così ed è meglio farlo così. Questa è la differenza (e il punto di forza) di questo libro, i giudizi e i commenti dell'autore, altrimenti si potrebbe leggere tranquillamente anche l'MSDN fornito dalla Microsoft. La suddivisione dei capitolo rispecchia la consueta traccia; dalle basi del linguaggio e dei suoi costrutti, fino agli argomenti più avanzati (il capitolo 18, sul codice non sicuro e i puntatori, non è facile trovarlo in altri testi sul medesimo argomento). La Prima Parte, che copre già da sola oltre 500 delle 840 pagine complessive, è quella che fornisce una più che solida base ed è (direi) sufficiente per la stragrande maggioranza degli usi e delle applicazioni che si andranno a sviluppare. La Seconda e la Terza, che trattano dalla programmazione multithread alla creazione di componenti, la si può leggere/studiare al bisogno, nel momento in cui servisse, senza che ciò influisca sull'apprendimento del linguaggio. Malgrado questo testo della McGraw-Hill risalga ormai al 2002, è tutt'ora attualissimo, grazie anche al fatto che è svincolato da qualsiasi ambiente di sviluppo. Schildt infatti non accenna (se non di sfuggita) a Visual Studio .NET, e tutti gli esempi che riporta sono del tipo Console Application (e qui entrano in gioco le preferenze di chi vorrebbe magari vedere qualche applicazione Windows/Web). Quindi non si troveranno capitoli su come si creano interfacce Win32, o applicazioni web (ASP .NET non è trattato), come anche manca completamente la gestione dei dati (ADO .NET). Il "core business" (per dirla alla moda) del testo è il linguaggio, e l'autore si dedica anima e corpo a quello. Di conseguenza non ci sono nemmeno immagini (in oltre 800 pagine ve ne sono solo un paio al termine del testo). Ricordando come vidi alcuni testi stracolmi di immagini, giusto per riempire spazio e fare "volume", questo testo rappresenta un'eccezione felice, e ogni pagina ha valore e fornisce informazioni in quantità. Non sono presenti esercizi da svolgere (di esempi comunque non se ne sente certo la mancanza), come anche gli inutili riepiloghi di inizio capitolo (le solite frasi del tipo "In questo capitolo imparerete...") e i riassunti finali (che spesso si saltano a piè pari, data la loro inutilità). Se devo proprio muovere un piccolo appunto, lo rivolgo alla scelta del carattere per gli esempi di codice: estremamente sottile e leggero, quasi invisibile, e sfido chiunque a riuscire a notarvi la differenza tra un punto e virgola (;) e i due punti (:).
Concludono il libro due brevissime appendici sull'uso dei commenti XML nel codice, e di come C# possa essere applicato alla robotica.
Per concludere direi che è un ottimo libro, con una obsolescenza minima, e di estrema chiarezza, pur sapendo che tratta solo e soltanto del linguaggio in sé, e diversi altri argomenti andranno approfonditi su altre fonti.
Alla pagina www.informatica.mcgraw-hill.it/guidacompleta_c/ è possibile scaricare il listato (80 kB) degli esempi di codice presentati nel libro (non è purtroppo presente la scheda del libro).

PRO
La competenza e la facilità di esposizione di Schildt, il quale riesce a rendere comprensibili anche gli argomenti più ostici, sono la vera forza di questo testo, unita alla completezza della trattazione. Ogni singolo aspetto di C#, anche quelli che spesso non si trovano su analoghi testi, viene infatti affrontata ed affiancata da numerosi esempi di codice autoesplicativi e commentati. Lunga la vita utile di questo libro, anche perché non essendo legato ad un ambiente di sviluppo particolare, si svincola dal progredire delle versioni che questo potrebbe avere.

CONTRO
L'unica segnalazione che posso riportare su di un libro del genere è legata all'impaginazione del codice presentato negli esempi. Come già detto è eccessivamente sottile, quasi indistinguibile. Inoltre anche la scelta della carta lucida (di qualità e durata, sia ben inteso), può portare a fastidiose riflessioni durante la lettura.

Voto complessivo: 8,5/10
Lettore: Ogni livello

Sommario

Indice
Introduzione
Parte prima: Il linguaggio C#
1) La creazione di C#
2) Introduzione a C#
3) Tipi di dati, letterali e variabili
4) Operatori
5) Istruzioni di controllo del programma
6) Introduzione a classi, oggetti e metodi
7) Array e stringhe
8) Un'analisi approfondita di metodi e classi
9) Overload degli operatori
10) Indicizzatori e proprietà
11) Ereditarietà
12) Interfacce, strutture ed enumerazioni
13) Gestione delle eccezioni
14) Uso dell'I/O
15) Delegati ed eventi
16) Namespace, preprocessore e assembly
17) ID di tipo runtime, riflessione e attributi
18) Codice non sicuro, puntatori e argomenti vari
Parte seconda: Esplorazione della libreria di C#
19) Esplorazione del namespace System
20) Stringhe e formattazione
21) Programmazione multithread
22) Uso delle collezioni
23) Le reti e Internet
Parte terza: Applicazioni di C#
24) Creazione di componenti
25) Creazione di applicazioni Windows basate su form
26) Un parser di espressioni ricorsivo discendente
Parte quarta: Appendici
Appendice A) Breve guida ai commenti XML
Appendice B) C# e la robotica
Indice analitico