O livro "Estrutura e interpretação de programas de computador" é uma boa leitura para programadores Java? [fechadas]

14

Isso pode ser subjetivo e provavelmente fechado, mas eu ainda queria saber se é realmente útil ler Estrutura e Interpretação de programas de computador.

Estrutura e interpretação de programas de computador

O livro não usa Java. Não que eu quisesse aprender Java. Estou curioso para saber se será útil ler para ser um programador melhor e quais são as coisas que posso ganhar com o livro ou quais são suas outras alternativas a este livro mais adequadas para programadores Java?

ashishjmeshram
fonte
32
Para iniciantes, tente não se posicionar como um "programador java". Ou como "programador de qualquer idioma". É um beco sem saída. Seja apenas um programador. E então, o SICP será extremamente útil. Provavelmente, a leitura mais útil por aí.
SK-logic
3
É muito difícil, é por isso que você lê.
11136 Jonathan Henson
4
Comece no Capítulo um, vá página por página, trabalhe com todos os exemplos, não progrida até entender cada página e cada exemplo. A chave de resposta está online.
Jonathan Henson
2
@ JonathanHenson e quando você chegar ao fim, pare
jk.
3
Sim, você precisa aprender o esquema. No entanto, uma das razões pelas quais o livro usa o Scheme é que você pode aprender a totalidade do Scheme em cerca de um dia, se nunca tiver programado antes ou em 10 minutos, se tiver. Afinal, o SICP é um livro para iniciantes completos, que pressupõe absolutamente nenhum conhecimento de programação.
Jörg W Mittag

Respostas:

23

Bem, eu não sei se este livro irá ajudá-lo, mas quando eu trabalhei nesse livro há cerca de 20 anos, ele definitivamente melhorou minhas habilidades de programação (independentemente de qualquer linguagem de programação). E eu acho que especialmente um programador Java terá algumas novas idéias que ele / ela não terá se apegando apenas ao Java.

Joel Spolsky 2005 escreveu um bom artigo sobre Java e SICP, que pode ser do seu interesse:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Doc Brown
fonte
+1 Melhor resposta possível para o que quase equivale a uma pergunta sobre recomendação de livros.
18712 Joshua Drake
13

Eu acho que a Estrutura e a Interpretação de Programas de Computador é um ótimo livro para ler. No entanto, existem alguns problemas com isso.

O maior problema da minha experiência é que, embora o livro não exija absolutamente nenhum conhecimento de programação e seja voltado para concluir iniciantes, ele é voltado para concluir iniciantes que estudam no MIT . E assim, enquanto não assume qualquer conhecimento de programação, que não assumem um pouco de domínio do conhecimento, por exemplo, nas áreas de engenharia elétrica, física e matemática. Nota: eles não têm nada a ver com os conceitos que estão sendo ensinados, são apenas necessários para entender os exercícios e exemplos .

Pessoas maiores do que eu explicaram isso muito melhor, em um artigo habilmente intitulado A Estrutura e Interpretação do Currículo de Ciência da Computação . Felizmente, eles não são apenas chorões, eles escreveram seu próprio livro: Como criar programas . Se você pensa em ler o SICP, pode ler o HtDP primeiro: ele cobre o mesmo terreno que o SICP, mas pressupõe apenas o conhecimento médio do domínio no nível do ensino médio. (De fato, ele foi escrito para ser ensinado a crianças do ensino médio.)

Depois de concluir o HtDP, você ainda pode voltar e ler o SICP, já que agora algum conhecimento em falta de domínio não será mais tão prejudicial, porque você já viu o conceito antes.

Nota: existe um rascunho para uma segunda edição do HtDP , que você pode querer ler em vez da primeira edição. O material sobre programação imperativa foi removido e será abordado no segundo volume ainda não escrito de Como projetar componentes , mas você pode usá-lo na primeira edição, no SICP ou em ambos.

Jörg W Mittag
fonte
Posso sugerir uma alternativa para SICP: Conceitos, técnicas e modelos de Programação de Computadores
Eden
@ Eden: CTM é muito bom, eu concordo. Não penso nisso como um livro para ensinar programação, como SICP, HtDP e Concrete Abstractions. Mas definitivamente pertence à lista de "livros que fazem de você um programador melhor"!
Jörg W Mittag
5

Pelo meu entendimento , o SICP é mais focado em áreas de programação funcional, incluindo programação recursiva e forte introdução ao CS - o que é um pouco difícil de entender para novos programadores. Outro ponto, é preparado e instruído para o MIT, e também são necessários alguns bons fundamentos no campo da engenharia, matemática e física para encontrar este livro útil.

Eu recomendaria um bom conjunto de livros em que cada um se concentre em diferentes aspectos da engenharia de software:

  • Código Completo 2 - concentra-se nos processos de engenharia de software.
  • Código Limpo - concentra-se na codificação no pequeno. Como escrever classes e funções.
  • Programador pragmático - se concentra em trabalhar em uma equipe que produz software.

Uma descrição mais detalhada dos livros mencionados acima e outra pode ser encontrada nas seguintes referências:

  1. Como ser um programador com 10 livros simples
  2. Melhores livros para programadores iniciantes

Por favor, sinta-se livre para adicionar à lista, pois não é o ideal :)

Editar: Ao escolher os livros mencionados acima e determinar a prioridade de como lê-los, o objetivo é realmente o que você é o principal a tentar fazer ou aprender.

Yusubov
fonte
7
Concordo com as sugestões no contexto (implícito) - mas sua resposta seria ainda melhor se realmente mencionasse o que você não gosta (ou gosta) sobre o SICP.
Joris Timmermans
4
Comparação de maçãs e laranjas - todos os livros mencionados são excelentes sobre engenharia de software. O SICP é mais sobre ciência da computação - o que é programação de computador conceitualmente.
Nate
1
Esta resposta parece muito com uma resposta a uma pergunta da lista de leitura recomendada. Que eu não acredito que se encaixa bem com o objectivo dos locais Stack Exchange: meta.stackexchange.com/questions/113678/...
Joshua Drake
@ Nate, não é para comparar maçãs e laranjas, é tudo sobre CS. Mesmo assim, cada um dos livros compartilha alguns tópicos comuns.
Yusubov 18/09/12
2
@MadKeithV, concordo com seus comentários. Eu coloquei meus pensamentos no SICP na primeira linha.
precisa saber é o seguinte
4

Vou falar mal aqui e dizer - provavelmente não é uma boa leitura para a maioria das pessoas - qualquer que seja o idioma.

Como Knuth, é um bom livro para ler. No entanto, mesmo supondo que você seja um graduado do MIT, ainda levará a melhor parte de um ano para ler corretamente, e é isso que os professores e os ATs ajudam.

Existem outros livros sobre engenharia de software que você poderia ler nesse período que teriam mais valor? Existem outras línguas que você poderia aprender no tempo?

editar Apenas para expandir um pouco:
engenharia de software é engenharia, é tudo sobre otimização. Sua tarefa é maximizar seu conhecimento por um determinado tempo + orçamento de custo.
O SICP é uma introdução de alto nível à programação através de uma linguagem funcional. A razão pela qual ele usa uma linguagem funcional é que é mais fácil descrever muitos conceitos matemáticos de programação em linguagens funcionais do que em procedimentos e muito mais fácil de ler do que a lógica formal.

Há também uma certa quantidade de postura, ie. "Você não é realmente um programador a menos que leia SICP", ou Knuth, ou possa programar em Lisp, C ou x86 assembler. Normalmente é fácil refutar; ie você não pode ser um programador de verdade, a menos que conheça o trabalho de Cantor na teoria dos conjuntos e nas equações de Maxwell e esteja familiarizado com a mobilidade dos buracos nos semicondutores.

Martin Beckett
fonte
Havia outros livros na minha lista de desejos, como Code Complete 2, Clean code, programadores Pragamatic, Refatoração, etc.
Ashishjmeshram 18/09/12
5
É por isso que eu os leria primeiro
Martin Beckett
7
Eu debati com voto negativo nesta resposta, mas decidi que apenas um comentário era melhor: Concordo que o SICP não é uma boa leitura para a maioria das pessoas, especialmente no início, mas acredito que um ótimo desenvolvedor deve ser capaz de lidar com este livro e aprenderá muito disso. Grandes desenvolvedores não são "a maioria das pessoas". É um bom livro de filtros.
Joris Timmermans
4
Eu discordo (até certo ponto) - um desenvolvedor completo que tem o SICP em seu currículo sempre pode aprender sobre o ambiente Unix etc. Prefiro contratar um desenvolvedor sem experiência em plataforma além do SICP e treiná-lo novamente, do que alguém que não obtenha o SICP.
Joris Timmermans
1
@MadKeithV - Sim, e pela mesma razão eu contratei Phds de Matemática / Física sem experiência em codificação. Mas se você estiver trabalhando em tempo integral como programador e, principalmente, iniciante, existem livros mais simples que talvez sejam melhores (valor / tempo) que Knuth ou SICP ou lendo os artigos de Turing.
Martin Beckett
1

Você planeja ser um "programador JAVA" pelo resto da sua vida? Provavelmente existem livros melhores para ler. Se você quer ser um bom programador em geral, é uma excelente leitura. Aqui está o porquê. Existem certas ferramentas que todo bom programador precisa em sua caixa de ferramentas. Um deles é um conhecimento profundo de estruturas e algoritmos de dados (se você não acredita em mim, vá a uma entrevista na Microsoft, Google, Amazon etc.), os algoritmos que acompanham são análise de complexidade, recursão e uma boa compreensão dos ponteiros não. doeu. Quando se trata de análise de algoritmos, processos recursivos e paradigma funcional em geral, não consigo pensar em um livro melhor ou mais desafiador do que o SICP.

Jonathan Henson
fonte