Arts & Photography
Audio CDs
Audiocassettes
Biographies & Memoirs
Business & Investing
Children's Books
Christianity
Comics & Graphic Novels
Computers & Internet
Cooking, Food & Wine
Entertainment
Gay & Lesbian
Health, Mind & Body
History
Home & Garden
Horror
Literature & Fiction
Mystery & Thrillers
Nonfiction
Outdoors & Nature
Parenting & Families
Professional & Technical
Reference
Religion & Spirituality
Romance
Science
Science Fiction & Fantasy
Sports
Teens
Travel
Women's Fiction
|
|
Write Great Code: Understanding the Machine |
List Price: $39.95
Your Price: $26.37 |
|
|
|
Product Info |
Reviews |
<< 1 >>
Rating: Summary: Build that CPU in your head Review: A great programmer has both a compiler and a CPU in his head. You have to understand how a machine operates to understand how you can get yourself out of trouble if you have a problem that you don't understand. Particularly when you are using a systems language like C, C++ or assembler.
This book provides an in-depth understanding of the working of a CPU. And it does it in a well written and organized way with very effective use of illustrations. This is not the assembler book you remember. This book is targeted at systems level programmers who need to understand the machine in order to make the best use of it.
Given that many programmers start by learning Java, and learn C as their low level language, I can see there being a good market for this book. If you are working on a large C or C++ application, or are writing C libraries for Java, and you don't understand the basics (memory management, stacks, bit shifting, assembler opcodes, etc.) you should get this book.
Rating: Summary: Getting down to the core of software development... Review: 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.
Rating: Summary: many programmers are ignorant of this material Review: 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.
Rating: Summary: very clear; not even necessary to know any programming Review: I can't wait for the final 3 volumes of the series (hope they come out soon).
Hyde is too conservative in his advisement: though the book contains snippets of assembly and C/C++ code (and oddly some Pascal and Delphi), you can still read this book by skipping over the code (the book wouldn't be much harder to understand than if you did know one of these languages).
The only criticism I have of the book is the ordering. Basic memory and CPU chapters should go up front because the first 4 chapters about integer, float, and character representation in memory are too dull coming one after the other the way they do. Besides, most of the chapters of this book can be read independently of the others (a nice feature), so they could be rearranged in any order. Hyde at least needs to include a note mentioning this up front.
This book should be read early in the learning of programming. The only caveat is that Hyde overstates the benefits of the optimizations he describes; that is, rather, he gives the wrong impression to programming initiates: worrying about such optimizations are just not worth it these days unless you are writing a system level process (like a driver), writing a portion of code that will execute repeatedly, or writing for a non-PC device.
But whether you incorporate such optimizations into your code, knowing what the machine and compiler do is always to your advantage; one day, it may save your code.
<< 1 >>
|
|
|
|