Other Sellers on Amazon
+ $3.98 shipping
+ $3.99 shipping
Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level 1st Edition
|New from||Used from|
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Frequently bought together
Customers who viewed this item also viewed
"If you want to know what's really going on with your programs . . . you won't find an easier introduction." -- DevX, April 14, 2006
From the Back Cover
In the beginning, most software was written in assembly, the CPUs low-level language, in order to achieve acceptable performance on relatively slow hardware. Early programmers were sparing in their use of high-level language code, knowing that a high-level language compiler would generate crummy, low-level machine code for their software. Today, however, many programmers write in high-level languages like C, C++, Pascal, Java, or BASIC. The result is often sloppy, inefficient code. You dont need to give up the productivity and portability of high-level languages in order to produce more efficient software.
In this second volume of the Write Great Code series, youll learn:
How to analyze the output of a compiler to verify that your code does, indeed, generate good machine code
The types of machine code statements that compilers typically generate for common control structures, so you can choose the best statements when writing HLL code
Just enough 80x86 and PowerPC assembly language to read compiler output
How compilers convert various constant and variable objects into machine data, and how to use these objects to write faster and shorter programs
With an understanding of how compilers work, youll be able to write source code that they can translate into elegant machine code. That understanding starts right here, with Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level.
- Item Weight : 2.23 pounds
- Paperback : 640 pages
- ISBN-10 : 1593270658
- ISBN-13 : 978-1593270650
- Dimensions : 7 x 1.5 x 9.25 inches
- Publisher : No Starch Press; 1st edition (March 18, 2006)
- Language: : English
- Best Sellers Rank: #1,280,377 in Books (See Top 100 in Books)
- Customer Reviews:
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
After reading the text your understanding of software/hardware interface will be improved by several orders of magnitude.
The only small annoyance is the fact that a lot of times Mr Hyde start the discussions on various topics using HLA listings as example and even if he provide details on MASM/TASM applications he does so comparing these to HLA. Hence you have to always study the HLA examples ( HLA is some kind of low-level language the author developed ).
Since I'm not interested in HLA ( probably like a lot of the readers out there ) I did not like the ( small ) additional effort it required.
Overall this book is a little gem.
This book is not a cookbook for writing better code. Hyde explains why certain programming constructs are better than others (and in what cases), and backs it up with evidence from the assembly code (that is the entire premise of the book). Finally, solid proof of (and against) what I've been hearing all along from instructors and other programmers on message boards or face-to-face communication. That in mind, it would have been nice to have a summary of the tips at the end of the chapters, or the end of the book, as a quick-reference kind of thing. These concepts are the perfect thing to consider when fine-tuning your code. I take the stance that if you fine-tune as you go, you have less work later, so I took notes as I read and have started implementing changes for the better (with evidence that it is better) in some of my coding.
Does anyone write code in Pascal anymore? Seriously? Hyde discusses examples in C/C++ and Pascal for the most part (favoring Pascal, by my estimation), so it is nice that the book is language-independent for the reader. The assembly examples in the book are in 80x86 and PowerPC...I think it would have been better to release two versions of this book, one where the assembly is 80x86 (because it is so ubiquitous, if for no other reason), and then another where the assembly is in PowerPC assembly. I didn't pick this up to become an assembly language programmer, and quite frankly, the PowerPC examples just confused me. It looks like my cat stepped on my keyboard and it appeared in print.
The tone of the text is sometimes condescending (especially in the first 5-6 chapters), with a not-so-subtle "real men only code in assembly" message. It seriously reminds me of my parents/grandparents whining about how hard they had it growing up...walking barefoot to school in the winter...and only having assembly to work with in writing programs.
So by the end of this book, I think I have met Hyde's goal for the readers. I can't sit down and write an assembly program, but I can read enough assembly to compare different versions of my high-level program to say what is better. As the subtitle suggests, I am "thinking low-level" now as I write my programs (in C...which most programmers would call low-level). I suggest "actively" reading this book and coding up a few examples with your compiler and examining the output, following along in the text. Doing that really made the material click for me.
Overall, it's a good book and definitely worth it. This is a long one though, and takes some time to digest. See you in volume 3!
The only thing I don't like about this book is that it appears to be giving too much space to HLA, which I suspect is a widely accepted assembly dialect that was actually used in any real-life project. And I just feel it is a waste of my time trying to understand and catch up with this HLA language. This results in my taking one star off with the final rate of 4 stars.
Other than that, this is indeed a very good book.
In a previous reivew, it is complained that Java is not touched. This is understandable while it really doesn't seem to be a problem to me. Java after compiling is translated into bytecode that has to be executed on the virtual machine. I guess that is really beyond the intended scope of this book, which is related to the world of native codes that after compiling can be directly executed by the machine.