Code Reading and over one million other books are available for Amazon Kindle. Learn more



or
Sign in to turn on 1-Click ordering
More Buying Choices
Have one to sell? Sell yours here
Start reading Code Reading on your Kindle in under a minute.

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.
Sorry, this item is not available in
Image not available for
Color:
Image not available

To view this video download Flash Player

 

Code Reading: The Open Source Perspective (v. 1) [Paperback]

Diomidis Spinellis
3.8 out of 5 stars  See all reviews (19 customer reviews)

List Price: $69.99
Price: $48.99 & FREE Shipping. Details
You Save: $21.00 (30%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Only 4 left in stock (more on the way).
Ships from and sold by Amazon.com. Gift-wrap available.
Want it tomorrow, May 21? Choose One-Day Shipping at checkout. Details
Free Two-Day Shipping for College Students with Amazon Student

Formats

Amazon Price New from Used from
Kindle Edition $31.91  
Paperback $48.99  
Shop the new tech.book(store)
New! Introducing the tech.book(store), a hub for Software Developers and Architects, Networking Administrators, TPMs, and other technology professionals to find highly-rated and highly-relevant career resources. Shop books on programming and big data, or read this week's blog posts by authors and thought-leaders in the tech industry. > Shop now

Book Description

June 6, 2003 0201799405 978-0201799408
This book is a unique and essential reference that focuses upon the reading and comprehension of existing software code. While code reading is an important task faced by the vast majority of students, it has been virtually ignored as a discipline by existing references. The book fills this need with a practical presentation of all important code concepts, form, structure, and syntax that a student is likely to encounter. The concepts are supported by examples taken from real-world open source software projects. The focus upon reading code (rather than developing and implementing programs from scratch) provides for a vastly increased breadth of coverage.

Frequently Bought Together

Code Reading: The Open Source Perspective (v. 1) + Code Quality: The Open Source Perspective
Price for both: $96.98

Buy the selected items together


Editorial Reviews

From the Back Cover

If you are a programmer, you need this book.

  • You've got a day to add a new feature in a 34,000-line program: Where do you start? Page 333
  • How can you understand and simplify an inscrutable piece of code? Page 39
  • Where do you start when disentangling a complicated build process? Page 167
  • How do you comprehend code that appears to be doing five things in parallel? Page 132

You may read code because you have to--to fix it, inspect it, or improve it. You may read code the way an engineer examines a machine--to discover what makes it tick. Or you may read code because you are scavenging--looking for material to reuse.

Code-reading requires its own set of skills, and the ability to determine which technique you use when is crucial. In this indispensable book, Diomidis Spinellis uses more than 600 real-world examples to show you how to identify good (and bad) code: how to read it, what to look for, and how to use this knowledge to improve your own code.

Fact: If you make a habit of reading good code, you will write better code yourself.



0201799405B02032003

About the Author

Diomidis Spinellis has been developing the concepts presented in this book since 1985, while also writing groundbreaking software applications and working on multimillion-line code bases. Spinellis holds an M.Eng. degree in software engineering and a Ph.D. in computer science from Imperial College London. Currently he is an associate professor in the Department of Management Science and Technology at the Athens University of Economics and Business.




Product Details

  • Paperback: 528 pages
  • Publisher: Addison-Wesley Professional (June 6, 2003)
  • Language: English
  • ISBN-10: 0201799405
  • ISBN-13: 978-0201799408
  • Product Dimensions: 7.4 x 1.2 x 9.3 inches
  • Shipping Weight: 2 pounds (View shipping rates and policies)
  • Average Customer Review: 3.8 out of 5 stars  See all reviews (19 customer reviews)
  • Amazon Best Sellers Rank: #973,729 in Books (See Top 100 in Books)

More About the Author

Diomidis Spinellis is an Associate Professor in the Department of Management Science and Technology at the Athens University of Economics and Business, Greece. His research interests include software engineering, programming languages, internet information systems, computer security, and intelligent optimization methods. He holds an MEng in Software Engineering and a PhD in Computer Science both from Imperial College London.

Spinellis has published two books in Addison-Wesley's 'Effective Programming Series': in 2004 Code Reading: the Open Source Perspective, which received a Software Development Productivity Award in 2004 and has been translated into six other languages, and in 2006 Code Quality: the Open Source Perspective. Both books use hundreds of examples from large open source systems, like the BSD Unix operating system, the Apache Web server, and the HSQLDB Java database engine, to demonstrate how developers can comprehend, maintain, and evaluate existing software code. Spinellis has also published more than 100 technical papers in journals and refereed conference proceedings. The article 'A Survey of Peer-to-Peer Content Distribution Technologies' he co-authored in 2004 has been appearing in the list of ACM's most downloaded digital library articles throughout 2005 and 2006. He is a member of the editorial board of IEEE Software, authoring the regular 'Tools of the Trade' column, and Springer's Journal in Computer Virology.

Spinellis is a FreeBSD committer and the author of many open-source software packages, libraries, and tools. His implementation of the Unix sed stream editor is part of all BSD Unix distributions and Apple's Mac OS X. Other tools he has developed include the UMLGraph declarative UML drawing engine, the ckjm tool for calculating Chidamber and Kemerer object-oriented metrics in large Java programs, the Outwit suite for integrating Windows features with command-line tools, the fileprune backup file management facility, and the socketpipe network plumbing utility. In 2004 he adopted and has since been maintaining and enhancing the popular bib2xhtml BibTeX bibliography format to HTML converter. He is now leading the EU-funded SQO-OSS cooperative research project, a software quality observatory for open-source software.

Spinellis is a member of the ACM, the IEEE, the Usenix Association, the Greek Computer Society, the Technical Chamber of Greece, a founding member of the Greek Internet User's Society, and an active Wikipedian. He is four times winner of the International Obfuscated C Code Contest and a member of the crew listed in the Usenix Association 1993 Lifetime Achievement Award.

Customer Reviews

Most Helpful Customer Reviews
62 of 67 people found the following review helpful
3.0 out of 5 stars Cool concept, but disappointing March 9, 2004
Format:Paperback|Amazon Verified Purchase
I purchased the book to help me out with the recurring task of quickly understanding the nature of unfamiliar large software projects. Kudos to Mr. Spinellis for tackling this subject, which is a large part of the everyday work of programming.

Unfortunately, I feel that this book was of very limited use to me as an experienced programmer, and suffers from a rather basic flaw (as a topic). The problem is that the art of code reading is really the intersection of a deep and/or broad understanding of programming, in conjunction with a deep and/or broad understanding of the tools and practices employed. One could well assert that this book is about *debugging* unfamiliar codebases as much as it is about *reading* them, since code comprehension is a component of code debugging. This is a rather apt analogy, since many have attempted to describe the black art of debugging just as Mr. Spinellis has attempted with reading, and with no definitive "must-have" coverage to date.

The result is that I felt the book rushed through important programming concepts that were either extremely basic (global variables, while loops, conditionals, blocks), or language-specific (C typedef, arrays, function pointers), or too deep for the book to address adequately (trees, stacks, queues, hashes, graphs). With regard to the latter, I found it odd to be reading a lot of text about basic data structures, when it seemed to me that I should be assumed to already have this knowledge if I wanted to read code that used it. And if I did NOT know about basic data structures, I should be reading a book about data structures rather than a book about code reading. Software patterns are also presented (though not by the name, I think). If I was to encounter a codebase that employed some programming concept I didn't understand fully (for example, red-black trees), then I would first go to a book on data structures -- not a book on code reading.

Following the sections on what I would consider mandatory prerequisite understanding are some brief chapters software engineering concepts (version control, build systems, project organization, packaging, system structures), which might be useful to a reader who had never worked on a large-scale project before.

After all of the coverage of what I would consider prerequisite knowledge, the penultimate chapter finally gets to the topic of tools and techniques for actually reading code. This chapter is in fact what I had hoped Mr. Spinellis would devote the book to. Unfortunately, most of the tools and techniques presented are very basic and quickly encountered by any programmer: regular expressions, the fact that many editors include browsing support, the grep utility, differencing tools, the idea that you could write your own tools, using the compiler to emit warnings and preprocessed code, that beautifiers exist, profiling and annotating printouts. And that's it, in about forty pages, followed by a chapter devoted to an example session.

On the whole, I think this book comes up short. If you have a few years of programming experience under your belt, then you've already encountered the basic tools and techniques presented. If someone resorted to this book to learn about a basic programming construct, then they could read my code, but I'd be nervous about letting them modify it, until they read more focused texts.

I'm rating this book at three stars because there are some good pieces here and the effort was laudable. In the end, though, I really don't think that anybody needs this book on their shelf.
Comment | 
Was this review helpful to you?
61 of 78 people found the following review helpful
3.0 out of 5 stars Unfocused June 23, 2003
Format:Paperback
Programmers need to be able to look at code and analyze what it does in order to change it or fix it. The concept behind this book is to use many of the open source code samples to discuss how to read code and how to spot potential trouble areas in code. Unfortunately the book doesn't stay focused on this single goal and that detracts from its overall value. The book spends too much time explaining the basics of programming instead of concentrating on reading code. It also bounces around from one language to another, from C to C++ to Perl to Java, which is very confusing. For example, if you are a Java programmer do you really care how the C compiler optimizes strcmp calls? And what does that have to do with reading code?

Some of the advice is fairly basic such as try to realign indentations properly and replace complex code structures with simple placeholders when doing analysis. Although there are parts of the book that are excellent, too many of these good parts are wrapped under what should be basic concepts to anyone reading code. How can you debug a Java program, for example, if you are unfamiliar with abstract classes, libraries, or polymorphism? Do you really need a book on code reading to explain basic object oriented programming?

Overall, the book seems very unfocused and I really can't recommend it.

Comment | 
Was this review helpful to you?
9 of 10 people found the following review helpful
Format:Paperback
This book is exactly what I was looking for to lead a seminar in bioinformatics at UNC Chapel Hill that brings together bio-chem-phys students with computer science students to try to raise the level of programming sophistication of the former, and raise the level of biochem/biophys sophistication of the latter. It collects examples of why and how to read code, pointing out lessons about the idioms and pitfalls that can help you write, maintain, or evolve code under your control. Full of good ideas, drawn from a lot of experience, and written with humor.

The only problem is that inexperienced programmers, who would benefit most from this book, are unlikely to pick up a book on how to read C programs unless someone tells them to. Experts will find that they have already learned most of these things from their experience, although they may still enjoy this book for confirming what they know. But I think that experts will also enjoy being able to loan this book to inexperienced programmers to transmit the wisdom distilled from experience.

Comment | 
Was this review helpful to you?
Most Recent Customer Reviews
4.0 out of 5 stars SHort review
I've bought this book as native (swiss)german speaker, but I understand the book more or less well, because it is written in an easy to understand english. Read more
Published 2 months ago by Markus Grob
2.0 out of 5 stars Rambling dissapointment
The book rambles on with no seeming focus. It does contain some interesting thoughts but to get to them you must wade through a terrible book.
Published on July 17, 2007 by R. Bedford
3.0 out of 5 stars Read your code
I gave up reading after only 20% of this book. I had hoped it would give encouragement and easy-to-read pointers on how to quickly familiarize oneself with a large body of code. Read more
Published on October 24, 2006 by T. Harris
4.0 out of 5 stars Works best if you have the matching skill sets of the material...
If you're a programmer, you are going to be reading the code that others write. It's as simple as that. But reading code is not like reading someone's novel or article. Read more
Published on August 10, 2006 by Thomas Duff
4.0 out of 5 stars Five stars for beginners, much less for seasoned programmers
While I have absolutely no doubt that the contents of this book are extremely valuable to developers, it is difficult for me to believe that seasoned programmers would need to read... Read more
Published on April 28, 2006 by Charles Ashbacher
3.0 out of 5 stars An attempt at being software engineering encyclopedia that falls short
I agree with the two previous reviewers (Paul and Hollasch). On the positive side, the author's obviously a serious scholar. Read more
Published on October 17, 2005 by alkmaar
4.0 out of 5 stars Learn the other half of coding.
I run a small programming contest over the Internet (Ruby Quiz), so the author of Code Reading: The Open Source Perspective and I share a passion. Read more
Published on March 16, 2005 by James Edward Gray II
5.0 out of 5 stars Valuable resource of Information and good practices
A valuable resource for best practices, do's and don'ts, what works and why, what you should do in various situations of project, code, and architecture evaluation, and everything... Read more
Published on January 21, 2004 by ART SEDIGHI
5.0 out of 5 stars Easy to read, worth checking out for some
I stumbled upon this book when I was at the book store and picked it up without ever reading a review or seeing any kind of Internet press about it and was very surprised at what I... Read more
Published on November 30, 2003
4.0 out of 5 stars great insights from practical experience
i like this book a lot. by touring various pieces of source code (focusing on NetBSD, an open source version of BSD), we get to see what's happening and why. Read more
Published on November 16, 2003 by jose_monkey_org
Search Customer Reviews
Only search this product's reviews

What Other Items Do Customers Buy After Viewing This Item?


Forums

Topic From this Discussion
I was wondering .. Be the first to reply
Have something you'd like to share about this product?
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Search Customer Discussions
Search all Amazon discussions




Look for Similar Items by Category