Stateam odata sa ma intreb care ar fi cartile pe care as vrea sa le citesc (optimist: sa le si inteleg). Constat din blogul lui DM ca exista si alte carti decat cele de informatica. Nu cred, asta e erezie pura… o fi din cauza ca la noi nu exista amazon
. Sau din cauza ca nu am mai dat demult pe la o biblioteca, alta decat cea a Universitatii. <gluma>Da, sigur numai biblioteca Universitatii e de vina</gluma>. Ma simt iluminat, acum, ca am stabilit asta.
Asa ca m-am gandit sa fac o lista de carti pe care mi-as dori sa le citesc o data. Pe multe le-am citit partial, altora – doar cuprinsul. Sunt carti promitatoare, cu potential, carti pe care daca cineva le citeste, are sanse sa isi schimbe un pic “cablarea” ideilor. Din motive de finitudine a internetului, o sa scriu doar “top 5″. Sa incepem:
1. Code complete. Meseriasa carte. Una din putinele pe care le am si hard-copy. Am parcurs de acolo partea de SQL Injection. Daramator modul in care Steve McConnell explica ce si cum. Iti spune despre cum sa scrii if-uri, recursie, cod autodocumentat, refactoring… o gramada de lucruri utile.
Cartea este o lectura obligatorie pentru cei care programeaza la Microsoft. Vazusem prima editie cand eram student, costa o caruta de bani (orice depasea costul unui bilet de troleu intra, de fapt, in categoria asta; acum s-au schimbat troleele cu autobuze, e mai bine). Atunci aveam timp sa o citesc, acum, ca o am la 2 metri si o usa distanta de mine, nu. Ciudat. S-ar putea sa para plictisitoare pentru un cititor grabit pentru ca vorbeste despre cum se scriu (si) comentariile. Dar am auzit de interviuri in care erai pus sa implementezi o cerinta simpla (sa verifici daca 3 numere pot fi laturile unui triunghi dreptunghic; Pitagora) si se urmarea cum scrii comentariile si cum faci partea de unit testing. Dur, daca te rejecteaza unul din cauza de comentarii. Comentarii din cod, desigur.
2. Information Theory, Inference, and Learning Algorithms, autor David J.C. MacKay. Se poate downloada de pe site-ul propriu. Omul face un balet absolut impresionant plecand de la probabilitiati si teoria informatiei (cu o prezentare pe care nu am mai regasit-o pe altundeva, deci autorul este suspect de originalitate) pana la teme dureroase precum detectarea parametrilor celor mai potriviti pentru modele si clustering (socotita de multi forma cea mai pura de Data Mining), retele neurale, briciul lui Occam (nu e competitor Gilette, ci un principiu enuntat de un calugar). Doar un titlu de sectiune, pentru curiozitate: “Why have Sex? Information Acquisition and Evolution”
. Daca era la noi, CNA l-ar fi interzis. In fine, o carte buna si scrisa la un nivel ce arata respect pentru cititor. Matematica invatata in facultate mi-a ajuns cam pentru primele 10 pagini. Apoi a inceput realitatea. A nu se citi cand ai febra.
3. Pattern Classification (Duda, Hart, Stork) – http://rii.ricoh.com/~stork/DHS.html. Groasa si cere resurse pentru inteleger. Am citit fragmente din ea. Motivatia si ordinea de expunere sunt coerente. Te invata cum sa faci recunoastere de pattern-uri, clasificare – totul pornind de la cat de multa informatie ai despre datele care iti vin. Frumos construita, i se poate urmari firul. Cartea este lectura obligatorie pentru cei care vor recunoastere de forme – si cel putin in Brasov parca a dat strechea in cateva echipe: fac recunosatere de forme la greu. O fi aplicare directa a unor cerinte de aplicatii tip Big Brother? brr…. In fine, arata de ce e bine sa stii ceva mate din facultate. Chiar sa o intelegi, nu doar sa stii formulele. Formulele le gasesti. Mai greu cu perceperea lor corecta.
4. Data Mining with Microsoft SQL Server 2008. Recent aparuta. Am vazut cam ce poate sa faca SQL 2008 pentru proiecte de Knowledge Discovery. Cu toate ca unele abordari par facute in graba (backpropagation pentru retele neurale? aloooo, muzeele, va lipseste ceva pe inventar?), merita o incercare. Plus ca din cate spune Bogdan Crivat, daca vrei, poti implementa proprii tai algoritmi. Cartea pare atat de buna, incat l-am rugat pe amicul Alex Paler sa o cumpere din Germania. Deh, Amazonul nu curge si prin Romania.
5. Writing secure code. Face pereche buna cu prima carte. Stiati ca dublarea apostroafelor din cadrul secventelor SQL nu duce la eliminarea pericolului? eu nu… interesant. Pe unde am mai fost, asta era strategia cea mai buna (din cauza ca era si singura implementata) pentru evitarea prostioarelor ce se pot intampla pe serverul de baze de date. Exact, ups. Mai sunt si altele, dar blogul degenereaza in horror stories daca continui pe aceasta ultima carte.
Sunt curios care e lista voastra.. nu neaparat top 5, merge si top 1 – cea mai arzatoare…
Sporuri,
Lucian
Pe niciuna din cartile de mai jos nu am citit-o complet sau am uitat ce am citit din ea. Cred ca imi doresc mult de tot sa le citesc integral sau recitesc.
Pana una alta cartile care ma enerveaza ca nu le-am citit deloc sunt Discrete Mathematics de Knuth si Arta programarii calculatoarelor, tot de Knuth. Urmatoarele carti insa sunt undeva imediat dupa cele de Knuth.
Una din primele carti care le-am citit si m-a impresionat a fost Algoritmii lui Cormen. Foarte interesanta cartea, frumos expus, interesant prezentat. Tot ceea ce e de baza in algoritmica. Si acum ma oftic ca nu am reusit sa mi-o cumpar hardcopy.
Sisteme de operare si Sisteme distribuite de Tanenbaum cred ca sunt un fel de lectura musai a oricarui student. Tin minte ca am citit Sistemele de operare pe nerasuflate intr-un weekend. Atat de mult mi-a placut….si examenul era in urmatoarea luni.
How to solve it, de Polya, este o achizitie recenta. Este o carte care prezinta simplu cum se pot rezolva problemele in matematica. Practic insa este un ghid de conduita pentru atunci cand programezi, pictezi sau sapi santuri. Este bine de citit. Detine o latura didactica adresata profesorilor, cat si studentilor sau elevilor. Partea nasoala a cartii este ca detine un dictionar de termeni care nu prea e fun sa il citesti, termenii fiind prezentati alfabetic. Cam pe acolo m-a pierdut cartea….
Din cartile care apar publicate online am rasfoit una despre programare genetica. Este scrisa interesant si pot spune ca intelesesem principiile programarii genetice. Mi s-a parut construita logic, nedandu-mi impresia ca sunt un bou care incearca sa inteleaga universul. A Field Guide to Genetic Programming http://www.lulu.com/content/2167025.
Ok, zic si eu atunci, dar numai top 1, ca e ceva mai arzatoare: “Modern C++ Design” de Andrei Alexandrescu. Asta ar fi o carte catre care am gasit des referinte.
Pentru alte povestiri din informatica, cred ca o sa astept sa apara intai filmul.
Realizez ca nu prea am citit multe carti (bune) pe CS. Si in nici un caz complet. Cartiile de CS au fost mai tot timpul un fel de referinta, am citit capitole … sunt sigur ca gresesc, dar asa s-a intamplat. In fine, Discrete Mathematics a lu Knuth mi-a placut si mie in mod deosebit. Iar pe vremea cand am facut un hobby din security, mi-am cumparat: “Hacking. The art of Exploitation” de Jon Erickson. Cred ca asta o sa va placa, desi capitolele 3 si 4 sunt doar de umplutura.
O să fac un top al cărţilor care nu sunt neapărat foarte avansate, dar m-au învăţat foarte multe şi m-au ajutat să pricep lucrurile pe care acum le profesez din greu. Nu e un top, de aceea nu le numerotez. În schimb o să le pun în ordine cronologică.
.
Prima carte care m-a apropiat de programare a fost cartea lui Ion Diamandi de jocuri pe calculator, nici nu mai ştiu cum se numeşte. A fost un deschizător de drumuri pentru că acolo, pe lîngă ‘ăsta e codul sursă, transcrie-l şi ai jocul’ explica şi ce se întîmpla acolo.
A doua carte care a fost adevărat deschizător de minte a fost o carte de programare în C care mi-e neclar dacă era traducere după Dennis Ritchie sau nu. Eram într-o perioadă în care la şcoală mi se predau pointeri în Pascal, şi mi-era neclar ce e ăla pointer, şi de fapt cum e organizată memoria. Ce înseamnă o alocare şi de ce e nevoie de aşa ceva. În clasa a IX-a eu învăţam C, şi spre necazul profei de info din clasa a X-a am predat toate tezele în C(++). Profa de info îmi dădea zece din oficiu oricum
Următoarea carte care m-a dus la nivelul următor a fost o carte de grafică pe calculator. Cartea asta a fost pentru mine o revelaţie – singurul motiv pentru care am învăţat matematică, şi singurul motiv pentru care, în cele din urmă, am luat bacul la mate cu notă maximă şi am intrat la facultatea de info. A fost o demonstraţie: uite, matematica te ajută. În plus a fost incredibil de plăcut. La sfîrşitul liceului aveam deja un engine 3D wireframed, şi a fost o mare realizare, chiar dacă după aceea am abandonat 3d-ul.
Următoarea carte a fost “Networking for dummies” de Doug Lea. Chiar dacă e o carte pentru “to(n)ţi”, are o groază de informaţii explicate atît de bine încît ar trebui să fie prima carte pe care o citeşti înainte de un curs de reţele.
Apoi nu mai ştiu exact ordinea, dar trebuiesc citite “Reţele de calculatoare” şi “Sisteme de operare” de AST. Sine qua non.
Toate celelalte sunt doar adăugări, explicaţii şi intrări în amănunte. Nu zic că nu mai există cărţi fundamentale. Dar după ce ai trecut prin astea, înţelegi în sfîrşit ce sunt alea calculatoare, şi de ce funcţionează aşa cum o fac. Cel puţin au reuşit să facă asta pentru mine.
[...] scris despre carti, iar laudata a fost Code Complete. Si de foarte recent (3 – 4 ore?) o am si eu. Deja m-am infundat [...]
[...] să postez aici un răspuns la o postare scrisă de Lucian Sasu, care a devenit de curînd contributor la blogul ‘Cultivaţi în .ro’ . O să fac un [...]
[...] să postez aici un răspuns la o postare scrisă de Lucian Sasu, care a devenit de curînd contributor la blogul ‘Cultivaţi în .ro’ . O să fac un [...]