Book description
How do the experts solve difficult problems in software development? In this unique and insightful book, leading computer scientists offer case studies that reveal how they found unusual, carefully designed solutions to high-profile projects. You will be able to look over the shoulder of major coding and design experts to see problems through their eyes.
This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project's architecture, the tradeoffs made in its construction, and when it was important to break rules.
This book contains 33 chapters contributed by Brian Kernighan, KarlFogel, Jon Bentley, Tim Bray, Elliotte Rusty Harold, Michael Feathers,Alberto Savoia, Charles Petzold, Douglas Crockford, Henry S. Warren,Jr., Ashish Gulhati, Lincoln Stein, Jim Kent, Jack Dongarra and PiotrLuszczek, Adam Kolawa, Greg Kroah-Hartman, Diomidis Spinellis, AndrewKuchling, Travis E. Oliphant, Ronald Mak, Rogerio Atem de Carvalho andRafael Monnerat, Bryan Cantrill, Jeff Dean and Sanjay Ghemawat, SimonPeyton Jones, Kent Dybvig, William Otte and Douglas C. Schmidt, AndrewPatzer, Andreas Zeller, Yukihiro Matsumoto, Arun Mehta, TV Raman,Laura Wingerd and Christopher Seiwald, and Brian Hayes.
Beautiful Code is an opportunity for master coders to tell their story. All author royalties will be donated to Amnesty International.
Publisher resources
Table of contents
- Dedication
- A Note Regarding Supplemental Files
- Foreword
- Preface
- 1. A Regular Expression Matcher
- 2. Subversion’s Delta Editor: Interface As Ontology
- 3. The Most Beautiful Code I Never Wrote
- 4. Finding Things
-
5. Correct, Beautiful, Fast (in That Order): Lessons from Designing
XML Verifiers
- 5.1. The Role of XML Validation
- 5.2. The Problem
- 5.3. Version 1: The Naïve Implementation
- 5.4. Version 2: Imitating the BNF Grammar O(N)
- 5.5. Version 3: First Optimization O(log N)
- 5.6. Version 4: Second Optimization: Don’t Check Twice
- 5.7. Version 5: Third Optimization O(1)
- 5.8. Version 6: Fourth Optimization: Caching
- 5.9. The Moral of the Story
- 6. Framework for Integrated Test: Beauty Through Fragility
- 7. Beautiful Tests
- 8. On-the-Fly Code Generation for Image Processing
- 9. Top Down Operator Precedence
- 10. The Quest for an Accelerated Population Count
-
11. Secure Communication: The Technology Of Freedom
- 11.1. The Heart of the Start
- 11.2. Untangling the Complexity of Secure Messaging
- 11.3. Usability Is the Key
- 11.4. The Foundation
- 11.5. The Test Suite
- 11.6. The Functioning Prototype
- 11.7. Clean Up, Plug In, Rock On…
- 11.8. Hacking in the Himalayas
- 11.9. The Invisible Hand Moves
- 11.10. Speed Does Matter
- 11.11. Communications Privacy for Individual Rights
- 11.12. Hacking the Civilization
- 12. Growing Beautiful Code in BioPerl
- 13. The Design of the Gene Sorte
-
14. How Elegant Code Evolves with Hardware The Case of Gaussian
Elimination
- 14.1. The Effects of Computer Architectures on Matrix Algorithms
- 14.2. A Decompositional Approach
- 14.3. A Simple Version
- 14.4. LINPACK’s DGEFA Subroutine
- 14.5. LAPACK DGETRF
- 14.6. Recursive LU
- 14.7. ScaLAPACK PDGETRF
- 14.8. Multithreading for Multi-Core Systems
- 14.9. A Word About the Error Analysis and Operation Count
- 14.10. Future Directions for Research
- 14.11. Further Reading
- 15. The Long-Term Benefits of Beautiful Design
- 16. The Linux Kernel Driver Model: The Benefits of Working Together
- 17. Another Level of Indirection
- 18. Python’s Dictionary Implementation: Being All Things to All People
- 19. Multidimensional Iterators in NumPy
- 20. A Highly Reliable Enterprise System for NASA’s Mars Rover Mission
- 21. ERP5: Designing for Maximum Adaptability
- 22. A Spoonful of Sewage
- 23. Distributed Programming with MapReduce
- 24. Beautiful Concurrency
-
25. Syntactic Abstraction: The syntax-case Expander
- 25.1. Brief Introduction to syntax-case
-
25.2. Expansion Algorithm
- 25.2.1. Representations
- 25.2.2. Producing Expander Output
- 25.2.3. Stripping Syntax Objects
- 25.2.4. Syntax Errors
- 25.2.5. Structural Predicates
- 25.2.6. Creating Wraps
- 25.2.7. Manipulating Environments
- 25.2.8. Identifier Resolution
- 25.2.9. The Expander
- 25.2.10. Core Transformers
- 25.2.11. Parsing and Constructing Syntax Objects
- 25.2.12. Comparing Identifiers
- 25.2.13. Conversions
- 25.2.14. Starting Expansion
- 25.3. Example
- 25.4. Conclusion
- 26. Labor-Saving Architecture: An Object-Oriented Framework for Networked Software
- 27. Integrating Business Partners the RESTful Way
- 28. Beautiful Debugging
- 29. Treating Code As an Essay
-
30. When a Button Is All That Connects You to the World
- 30.1. Basic Design Model
-
30.2. Input Interface
- 30.2.1. The Tree
- 30.2.2. The Long Click
- 30.2.3. Dynamic Tree Repopulation
- 30.2.4. Simple Typing
- 30.2.5. Prediction: Word Completion and Next Word
- 30.2.6. Templates and Replace
- 30.2.7. The Cache Implementation
- 30.2.8. Common Words and Favorites
- 30.2.9. Retracing Paths
- 30.2.10. The Typing Buffer, Editing, and Scrolling
- 30.2.11. The Clipboard
- 30.2.12. Searching
- 30.2.13. Macros
- 30.3. Efficiency of the User Interface
- 30.4. Download
- 30.5. Future Directions
-
31. Emacspeak: The Complete Audio Desktop
- 31.1. Producing Spoken Output
-
31.2. Speech-Enabling Emacs
- 31.2.1. A Simple First-Cut Implementation
- 31.2.2. Iterating on the First-Cut Implementation
- 31.2.3. A Brief advice Tutorial
- 31.2.4. Generating Rich Auditory Output
- 31.2.5. Using Aural CSS (ACSS) for Styling Speech Output
- 31.2.6. Adding Auditory Icons
- 31.2.7. Producing Auditory Icons While Speaking Content
- 31.2.8. The Calendar: Enhancing Spoken Output with Context-Sensitive Semantics
- 31.3. Painless Access to Online Information
- 31.4. Summary
- 31.5. Acknowledgments
- 32. Code in Motion
- 33. Writing Programs for “The Book”
- A. Afterword
- B. Contributors
- Colophon
- Copyright
Product information
- Title: Beautiful Code
- Author(s):
- Release date: June 2007
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9780596510046
You might also like
book
The Art of Clean Code
Most software developers waste thousands of hours working with overly complex code. The eight core principles …
book
Good Code, Bad Code
Practical techniques for writing code that is robust, reliable, and easy for team members to understand …
book
Five Lines of Code
In Five Lines of Code you will learn: The signs of bad code Improving code safely, …
book
The Art of Readable Code
As programmers, we’ve all seen source code that’s so ugly and buggy it makes our brain …