[Python] Dimmi tre libri informatici che non si può non aver letto

enrico franchi enrico.franchi a gmail.com
Mer 2 Dic 2015 14:34:45 CET


Interessante... la difficolta' e' capire cosa sia un "libro informatico".
Per dire, dei tre che menzioni due sono sostanzialmente libri in area
project management, uno e' un libro su best practice di coding (in salsa
java, ma relativamente generalizzabile).

Altre persone hanno inteso "informatico" in modo completamente diverso.

Per me? Allora, il problema piu' grosso e' se vogliamo un informatico punto
e basta, un ingegnere che lavora nell'industria, o chissa' cosa.

Io tendo a rispondere fra le prime due (quindi parlo di libri di interesse
per un ingegnere che fa l'ingegnere).

Per me i criteri di scelta sono:
1. ampia applicabilita': e.g., alcuni titoli menzionati sono eccezionali,
ma per dire... la maggior parte degli informatici potrebbe non avere mai
bisogno di leggere un libro sui compilatori... e perfino un libro sulle
reti -- come il Tanenbaum -- potrebbe essere un overkill). Come corollario,
non citero' libri specifici su un linguaggio o su una tecnologia: e' ok che
si parli di un linguaggio, ma l'idea e' che sia usato come strumento, non
come fine.
2. ampio spettro: voglio che il libro non copra una sola base... devo
sceglierne solo tre. Quindi per esempio un libro specifico sugli algoritmi,
per quanto utile, potrebbe bruciare uno dei tre preziosissimi slot senza
portare troppo valore aggiunto)
3. Non voglio vedere *nulla* sui design pattern che sono una delle piu'
grandi fregature che ci hanno propinato: invece di darci modelli con il
giusto livello di astrazione, ci danno la programmazione ad oggetti e poi
ci devono costruire sopra questo set di pattern che stanno solo dicendo:
quello che hai (OOP) non e' abbastanza espressiva, hai bisogno dei pattern
perche' ci sono schemi di problemi simili che possiamo astrarre. E allora
datemi un modello espressivo in primo luogo. E non e' nemmeno che la
programmazione ad oggetti non mi piace... semplicemente e' monca. Parliamo
di programmazione ad attori e restringiamo il campo di applicabilita' sul
componente invece che a livello di codice spiccio. Oppure prendiamo un
modello piu' semplice (la maggior parte dei pattern vanno a coppie: uno che
sfrutta composizione e uno che sfrutta ereditarieta'... a me indica
chiaramente un problema. e allora abbandoniamo il concetto di
ereditartieta' e un sacco di roba inutilmente complicata e fuorviante se ne
va...)



Quindi:

1. SICP: davvero. Se quando intervisto qualcuno conoscesse tutto e solo
quello che c'e' sul SICP, dal punto di vista tecnico lo prenderei al volo.
Se dovessi restringermi ad uno ed un solo libro, sarebbe questo. Ti insegna
a pensare funzionale *e* ad oggetti. Ti insegna a gestire lo stato.  Ti
fanno un po' di strutture dati (specialmente ti rende chiara la differenza
fra un tipo di dato astratto e un'implementazione). Ti fa vedere come si
scrive un'interprete (che e' un concetto molto generale), ti presenta il
modello di macchine a registri (che e' un modello utile per ragionare sul
codice), ti fa vedere come funziona un compilatore (appunto: un ingegnere
non deve per forza sapere scrivere un compilatore allo stato dell'arte --
dragon book --, ma deve avere idea di come funzioni). Ti spiega la
differenza fra eager e lazy evaluation, ti introduce alle magie della
metaprogrammazione e perfino della computazione non deterministica. E' di
fatto un concentrato di tutto quello che e' "CS fundamentals".

2. The Linux Programming Interface: vince per l'ampiezza dello spettro e di
applicabilita'. Al di la del nome, copre in modo eccellente POSIX e non
solo Linux. Certo... se sei MS sei un po' fuori, target. Ma per il resto...
Quel libro copre da solo sistemi operativi (praticamente tutto quello che
si vuole), un bel po' sulle architetture degli elaboratori *e* abbastanza
networking per il 90% delle esigenze. Incidentalmente, contiene anche best
practice preziosissime per C (e C non e' un linguaggio come tutti gli
altri: e' il linguaggio sul quale puoi costruire praticamente tutto il
resto.

3. Pragmatic Programmer: ti spiega come si "vive" nell'industria. Non mi
dilungo perche' vedo che e' ampiamente noto. Spiega un pochetto di come
gestirsi la carriera, un pochetto di agile, un pochetto di trucchi... un
sacco di roba preziosa. E' stato un libro che ho letto "tardi" (sebbene lo
avessi da tanto in libreria). Mi ha stupito perche' nel 1999 conteneva gia'
in nuce buona parte di quello che sarebbe successo nei 15 anni successivi.




2015-11-29 16:50 GMT+00:00 Marco Beri <marcoberi a gmail.com>:

> Mi hanno fatto questa bella domanda e io ho risposto così:
>
> 1) Peopleware
> 2) Clean Code: A Handbook of Agile Software Craftsmanship
> 3) The Mythical Man-Month
>
> E voi? Cosa rispondereste?
>
> Ciao.
> Marco.
>
> --
> http://beri.it/ - Un blog
> http://beri.it/i-miei-libri/ - Qualche libro
> http://beri.it/articoli/ - Qualche articolo
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20151202/6e4dd96e/attachment-0001.html>


Maggiori informazioni sulla lista Python