|
|
|
|
|
by 110011
2963 days ago
|
|
Her recommendations are poor. You dont read books on software development methodologies when "learning to program". Nor would you learn type theory. That's like suggesting to someone who wants to learn to sail, the intricacies of weaving cloth fibers into a sail. There's a huge tower of abstractions to deal with in learning any new discipline, and it's important to enter at an appropriate level, ie, one that engages the learner to continue because the relationship to the end goal is clear (to the learner). I would suggest CLRS to someone mathematically mature for the best introduction to algorithms. I don't have a book suggestion for learning to program in some language, but I do consider this a far less difficult and important obstacle compared to learning to think algorithmically. When the interest is piqued people will naturally dig deeper and eventually find out for themselves, other aspects in the tower, be it silicon doping or reinforcement learning. |
|
In the article she already states that anyone can learn to program -- by programming. The title of the article is "The best books on Computer Science and Programming", not "The best books to learn to Program".
Honestly I think you missed the fact that the books are about going further.Petzold's Code teaches you to look at what your instructions are doing on the machine. It teaches you a little about architecture -- and probably all most people will need to know about computer architecture, and let's face it -- the rest can be gleaned from the thousands of blog posts people have done about X unix feature, or measuring performance of Y, or otherwise from reading the code.
Code Complete and Clean Code teach you how to deal with other people's code, and how to structure your own code in clean ways. This is not something that most people will pick up on their own at the time when they actually need it, it seems to be something mostly learned from trial and error. Important skills for contributing to an open source projects, etc.
Types and Programming Languages teaches you more about how languages and Correctness work on a lower, general level. And Algorithms is about looking at the specific structures of the code you write, and learning to optimize them and design new ones efficiently.
As she says:
Honestly the only one I'd really swap out is Algorithms. I'd replace it with The Algorithm Design Manual by Skiena.