60 of 67 people found the following review helpful
5.0 out of 5 stars
many programmers are ignorant of this material, Oct 31 2004
By W Boudville - Published on Amazon.com
This review is from: Write Great Code: Volume I: Understanding the Machine (Paperback)
As new computer languages arise that have more power, like Java and C#, have you noticed something? Often, someone might learn programming without ever having to know about the architecture of a von Neumann machine. Yet most computers since World War 2 have this design at their very core.
Hyde fills in this gap in the education. At one level, you should read it for "culture". It explains the basis of programming. Granted, for most of us, there is often no direct need for understanding how binary arithmetic is implemented. Or why registers can speed up performance. And what is cache memory, really? We finesse our ignorance by invoking libraries that subsume these details.
The material that Hyde explains may occasionally be of use. What if you need to write some of these low level procedures in assembler, to reduce a bottleneck? After using a profiler on your runtime code to find the key routines, do you have any idea how to improve matters?
Even out of pure intellectual curiosity, you should know what happens at the silicon. Or are you just a wage slave? Programming because you have to? A good programmer who loves to program should know this material. Also, out of pure self interest, you should always burnish your programming skills. To separate you from your peers.
24 of 25 people found the following review helpful
5.0 out of 5 stars
Great information... But do you really need it?, Oct 25 2006
By Barry - Published on Amazon.com
This review is from: Write Great Code: Volume I: Understanding the Machine (Paperback)
This is a great book but I have to disagree with the overall viewpoint. I've been doing embedded programming for a while and if that's all I'd ever done I would totally agree that understanding low level concepts helps write better code. However, I also write a lot of code in C#. People who normally use high level languages such as C#, VB.Net, or JAVA are probably not going to benefit much from this book. These languages are so far abstracted from the hardware level that the concepts are hard to apply anywhere. On the other hand, if you still use malloc on a daily basis, you need to read the book :) Anyway, the book is easy to read and I never caught any errors. If you want to learn about computers at a low level, then this is a great book to start with!
17 of 17 people found the following review helpful
5.0 out of 5 stars
Getting down to the core of software development..., Dec 5 2004
By Thomas Duff "Duffbert" - Published on Amazon.com
This review is from: Write Great Code: Volume I: Understanding the Machine (Paperback)
As computers have gotten smaller and faster, developers have become more and more removed from the lowest levels of programming. Randall Hyde's new book Write Great Code - Volume 1: Understanding The Machine (No Starch Press) will help you get back to the basic levels of how computers work and how that affects your programming.
Chapter List: What You Need To Know To Write Great Code; Numeric Representation; Binary Arithmetic And Bit Operation; Floating-Point Representation; Character Representation; Memory Organization And Access; Composite Data Types And Memory Objects; Boolean Logic And Digital Design; CPU Architecture; Instruction Set Architecture; Memory Architecture And Organization; Input And Output (I/O); Thinking Low-Level, Writing High-Level; ASCII Character Set; Index
It used to be you couldn't program at all without knowing this material. The design of a program was tied closely to the machine architecture, and it drove the instruction set and the overall programming decisions. But now the higher-level programs have made it easier for mere mortals to write a program and be completely oblivious to how a CPU executes an instruction or loads data from memory. Hyde goes into great detail on all the instructional design and theory, and I'd venture to guess that a very small number of programmers (and I'm not one of them) know most of this information. The assumption is that you'll know at least one procedural language (like C, C++, BASIC, or assembly). He rotates examples among C, C++, Pascal, BASIC, and assembly so as to keep the examples as language-neutral as possible. The goal when you finish the reading is that you should understand exactly how the architecture of a CPU affects your program, and how to make programming decisions that will lead to efficient programs. This volume will be followed up by another book titled Think Low-Level, Write High-Level. For me, I think this is where a lot of this information will come together.
Foundational information presented in great detail, and a book that all serious developers should take the time to read and understand.