Author: Randall Hyde
Publisher: No Starch Press, 2004
Aimed at: Experienced programmers who missed out on learning the basics
Pros: Covers a lot of very low-level topics
Cons: It isn't in touch with modern software development
Reviewed by: Harry Fairhead
This isn't about writing good quality high-level code. It isn't about object-oriented ideas, programming methodologies or anything sophisticated. In fact it's a complete throwback to primitivism.
It contains a great deal of low-level information of the sort that an assembly language programmer or a C programmer doing low-level bit shuffling would need. After all how many Java or C# programmers need to know the ins and outs of floating point arithmetic? Not very many as it is part of the infrastructure that you expect others to provide – we take it for granted.
There are lots of other ideas in the book that should be the common knowledge of all programmers but sadly often are overlooked – binary, hex, logic, addressing modes and so on. There is lots of discussion of the way hardware design influences the efficiency of code and how changing the code can improve efficiency. Should we be concerned with this? In the long run certainly not. It's the responsibility of the hardware people to provide machines that run modern code efficiently and of the compiler people to design compilers that make the best use of the hardware no matter how we choose to express our algorithms.
If you want a run down on the sort of knowledge that you would gain doing a first year computer science course then this is a good book. If you are serious about building great applications you probably need to set your sights a little higher. This is too low-level for the majority of programmers – but great fun to read.