Eu me deparei com esta citação de Bill Gates: "Você definitivamente deveria me enviar um currículo se puder ler a coisa toda". Ele estava falando sobre os livros The Art of Programming . Então, fiquei muito curioso e quero ler tudo. Mas honestamente, eu não entendo.
Eu realmente não sou tão intelectual. Portanto, esse deve ser o motivo pelo qual não consigo entender, mas estou ansioso para aprender. Atualmente, estou lendo o Volume 1 sobre algoritmos fundamentais. Existem livros disponíveis para iniciantes / pessoas lentas como eu, que ajudariam a aumentar meu conhecimento para que eu possa ler o livro de Knuth com facilidade no futuro?
algorithms
books
taocp
Rho
fonte
fonte
Respostas:
Até acho que o livro de Knuth é um pouco avançado e difícil de entender. Esses livros são definitivamente para algoritmos de nível de pesquisa IMHO.
A introdução de algoritmos pelo CLRS é muito mais simples.
EDIT :
Ainda assim, se você quiser ler o livro de Knuth, deve primeiro ler a Matemática Concreta . Knuth quer que seus alunos estejam cientes da parte matemática básica da análise de algoritmos.
fonte
Não deixe de ler todas as citações de Gates, incluindo:
Não são livros fáceis e não pretendem ser. Lembre-se de que um dos objetivos de Knuth era trazer rigor matemático à ciência da computação . Isso é ótimo se você quiser provar algo sobre um algoritmo, mas não tão bom se você quiser apenas saber como ele funciona.
Michael Dorfman tem algumas boas dicas para ler os livros em sua resposta à pergunta (agora excluída) no Stackoverflow sobre O que posso obter da leitura do lote? . Se você não tem 10k rep, ainda pode ver a pergunta e a resposta dele na máquina de wayback .
Para outros recursos, descobri que é útil pesquisar os conteúdos programáticos das conceituadas escolas de ciência da computação. Por exemplo, livros didáticos para o início de classes de algoritmos:
fonte
Knuth é o autor de ciência da computação mais respeitado, citado, comentado e altamente respeitado da história. Seus livros adornam as estantes de todos os desenvolvedores sérios de software e são mencionados com o mesmo nível de respeito que as pessoas dão à Bíblia e à Arte da Guerra.
Eu até ouvi dizer que algumas pessoas realmente leram partes dos livros de Knuth.
A maioria das pessoas apenas pretende .
Pessoalmente, estou guardando-os para minha aposentadoria
fonte
Os livros de Knuth mudaram o campo dos algoritmos para sempre. Ele mesmo disse que 'duas páginas do meu livro é o trabalho de toda a carreira de alguém' e que seus livros eram difíceis de ler. O livro contém material condensado de anos de trabalho em Ciência da Computação.
Você não deve se sentir mal se não conseguir entender.
Como Prasoon disse, o CLRS é um livro mais simples de ler.
Você também tem algoritmos de Rajasekaran, Sahni et al, que são fáceis de entender.
fonte
Quando me formei, peguei os três primeiros volumes do TAOCP como presente de formatura e tentei lê-los diretamente. Nunca conseguiu. Hoje em dia eu consegui passar 1/3 dos três primeiros volumes (pensado em nenhuma ordem específica). O material é definitivamente denso, mas há três dicas que aprendi que ajudaram muito.
Primeiro, não tente ler de capa a capa. O TAOCP é realmente um trabalho de referência, e achei melhor ler uma seção quando for relevante para um problema que você está tentando resolver. Como muitas coisas no mundo, entender as soluções é muito mais fácil depois que você encontra os problemas que eles estão tentando resolver.
Em seguida, esse fluxograma na frente do livro, não é apenas um pouco de humor, mas na verdade uma dica bastante útil. Leia as seções nas quais você está trabalhando iterativamente, começando primeiro com apenas os conceitos gerais e, em seguida, aprofundando-se na matemática.
Por fim, mantenha um bom papel antiquado e um lápis à mão para trabalhar com os algoritmos descritos, e trabalhe com alguns dos problemas fáceis. É um longo caminho para ajudar a reforçar o que você está lendo.
fonte
Não se preocupe, a maioria das pessoas não entende a arte da programação de computadores (TAOCP). Portanto, não pense que você é lento ou novato por não entender - você é como os outros 99,99% de nós que não entendem.
Você é bastante ambicioso se quiser chegar ao nível em que pode ler o TAOCP com facilidade . Eu mesmo só folheei os livros antes de guardá-los. Provavelmente, apenas um punhado de pessoas neste planeta entende o TAOCP.
Confira o post: Os programadores de livros não leem realmente por Bill the Lizard.
Existem muitos outros livros listados aqui que são bastante legíveis , compreensíveis e você pode se beneficiar imediatamente .
Eu pessoalmente gosto de:
fonte
se você se define como está,
not a highly intellectual being
então está definindo expectativas baixas. Você precisa quebrar essa mentalidade se quiser fazer algo que valha a pena. Não deve haver dúvida em sua mente que você pode conseguir algo. Além disso, alcançá-lo não significa que você o alcançará facilmente.As coisas que vale a pena perseguir são as difíceis ... e isso não é um clichê. No software, na engenharia, na vida em geral, se você deseja alcançar algo, precisa seguir as coisas difíceis, as que as pessoas evitam e não se contentar com os menores denominadores comuns das coisas.
Primeiro, não está claro qual é o seu histórico de CS. O livro de Knuth exige um certo grau de maturidade. Poucas pessoas com um diploma de CS podem passar por isso com facilidade. Eu não esperaria que um estudante de CS que acabasse de terminar seu primeiro curso em algoritmos fosse capaz de realmente ler um único livro de Knuth. A maturidade necessária para alcançá-la simplesmente não existe, e isso não tem nada a ver com a capacidade mental do aluno.
Você precisa ter seu básico de algoritmos de maneira clara e clara, e precisa de uma boa quantidade de programação (trabalho e / ou escolar) em seu currículo - eu diria, pelo menos, 40 créditos em programação. Você também precisa ter sua matemática de CS em terreno firme.
Você não pode ir muito longe sem ter uma boa compreensão da matemática discreta (e possivelmente da teoria da computação).
Não é que você precise desse conhecimento para trabalhar nos problemas de Knuth, mas precisa de uma maturidade para poder passar por esse tipo de material.
Primeiro escolha um livro e apenas um livro (o livro do CLRS como sugerido anteriormente) e trabalhe-o do início ao fim. Quando possível, faça programas implementando os algoritmos. Não use Java ou C #, nem mesmo C ++. Vá para os ossos nus C e tenha a sensação de construir coisas a partir de restos de metal nus.
Obtenha também o livro de Knuth sobre "Matemática concreta" se você ainda não fez um curso de matemática discreta e teoria da computação. Seria bom que você também passasse por esse livro.
Em seguida, lide com a enciclopédia de Knuth, um tomo, um capítulo de cada vez. Não vá para outro capítulo sem entender bem o primeiro.
Eu sugeriria que você analisasse primeiro o volume I (algoritmos fundamentais), depois o volume III (pesquisa e classificação). Esses devem ser seus objetivos imediatos. Então, mais tarde (muito mais tarde), resolva o volume IV (algoritmos combinatórios) e, em seguida, o volume II (algoritmos semi-numéricos).
Não se sinta mal se não o entender primeiro. Eu tenho tentado passar pelo volume I e III por anos (10 anos agora).
E você não deve colocar tanto peso nisso também. Não faça isso para provar algo a alguém ou a si mesmo. Faça isso porque você está intelectualmente interessado em fazê-lo. Você pode se tornar proficiente em algoritmos simplesmente usando o livro do CLRS (ou qualquer um dos melhores livros de graduação).
Seja pragmático e faça uma pausa. Trate de ler o livro de Knuth como uma ambição pessoal de longo prazo, não como uma prova imediata de que você é material de CS;)
Existem outras coisas mais importantes (em termos de carreira) pelas quais se matar;)
fonte
Antes de começar em Knuth, tive que percorrer quatro livros diferentes. Os dois primeiros são os livros de Algoritmos de Sedgewick . Eles apresentam uma visão geral da maioria dos algoritmos e estruturas de dados em um formulário implementado real, para que você possa ver o que são e como funcionam. Esses livros vêm em diferentes versões de linguagem - eu li os em C, mas iirc foram originalmente escritos em Pascal, e existem versões em C ++ e Java por aí.
Depois disso, trabalhei em boa parte do livro de Cormen sobre algoritmos e usei Introdução a análise de algoritmos de Sedgewick e Flajolet como um texto complementar, pois está mais na veia do rigor matemático de Knuth do que no livro de Cormen. Ainda tenho que terminar uma delas, principalmente escolhendo as peças que acho que preciso.
Depois de ler essas e de me formar em Matemática, posso ler algumas das TAOCP, mas é uma leitura difícil. Isso não quer dizer que não seja útil. Os TAOCP são alguns dos melhores manuais de referência de algoritmos existentes, mas pensar que você pode usá-los para entender "completamente" qualquer coisa é um tanto problemático.
fonte