Because it is written in a style in which technical books are rarely written. It has cartoons, jokes, references to pop culture but still it conveys the core subject exceedingly well. I understand that this is written in style of learn you some haskell so I am going to read that as well at some point. The best part is you can read the book second or third time and still have fun.
Yes it is another erlang book but it is written so well! I don't read thesis (or to be perfectly honest I try reading them but I can't understand most of them and lose interest after some time) but somehow I Joe's thesis made sense to me. It might be because of his clear writing style I can't say. But every time I read this book I find a certain phrase that sticks with me while I am writing programmes. Joe is a quote machine :)
Petzold's style is narrative, but make no mistake: every sentence is carefully chosen. I recommend resisting the urge to skim, lest you have to backtrack later...
NB the diagrams weren't legible in the Kindle version I paid for (some years ago; hopefully it's been updated). The diagrams were fine in the PDF version that I found somewhere.
I concur, as strongly as I can, with this. This book gave me sight in a lot of areas I in which I was previously blind. Also, I couldn't put it down. I was high on insight the entire time I read it. I should point out, though, that while I did already program when I read this, I hadn't taken any CS courses, so YMMV. That being said, this book was enough to get me on the path to self-taught assembly and embedded programming.
I never got all the way through this book. Started reading it and loved it. The narrative and conversational style is very welcoming. At the time I had a friend who was starting to learn programming so I loaned it to him hoping it would help/inspire him.
I had completely forgot I owned this book, thanks for reminding me! My friend has since given up on programming so I'll definitely get it back :)
God yes. This is the only book about computers that I recommend to my non-technical family and friends. It is the only way I've found for people to understand the love of computing as opposed to just understanding why it may be a good job.
Beautifully crafted book, i've read it a few months ago and i would have loved something like this when i was in high school (i still enjoyed it, even if there wasn't much i didn't already know).
Thanks for reminding me of this one. I had a brief skim of this years ago when I was short on money and time. Now with a bit more of both I have ordered a paperback copy.
Imho, the first chapter is a must-read for anyone in the industry, even and maybe especially if not a developer.
"When a program works, it is beautiful. The art of programming is the skill of controlling complexity. The great program is subdued, made simple in its complexity."
... and also, maybe not as "mindblowing" as Eloquent Javascript, but really good for diving deep in a low-level land (yet made very accessible in this book) that is probably overlooked by most of us when optimizing a web app for speed :
The Architecture of Open Source Applications series is a great read. It is mostly written by project creators and contributers and freely available on-line: http://aosabook.org/
I enjoyed "Advanced Programming in the UNIX Environment" back when there we had multiple UNIX operating systems and probably more versions of standards than operating systems. Stevens carefully documented every detail (in a way where you could learn about what was going on; I also had the POSIX standards at the time which were not readable).
The book had some nice typesetting which I believe was done in the mystery language also used for man pages.
"Real Unix books are written using troff and this book follows that time-honored tradition. Camera-ready copy of the book was produced by the author using the groff package written by James Clark. Many thanks to James Clark for providing this excellent system and for his rapid response to bug fixes. Perhaps someday I will really understand troff footer traps."
> I enjoyed "Advanced Programming in the UNIX Environment" back when there we had multiple UNIX operating systems and probably more versions of standards than operating systems.
You were bit ahead of your time if you were reading ebooks back then.
Well thats an interesting question. Among the best is certainly "How to design Programs", http://htdp.org/ It's about Scheme. It does a better job than SICP I think, even though it still needs some endurance to get through.
Generally, there are plenty of good books, you get some ideas usually by combining knowledge from different books...
Even though this may sound a bit old-fashioned, simply in terms of quality and self-containedness, "The C Programming Language" by K&R is by far the best technical book I've read. You can certainly download it as PDF somewhere.
I'm not sure if it counts as a book, but the Django docs are amazing. I learned a lot about web-dev by printing out the docs (500pp at the time) and reading them cover to cover.
I second your praise of Django docs. They're a good example of how technical docs should be written. I think the team behind Django even wrote an article on how to write good docs. My gut feeling is that the docs is part of the reason Djangos is so popular because anyone new to web frameworks would find it easiest to pick up Django.
All the books by W. Richard Stevens[1], especially the TCP/IP Illustrated Volumes.
No one covers theory with actual illustration and real world examples like Stevens does in his books.
The book is really accessible and helpful. SaneDB helped me survive a development project when I was new to many things and beat some sense into me about what databases (and DBAs) are for that still comes in handy every week.
Some of the examples are a bit dated now, and this type of immersive learning at intermediate/advanced levels is increasingly common (e.g. the Head First series, Codecademy, etc) but when this book came out it was rare to have this learning method presented for anything other than the most beginning levels of a language.
Scott Chacon used to have a peepcode ebook on Git Internals. That was pretty awesome. Not sure if there is a legal way to get that anymore after peepcode got acquired :(
I disagree. It's used as an introductory book on AI classes and it's a very broad book covering enough surface on different AI topics. But if you want to go deep, you have to dig into academic papers
Javascript Allongé by Reg Braithwaite was an incredible book, not just for changing how I viewed Javascript, but it also taught me a lot about programming as a whole. It taught me a lot of lessons in factoring functions into orthogonal concerns that have been highly influential on my coding style in all languages ever since.
Seconded! I thought I knew a lot about JavaScript but this book explains some fundamental things about how JavaScript works that I'd never seen before, not including all the combinator goodness.
Technical content tends to be more picky about layout etc than prose, which can be an issue for e-readers. Also some technical books suffer from the lack of ability to quickly browse and jump from one page to another.
Very good point about jumping around in technical books. I rarely read any tech books for this reason. eBooks are better suited for casual reading which is done front to back. Tech/reference books suffer on eReaders due to poor navigation and insufficient linking.
SCIP should always be in the list as one of the best programming books ever written. Others are
'Simply Scheme: An introduction to computer science', simply scheme is an alternative to "How to design Programs", http://htdp.org/, both books are written for non-programmers but they provide a gentle introduction to many advanced topics covered in SCIP. I prefer "Simply Scheme".
Another one is the "Little Schemer" http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262....
Multi-Format: epub/pdf/html, great use of Middleman, being internationalised, interesting & useful videos (but more might perhaps be made of the premium end)
Content: really well matched to target audience. Ongoing updates.
Without a doubt it is, for me, "Pat & Hen": "Computer Organization and Design" by Patterson and Hennessy. I was mesmerised by this book as an undergrad and spent night after night devouring every page. It is a true eye-opener, explaining why computers are the way they are from the compiler down to the CPU design. You even get to design a CPU from scratch, i.e., from basic logic gates (in the older editions, at any rate). Magnificent and enlightening, a must read for anyone who really wants to know "what's going on under the hood".
I enjoyed this book as well, and it was the text for my computer-architecture class. The authors do a great job explaining the underlying mechanisms of computing hardware clearly and concisely.
If you are an experienced programmer coming to Ruby this is definitely the place to start. Especially if you are a Java or .NET EE-indoctrinated programmer. The people who maintain your code after you will be thankful that you read this and wrote idiomatic Ruby.
If you just want to learn Ruby or read an excellent technical book as mind food this book is also a great choice.
(Code by Petzold is actually my favorite technical book, but its already been picked.)
For me, there have been more than one. I'll list them in the order I read them. I have them all in an eBook form to read in my Kindle App on my Nexus 7.
1) Clean Code
2) Pragmatic Programmer
3) Patterns for Enterprise Application Architecture
There's some overlap in contents, but I feel they complement each other very well.
I haven't finished it yet, but Linux Networking Internals was really amazing. It is a bit low-level, but even though I never really wanted to code low-level Linux, it taught me a lot about Linux's ways to handle incoming data and forward data, etc.
This book when combined with "The Clean Coder", and "Refactoring: Improving the design of existing code" completely changed how I thought about programming. It "levelled me up" so to speak. Even though I'm as far from being good as it gets, I still know I improved significantly from reading these three books.
+1 for Practical Object-Oriented Design in Ruby. I'm admittedly a relative novice (my background is in finance, but I've been learning to program through books and online resources for about a year now).
Reading this book led to many "Aha" moments where I really started to understand the benefits of OOP. Great read.
1. Learn you some erlang (http://learnyousomeerlang.com/)
Why?
Because it is written in a style in which technical books are rarely written. It has cartoons, jokes, references to pop culture but still it conveys the core subject exceedingly well. I understand that this is written in style of learn you some haskell so I am going to read that as well at some point. The best part is you can read the book second or third time and still have fun.
2. Joe Armstrong's thesis(http://www.erlang.org/download/armstrong_thesis_2003.pdf)
Yes it is another erlang book but it is written so well! I don't read thesis (or to be perfectly honest I try reading them but I can't understand most of them and lose interest after some time) but somehow I Joe's thesis made sense to me. It might be because of his clear writing style I can't say. But every time I read this book I find a certain phrase that sticks with me while I am writing programmes. Joe is a quote machine :)
3. Essays in the art of writing by R.L stevenson (http://www.gutenberg.org/files/492/492-h/492-h.htm)
Just read the opening paragraph and see for yourself if you don't want to read any more :)