![]() |
Bibliografia estesa |
| Copyright © 1999 dr. Cristiano Sadun - tutti i diritti riservati | |
Tuttavia, esistono tutta una serie di libri e articoli ben fatti che, pur non essendo "fondamentali", sono - a mia personalissima opinione - decisamente buoni e degni di nota.
Valgono le stesse avvertenze della bibliografia essenziale: la selezione è solo la mia personale scelta, e in questo caso ben piu' difficile, dato che, mentre sui "pilastri" c'e' almeno una certa condivisione (sono pilastri apposta ;-), di libri "molto buoni" in giro ce ne sono molti, ed è impossibile leggerli tutti.
Come al solito, ho diviso per aree tematiche e fornito un commento - dato che a questo secondo me serve una bibliografia (a far capire se val la pena di perdere tempo a leggere, intendo :).
Buona lettura!
Al solito, dato che ho appena costruito questa sezione (Settembre 1999), ho avuto il tempo di recuperare e commentare solo poche entry. Altre verranno col tempo. Ringrazio tutti quanti mi hanno segnalato titoli e articoli e quanti lo faranno - in ogni caso ascolterò volentieri!
Linguaggi di programmazione
Diciamocelo: per buona parte della sua storia (almeno commerciale), l'informatica è stata principalmente considerata equivalente a "programmazione". Tuttora, spiegare a chi non è del campo che le scienze dell'informazione non hanno necessariamente a che fare con computer e programmi è difficile, e dopo un po', di fronte a espressioni vagamente allibite, di solito ci si rinuncia.
In effetti, i linguaggi di programmazione sono dopotutto essenziali per realizzare qualcosa di concreto; e, se è vero che ogni linguaggio-di-programmazione ha una potenza espressiva uguale a quella di una macchina di Turing, noi non usiamo davvero le macchine di Turing, no?
Inoltre, come ben sappiamo, la complessità nell'informatica ha un ruolo altrettanto importante che la computabilità e - benche' la nozione di complessità per i linguaggi di programmazione è decisamente meno semplice da modellare che quella per algoritmi - l'affermazione vale anche per essi. Quindi comprendere la classificazione (linguaggi impertativi, OO, funzionali, etc), il potere descrittivo e le capacita' di espressione dei vari linguaggi - oltre ovviamente anche alla qualita' degli strumenti tecnologici e pratici per lavorarci - è essenziale per scegliere bene quale usare di volta in volta. Come sempre, aspetti teorici e pratici vanno a braccetto.
Uno dei libri piu' completi, esplora con chiarezza e rigore l'evoluzione di diversi paradigmi di programmazione esistenti e molti dei linguaggi piu' noti che li implementano - comparandone le possibilita' ed arrivando fino ad esempi in codice. Ci si trovano molti dei concetti "trasversali" che devono stare nella borsa degli attrezzi di qualunque programmatore: dot notation, distinzione tra tipi e valori, puntatori, riferimenti, strutture, eccetera, ma tutto con un'attenzione per l'idea, la potenzialità espressiva e il contributo che essa dà alla qualità del risultato, piuttosto che per il tecnicismo fine a se stesso.
Un'introduzione efficace e rigorosa alla semantica denotazionale, che è uno strumento fondamentale per comprendere cosa significhi specificare esattamente un programma. Non entra nei dettagli della teoria dei dominii - ma riesce a essere chiarissimo anche senza.
Iniziare a usare e ottenere semplici risultati con SQL è facile, ed è altrettanto facile fermarsi lì - e trovarsi a piedi quando si affrontano problemi di dimensioni maggiori, dove bisogna aver perfettamente chiari il modello concettuale e operazionale del linguaggio, e magari conoscere anche qualche trucco del mestiere. Ora, se Joe Celko non avesse scritto questo volume, bisognerebbe inventarlo: basandosi solo su una conoscenza di base di SQL, in modo semplice, intelligente e perfino divertente, introduce e chiarisce la teoria e la pratica del linguaggio, permettendo a tutti di fare il salto di qualità tra "praticone" e quello di esperto, che - prima - era possibile fare solo dopo aver seguito e macinato un corso di algebra relazionale e provato ad applicarla in molte esperienze sul campo.
Celko ha la rara, rarissima capacità di esprimere la complessità della teoria facendola apparire semplice, e fondendola - con un sorriso - nella pratica. Imperdibile.
Software Engineering
Vi rimando bibliografia essenziale per un'introduzione al campo. I libri che trovate qui non sono certo gli unici, ma sono quelli che - a suo tempo - mi sono parsi più originali, completi o - in una parola - utili.
Un testo che - da solo - vi può portare in breve tempo a capire cosa sia la software engineering e cosa significhi usarla. Anche se è concentrato su UML come linguaggio di specifica, il libro intesse un'ottimo mix tra project management, software design e software engineering propriamente detta... il che è esattamente quello che succede (o dovrebbe succedere) per progetti software reali. Cantor ha esperienza - di quella "buona", non quella di vent'anni di MVS - e si vede: dalle stesse parole dell'autore "the means to remove stress and humanize project management are within reach" ("i mezzi per eliminare lo stress e umanizzare il project management sono ormai a portata di mano") e questo libro vi da' l'idea del come. Il solo capitolo sulle review dei vari modelli di sviluppo vale l'acquisto.
Se avete avuto un po' di esperienza nel campo dello sviluppo/gestione di progetti software, vi sarà certamente capitato qualche volta di entrare in un progetto "fallimentare", di quelli che ingoiano risorse per anni e finiscono in un nulla. L'esperienza è triste, ma istruttiva, dato che vi allena a riconoscere i segnali di "disastro incombente" che troppo spesso vengono ingorati dal management, per il semplice fatto che non sono compresi. L'idea di questo libro e' di fornire la lezione senza dover passare dall'esperienza vera e propria: vengono evidenziati pattern di errori o processi che conducono al disastro nello sviluppo o management di sistemi software.. ed, in quanto negativi, vengono chiamati Antipattern. Chi l'esperienza di project failure non l'ha mai fatta, trova idee e spunti interessantissimi; chi, tristemente, l'ha fatta, riconoscerà molte delle valutazioni fatte a suo tempo. Il tutto, in una prosa sdrammatizzante, disincantata e assolutamente piacevole da leggere.
Sistemi operativi
La storia dei sistemi operativi e' un buon specchio per la storia dell'informatica in generale e del suo impatto commerciale e pubblico... il numero e il tipo di funzioni considerate sufficientemente "generali" da essere incapsulate come parte dei vari sistemi operativi, in un dato momento storico, da' una buona idea di cosa in quel momento fosse ritenuto il minimo indispensabile per un calcolatore degno di tal nome.
Uno dei libri che personalmente ritengo più chiari e oggettivi nella descrizione delle componenti fondamentali dei sistemi operativi, almeno da un punto di vista "tradizionale" (non GUI e process-oriented, non threaded), che fornisce una solida base teorica e pratica, oltre ad una buona prospettiva storica.
Una conseguenza diretta di ciò è che, oggi, i s/o abbondano di servizi un tempo lasciati da implementare alle applicazioni, dalle finestre grafiche ai servizi di comunicazione, e diventa difficile definire una base teorica e pratica per individuare un "buon" sistema (o semplicemente le cose da guardare quando valutarne, o usarne, uno).
Intelligenza Artificiale
L'intelligenza artificiale è una delle aree più interessanti dell'informatica, perche' nei circa quarant'anni della sue esistenza è venuta assumendo un ambito sempre più vasto e completo. Avere buona competenza in AI significa dover avere compentenza sia in informatica e matematica teorica che applicata che pratica, e buona in tutti i campi: si passa dalla logica matematica alle implementazioni in C++ senza un battito di ciglia, attraversando campi disparati come psicologia e bioneurologia.. personalmente, ricordo perfettamente di aver trovato la prima menzione di "tavola hash" su un libro di AI (Elaine Rich, Intelligenza Artificiale) piuttosto che in uno sulle strutture dati. Inoltre il campo è, io credo, affascinante di per sè.
Non è un libro tecnico, ma chiunque si occupi di AI (o d'informatica in generale) non "ha vissuto" se non lo conosce a menadito. Riesce ad affrontare tutti gli aspetti dell'AI classica (non soft) in modo divertente e - una volta tanto - rigoroso. Al contrario di altri libri di fortune commerciali analoghe (come quelli di Penrose), l'autore sa di cosa sta parlando, ed ha quella rarissima capacità di rendere gli argomenti accessibili senza banalizzarli, restando divertente. Non è comunque un libro leggero. Contiene, tra l'altro, la versione più comprensibile e chiara della dimostrazione del teorema di incompletezza che mi sia mai capitata sottomano.
Una raccolta di brevi racconti e saggi divulgativi, estremamente ben scelti e commentati. Il punto di vista e' - sia pur con un certo equilibrio - quello dell'IA forte: il che non sorprende, visti gli autori. Tra le altre cose, contiene il celeberrimo saggio di Richard Dawkins sui "geni egoisti" e i memi - forse uno dei piu' lucidi ed efficaci mai scritti sull'argomento. Più accessibile, visto il taglio, di Godel, Escher, Bach, ne preserva il rigore concettuale e la capacità divulgativa. Insomma, se volete veramente ragionare su mente, coscienza, realtà e intelligenza, e siete disposti a lasciar cadere pregiudizi e preconcetti quando vi viene dimostrato rigorosamente che sono infondati (il che, spesso, e' la parte più difficile), tenetevi forte, e leggete questo volume.
(trad it. Godel Escher Bach: un'eterna ghirlanda brillante, Adelphi)
(trad it. L'Io della Mente, Adelphi)
È esplicitamente vietata la riproduzione con ogni mezzo, il mirroring e l'uso per scopi commerciali di questa pubblicazione completa o in parte, senza l'esplicito consenso scritto dell'autore.
La stampa e/o riproduzione e/o distribuzione su carta di tutto o parte di questo documento sono permesse a patto che tali copie non siano prodotte a scopo di profitto o ad uso commerciale, e che questa nota
siano interamente stampate e/o riprodotte e/o distribuite in modo chiaro e visibile insieme al testo.
© Copyright 1999 dr. Cristiano Sadun - tutti i diritti riservati