Dr. Carlo Pescio
Recensione: C++ Components and Algorithms


Scheda Libro
Autore: Scott Robert Ladd Titolo: C++ Components and Algorithms
Editore: M&T Books ISBN: 1-55851-227-6
Lingua: Inglese Anno: 1992 Pagine: 780 circa Allegati: disco con i sorgenti proposti nel testo

Commenti
Un libro piuttosto ambizioso nelle intenzioni che tradisce un pò nei contenuti: l’idea dell’autore era di presentare non solo gli algoritmi e le strutture dati fondamentali, ma anche di proporne una implementazione riusabile in C++. Entrambi gli scopi vengono raggiunti, ma solo parzialmente: la descrizione degli algoritmi tende a considerare più gli aspetti di codifica che l’algoritmo stesso, e la riusabilità è talvolta frenata da scelte implementative un pò troppo semplificate. Il risultato è più che altro un libro adatto al principiante, sia sul versante degli algoritmi che del C++, piuttosto che un testo per chi sia già esperto in uno dei due campi.

Pro
Il libro fornisce implementazioni in C++ degli algoritmi presentati; ciò può essere positivo per chi sia alla ricerca di codice pronto da usare, più che di una approfondita spiegazione dei principi che regolano l’algoritmo. La lettura è molto semplice e scorrevole, indubbiamente affrontabile da chiunque possieda dei semplici rudimenti di programmazione in C++; più volte viene enfatizzata l’importanza della progettazione di componenti riutilizzabili, ed il testo può quindi essere letto anche come introduzione alla creazione di librerie in C++.
Alcuni degli algoritmi, come la ricerca Boyer-Moore su stringhe, sono di indubbia utilità e vengono invece frequentemente ignorati su testi anche più blasonati; altri argomenti, come la persistenza degli oggetti (per quanto affrontata in modo un pò semplicistico) sono effettivamente language-dependent, e trovano quindi in questo libro una naturale collocazione.

Contro
La trattazione è quanto di più informale si possa ottenere, senza alcuna considerazione per aspetti importanti come la complessità spaziale e temporale. Anche volendo leggere il testo come "ricettario" di codice C++, ci si trova di fronte a semplificazioni eccessive, come una classe stringa implementata in modo banale, quando sarebbe una buona occasione per presentare al lettore il reference counting e le implementazioni con copy-on-write.
Oltre il 60% del testo è costituito da listati, che potrebbero essere ridotti a semplice pseudocodice accompagnato dalla dichiarazione delle classi, tenuto conto che il codice è comunque fornito su disco. Il libro si concentra troppo sulla codifica rispetto all’analisi degli algoritmi, e può con ciò fuorviare il lettore meno preparato. Il costo è decisamente alto rispetto ai contenuti, considerando che il numero di pagine è decisamente gonfiato dagli eccessivi listati.