Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2011-12-29 09:39:35.
Revizia anterioară   Revizia următoare  

Carti

Cosmin
Cosmin Negruseri
29 decembrie 2011

Un prieten mi-a cerut recent cateva recomandari de carti care sa il ajute sa se imbunatateasca in programare. Cel mai usor sa cresti in nivel e sa programezi mult, sa duci un proiect de la inceput la sfarsit, sa incerci proiecte variate, sa inveti de la colegi. Rar ai timp sau chef la dispozitie incat sa citesti o carte intreaga. Totusi pentru varietate merge si cate o carte. Astfel va dau o lista de recomandari:

  • Code complete contine multe subiecte care nu sunt abordate prea mult la scoala dar sunt folosite de programatori frecvent cum ar fi unit testing, coding style, desing approach debugging. In general cartea contine reguli de bun simt dar e bine ca sunt multe impreuna. I se potriveste unui student care vrea sa inteleaga mai bine cum e viata de programator, dar daca ai facut ceva internshipuri, ai lucrat in industrie sau ai citit multe bloguri pe tema ...
  • Effective Java are multe subiecte mai detaliate Java. E scrisa de Joshua Bloch care a facut pachetul de colectii in Java iar acum lucreaza la Google ca Chief Java Architect. Ea aduce cititorul de la incepator competent in limbaj la programator avansat.
  • Effective C++ e o carte importanta daca lucrezi in C++ in industrie. Contine o gramada de sfaturi utile si e mult mai scurta decat alte carti care incearca sa faca acelasi lucru cum ar fi Thinking in C++ sau The C++ Programming Language.
  • Mythical man month e o carte clasica despre managementului proiectelor software. Ea contine mai multe principii si discutii in jurul acestui domeniu. Un principiu interesant porneste de la ideea ca ca cu 9 femei nu poti face un copil in o luna. Aplicat la proiecte software, ideea evidenteaza ca adaugarea de ingineri la un proiect care e pe cale sa nu isi atinga termenul limita nu ajuta proiectul.
  • Design Patterns e o carte importanta pe care multi programatori o au pe raft, dar putini reusesc sa o citeasca. E greoaie, dar are concepte interesante. Eu am reusit sa parcurg mare parte din ea facand un curs de Desing Patterns la servici, unde impreuna cu alti colegi trebuia sa citim cate un capitol si sa il discutam. Astfel recomand sa incercati sa o parcurgeti in grup. Pe langa ideile din carte, dintre care unele nu sunt foarte complicate ea ofera programatorilor un limbaj comun.
  • Lucrand cu un codebase mediu vei avea de foarte multe ori nevoie sa il adaptezi la cerinte noi. Refactoring contine o gramada de sabloane pentru a face partea de rescriere usoara. Pe langa asta contine o lista de asa numite "code smells", niste sabloane care iti spun ca ai putea imbunatati calitatea codului pe unele locuri. Multe din sabloanele de aici sunt evidente, dar din nou, cartea ofera un limbaj comun pentru programatori.
  • Programming pearls e o carte foarte misto pe subiectul algoritmica in industrie. Are un stil de a explica foarte bun si discuta probleme frumoase si curate. Este foarte abordabila de incepatori si are unele trucuri misto care sunt interesante si pentru avansati.
  • Introduction to algorithms e biblia algoritmilor :). Contine mult material, tratat bine. Astfel parcurgerea ei poate dura multa vreme. Unele demonstratii sunt ceva mai lungi decat ar trebui, iar accentul e pus mai mult pe rigoarea matematica decat pe intuitia din spatele demonstratiilor. As recomanda oricui parcurgerea problemelor, si este carte de baza pentru pregatirea la olimpiade.
  • Cracking the code interview e cea mai buna carte de pregatire pentru interviuri de programare. V-am mai recomandat-o si in postul... Problemele sunt exact la nivelul interviurilor din Bay Area. Alte carti ca Programming Interviews Exposed au probleme ceva mai banale.
  • The art of computer programming Probabil cea mai cunoscuta carte de informatica are un continut foarte misto, dar poate prea orientat matematic si de cand autorul lucreaza la ea i-au luat-o alte carti de algoritmica inainte.

Voi ce parere aveti de cartile astea si ce alte carti ati recomanda unui programator la inceput de drum?

Categorii: