SO is neither a wiki nor a forum. If the maintainers have a different vision for it, they're hardly being pedantic by not letting it turn into one of those things. The Internet isn't suffering from a shortage of wikis or forums, so maybe someone should put this page's contents in one of them?
It contains a lot of, fairly well developed, underlying theory on how to write good programs. The maths in the first couple of chapters may be a little off putting - there's an old idea that people write books that concern the problems they're interested in even when trying to teach you something else - but you don't really have to understand the mathy bits to benefit from the book.
If you've only done imperative programming before then it should be pretty eye-opening. If you've done functional programming before then it's not quite as O_O inducing, but still worth a read.
Also, it's effectively free so you can easily have a look yourself ^_^
Plenty of people who are good programmers don't read the book and are fine. Lots of people cargo-cult it and themselves don't understand it, which turns people off.
However, it focuses very much on the principles of programming from a high-level, and has challenging exercises that keep you engaged. It's a programming book written from a Computer Science perspective. It uses Scheme, a dialect of Lisp, which frustrates some. However, I think Scheme works best for the book, and replacing Scheme with something "useful" like Python would be the equivalent of taking a linguistics course that uses Latin as a generic vehicle to explain various grammatical constructs, and suddenly replacing Latin with Latin American Spanish - sure, Latin isn't "practical", but that's not the point.
I did not read it knowing "nothing", as some people suggest you should. I already knew how to get around in C++ and Python, and then read it on my own.
You don't really get Concrete Skill X from reading the book (and working through the exercises). It's a high-level work. What I got from it was a high-level perspective on languages, algorithms and abstraction techniques. I learned to see imperative, OO, functional and other programming paradigms as tools in a toolbox that have advantages and disadvantages, not as the One True Way to program. I also learned to, in general, think about the literal and not-so-literal implications of my code. The latter half of the book is more about language implementation, and culminates in implementing Scheme, among other things.
MIT phased out the book in its introductory course because, "Understanding the principles is not essential for an introduction to the subject matter anymore." Take from that what you will.
If god came down out of heaven and told you you could only read a single programming book, that would be among the top five choices and arguably the #1 choice. Dense but well written, teaches you how to think.
And for someone new to programming, it's worth reading Paul Graham's explanation of the value of Lisp [1] if you haven't already.
Looks like someone is after their stackoverflow promoter badge;)
On a serious note, this is actually a good resource, and probably an example of a question that wouldn't be allowed on Stackoverflow today but is kept around due to it being so darn popular.
This has been driving in the ~1000 hits per month range to http://eloquentjavascript.net for ages. Since that's just one link in the huge list, I guess lots of people are landing on it.
The problem I have with this is that there are so many options , someone looking at this has no real reference as to which books are better, how easy they are to read, etc. Its just a giant list!
33 comments
[ 2.6 ms ] story [ 76.0 ms ] threadWhat a surprise....not.
There seems to be a pedantic core of people on SO that go around locking topics, rather than contributing in their own area of expertise.
(a) it's preserved because it has 'historical significance', yet
(b) the bits are rotting as new books are released and old books' information becomes out of date
Read That Book.
[1] http://mitpress.mit.edu/sicp/
If you've only done imperative programming before then it should be pretty eye-opening. If you've done functional programming before then it's not quite as O_O inducing, but still worth a read.
Also, it's effectively free so you can easily have a look yourself ^_^
However, it focuses very much on the principles of programming from a high-level, and has challenging exercises that keep you engaged. It's a programming book written from a Computer Science perspective. It uses Scheme, a dialect of Lisp, which frustrates some. However, I think Scheme works best for the book, and replacing Scheme with something "useful" like Python would be the equivalent of taking a linguistics course that uses Latin as a generic vehicle to explain various grammatical constructs, and suddenly replacing Latin with Latin American Spanish - sure, Latin isn't "practical", but that's not the point.
I did not read it knowing "nothing", as some people suggest you should. I already knew how to get around in C++ and Python, and then read it on my own.
You don't really get Concrete Skill X from reading the book (and working through the exercises). It's a high-level work. What I got from it was a high-level perspective on languages, algorithms and abstraction techniques. I learned to see imperative, OO, functional and other programming paradigms as tools in a toolbox that have advantages and disadvantages, not as the One True Way to program. I also learned to, in general, think about the literal and not-so-literal implications of my code. The latter half of the book is more about language implementation, and culminates in implementing Scheme, among other things.
MIT phased out the book in its introductory course because, "Understanding the principles is not essential for an introduction to the subject matter anymore." Take from that what you will.
And for someone new to programming, it's worth reading Paul Graham's explanation of the value of Lisp [1] if you haven't already.
[1]: http://paulgraham.com/avg.html
http://sicpebook.files.wordpress.com/2012/11/sicp-marginless...
On a serious note, this is actually a good resource, and probably an example of a question that wouldn't be allowed on Stackoverflow today but is kept around due to it being so darn popular.
http://www.learneroo.com/courses/12/nodes/96
https://news.ycombinator.com/item?id=5160754
https://news.ycombinator.com/item?id=3232026
https://news.ycombinator.com/item?id=1444890
https://news.ycombinator.com/item?id=1972852
https://news.ycombinator.com/item?id=737324
http://csbooks.reddit.com
http://econbooks.reddit.com
http://physicsbooks.reddit.com
http://mathbooks.reddit.com
http://eebooks.reddit.com