Melhor resposta
Definitivamente, use SICP, se você está à altura do desafio. Você pode stat com o SICP quando você não sabe nada sobre programação, porque ele começa dos primeiros princípios, entretanto, requer um pouco de matemática, não muito, mas um pouco. Os autores têm uma linguagem belamente clara para descrever conceitos e ideias.
Eu aprendi o SICP quando já estava fora da universidade e descobri que ainda é um grande esclarecimento. Posso até dizer que este é o livro que mais me ensinou de todos os livros que li, embora ainda não o tenha terminado. Eu recomendo configurar seus exercícios SICP usando, por exemplo, a linguagem SICP do Racket.
Resposta
Sim, absolutamente, decididamente sim.
SICP não é um livro sobre programação de computadores, nem é um livro sobre engenharia de software, OOP ou qualquer um desses outros dispositivos e acessórios. SICP é sobre ciência da computação: entender o computador como uma máquina abstrata usada para manipular informações.
No capítulo um, você “é apresentado ao Scheme, uma linguagem criada por um dos autores. É mostrado como o fluxo de controle é modificado e gerenciado em um grande programa por meio de computação em um ambiente contido lexicamente, também conhecido como sub-rotina. O livro o orienta através das principais formas de implementação de sub-rotinas e explica as deficiências e a utilidade de ambas.
No capítulo dois, você aprende como estruturar dados e construir novos significados para dados brutos de pré- tipos de dados existentes. Você verá o poder da manipulação simbólica em vários lugares, como sistemas de álgebra de computador e árvores de codificação de Huffman.
O capítulo três é o mais fundamental de todos os capítulos. No capítulo três, você aprende sobre atribuição e o poder de variáveis mutantes. Os modelos anteriores de computação discutidos no livro agora estão radicalmente expandidos para acomodar a capacidade da linguagem de manter e afetar o estado.
No capítulo quatro, você é apresentado a um dos mais brilhantes ideias na história da informática: o macro LISP e a homoiconicidade dos programas Scheme. Ao contrário das macros de substituição do C, as macros LISP permitem que você manipule a estrutura básica da árvore de sintaxe abstrata do programa em tempo de execução e permite implementar novos paradigmas de programação em LISP.
O capítulo final ocupa uma abordagem completamente diferente e trata o computador como uma máquina de registro. É mostrado como um compilador LISP não é diferente de nenhum dos programas Scheme que você viu, e então a noção de universalidade aludida. Finalmente, você aprendeu a fazer um compilador LISP real.
Este livro foi incrível; mudou meu pensamento de ciência da computação, que significa dizer a um computador como imprimir números na tela, para ciência da computação significa entender o comércio offs de várias abstrações e como usá-los corretamente.
tl; dr Com certeza, leia este livro. Se você não gostar, provavelmente vencerá ” aproveite CS.