Existem muitos livros sobre programação por aí, e parece que o Code Complete está no topo da lista de "livros de programação obrigatórios" da maioria das pessoas, mas e The Art of Computer Programming, de Donald Knuth? Sou uma pessoa ocupada, entre o trabalho e uma família jovem, não tenho muito tempo livre, por isso tenho que ser exigente quanto ao uso.
Eu estou pensando - alguém aqui leu 'TAOCP'? Em caso afirmativo, vale a pena reservar um tempo para ler ou algum outro livro ou mais programas paralelos, como projetos para animais de estimação ou contribuir com o código aberto, seriam uma melhor utilização do meu tempo em termos de desenvolvimento profissional?
AVISO LEGAL - Para aqueles que usam camisetas "Knuth is my homeboy", não me interpretem mal - eu quero ler, mas estou me perguntando se deveria estar no topo da minha lista de prioridades ou se algo mais vier primeiro.
Respostas:
O TAOCP é uma referência totalmente inestimável para entender como as estruturas e algoritmos de dados que usamos todos os dias funcionam e por que o trabalho, mas comprometer-se a lê-lo de capa a capa seria um investimento extraordinário do seu tempo.
Como um homem de família, passe o tempo com seus filhos.
fonte
Substitua "a enciclopédia" na sua pergunta por todas as referências ao TAOCP, e acho que a resposta deve ser óbvia. Porque em muitos aspectos, é isso que é TAOCP.
Há uma história (possivelmente apócrifa) sobre Steve Jobs conhecer Knuth. A primeira coisa que Jobs lhe disse foi "É um prazer conhecê-lo, Dr. Knuth. Li todos os seus trabalhos!". A resposta de Knuth foi "Você está cheio de merda": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
fonte
Não, não deve estar no topo da sua lista de prioridades. Eu tenho um conjunto completo e NÃO li a coisa toda. Eu o usei (até agora) como uma boa referência para certos problemas (foi inestimável na minha compreensão da aleatoriedade e no teste de geradores aleatórios, por exemplo). Sempre que surge um tópico de CS em que eu não tenho um controle REALMENTE bom, costumo pegar a parte relevante do TAOCP como um bom passo no meu entendimento.
Se você decidir lê-lo, terá mais poder, e eu definitivamente recomendo tomá-lo em pequenos pedaços. Não tenha medo de pular e olhar o que for mais interessante primeiro.
fonte
O TOACP é uma leitura essencial - em algum momento. Dependendo do que você faz diariamente, pode não ser o mais urgente.
É um daqueles livros (bem, coleções de livros) que é bom de ler no início de sua carreira, porque realmente fornece boas idéias que você normalmente não conseguiria até mais tarde, mas não é essencial para a sobrevivência até você se formar nessa parte da sua carreira, onde você não apenas codifica, escolhe a caixa de ferramentas. Este é o ponto em que você realmente deseja estudar algoritmos, espero que já entenda um pouco o design da linguagem e tenha uma compreensão muito ampla de quais ferramentas, linguagens e sistemas existem e como cada um deles se encaixa no ecossistema de coisas que você pode desenhar para um projeto específico.
Em outras palavras: é um aprendizado geral, por isso, se você é obsessivo como eu, leia-o agora, se não for, não há problema em adiar até começar a desejar subir a escada e se tornar um profissional.
fonte
Tendo empreendido recentemente essa mesma tarefa, posso dizer que a maneira como ele escreve é muito agradável e os problemas são rotulados (de acordo com a dificuldade) de maneira muito adequada. Obtenha o primeiro volume, leia os capítulos 1 e 2 e veja como você gosta.
fonte
O TAOCP é um ótimo trabalho, mas lê-lo seria um investimento terrível para um desenvolvedor de software que pratica. Se você fizer isso, estará sacrificando alguns anos (quanto tempo levará) do seu orçamento profissional de auto-aperfeiçoamento para aprender muito sobre pouco.
Eu recomendaria trabalhar com um ou vários livros "finais" sobre algoritmos, o meu favorito nesta área é o Manual de design de algoritmos de Steven S. Skiena
Então, se você sentir que precisa / deseja mais, vá para o Knuth.
Ao mesmo tempo, você pode comprar um ou vários volumes de TAOCP, pesquisar para entender quais áreas o Knuth cobre nele e mantê-lo em sua biblioteca, caso você realmente precise de algumas informações no seu dia-a-dia. trabalhos. Meu palpite é que você não faria isso e essa é outra razão pela qual eu não aconselho a tentar ler. Mas se você se referir a ele com frequência suficiente, saberá que vale a pena ler o artigo de capa a capa.
fonte
O trabalho seminal de Knuth é a referência mais popular que os programadores pretendem ler ou terminam de ler. Algum dia.
fonte
+10 no comentário da família / filhos. Eu tento fazer a maior parte da leitura enquanto durar em voos de olhos vermelhos para os clientes.
Mas ... sim, vale muito a pena a leitura. Não há razão para ler linearmente; em vez disso, procure e escolha alguns tópicos de interesse.
fonte
Estou firmemente no campo das pessoas que acham que todo desenvolvedor deve investir na obtenção dos livros em algum momento (e está ficando mais fácil agora que parece que eles estão sendo reimpressos em brochura ), mas do mesmo modo, eu faria Também é difícil acreditar que alguém se sente e leia todos eles de capa a capa.
A melhor abordagem para eles - se você não tem um trajeto para trabalhar onde tem tempo livre para sentar e ler - é ler o suficiente deles para saber onde encontrar as coisas e ler um capítulo inteiro sempre que precisar. você pode usá-los como livros de referência para um determinado problema. Com o Google e o Stack Overflow, não é tão comum procurar livros de referência, mas, em alguns casos, você pode achar que os livros fornecem algumas dicas de que você precisaria enviar mais tempo procurando na Internet.
fonte
Não esqueça que, no começo, Knuth queria escrever algo sobre como escrever um compilador.
Você pode obter muitas informações na rede com a wikipedia, por exemplo, mas se você não é algum tipo de pesquisador, basta ler o resumo, obterá satisfação.
Você ainda pode obter o primeiro tomo para lê-lo quando estiver entediado ...
fonte
Provavelmente é mais importante que você faça esses problemas no livro do que apenas lê-los. Isso exigirá muito tempo.
Ele tem até 4 volumes e 5 fascículos (quaisquer que sejam), portanto, concluir os livros provavelmente seria melhor do que um curso universitário nos fundamentos da ciência da computação e torná-lo quase o melhor programador de todos os tempos.
Desde que você tem uma família jovem, como eu, você me deu uma ótima ideia. Eu comprava os livros um de cada vez e os ensinava aos seus filhos.
fonte
Se você estiver curioso, faça-o, mas leva algum tempo para digerir, assim você precisa levar o seu tempo.
Você tem um trajeto onde pode ler - isso seria perfeito.
EDIT: Você pode achar interessante esta prévia de uma pequena parte do Volume 4: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(nota: postscript compactado)
fonte
Não é algo que a maioria das pessoas queira sentar e ler de capa a capa, não. É uma referência incrivelmente valiosa, e certamente é bom buscá-la, escolher uma seção interessante, ler sobre ela e fazer alguns exercícios. Mas as comparações da enciclopédia feitas acima são bastante adequadas ... são grandes, extensas e detalhadas. E alguns dos "exercícios" são problemas de pesquisa que podem levar anos para serem resolvidos.
Se você deseja apenas um conhecimento melhor dos algoritmos de baixo nível, talvez seja melhor começar com os livros de Robert Sedgewick (por exemplo, "Algoritmos em C", "Algoritmos em Java" etc.).
fonte
Se você quiser mudar o mundo, leia-o. Se você quiser aprender novos hacks, não leia.
fonte
O TAOCP de Knuth é uma obra-prima. Mas, como qualquer obra-prima (como "Illiad", "War and Peace" ou "In Search of Lost Time" de Proust), não é para todos ou para sempre.
O livro está muito bem escrito e muito bem pesquisado. Os problemas são grandes e a explicação dos algoritmos é bem feita.
O grande problema do livro é o fato de Knuth mostrar o código para uma linguagem de montagem fictícia para um computador fictício. Eu entendo por que ele fez isso, mas o fato é que é uma merda.
Eu recomendo usar este livro como uma Bíblia. Quando precisar, procure. Você encontrará a resposta. Isso aconteceu comigo mais de uma vez!
fonte