Sold out

Find the Bug - A Book of Incorrect Programs

English · Paperback / Softback

Description

Read more

Finding bugs and understanding what is really happening within code is a lost

art. Only truly good programmers are able to emulate the processor in their

own mind (e.g. read the code and understand how it might work without going

to the trouble of running it). Adam Barr wonders how programmers are

supposed to build better programs if they do not know what is going on in

code. The true pursuit of most software programmers is not creating

applications from scratch; the reality of their day-to-day work is that they

usually have to deal with inherited code. This code, likely written by someone

else, must be optimized, tweaked, and improved. Therefore, programmers who

are adept at reading, understanding, and improving code are in hot demand.

These skills are drawn to the forefront with the help of this new book.

This book is language-independent. The author borrows from his extensive

experience at Microsoft Corporation and as an independent consultant to show

how programming skills can be honed by going through the exercise of finding

the bugs in existing code. By teaching programmers how to troubleshoot, it is

the author's belief that programmers will learn how to think like a programmer,

and ultimately produce better software in a more timely fashion.

List of contents

Preface.
1. Bug Classification.
2. Tips on Walking Through Code.
    Split the Code into Sections with Goals.
      Identify the Sections in the Code.
      Identify Goals for Each Section.
      Comments.
    Identify the Meaning of Each Variable.
      Variable Names.
      Look at the Usage of Each Variable.
      Restricted Variables.
      Invariant Conditions.
      Track Changes to Restricted Variables.
    Look for Known Gotchas.
      Loop Counters.
      Same Expression on Left- and Right-Hand Side of Assignment.
      Check Paired Operations.
      Function Calls.
      Return Values.
      Code That Is Similar to an Existing Error.
    Choose Inputs for Walkthroughs.
      Code Coverage.
      Empty Input.
      Trivial Input.
      Already Solved Input.
      Error Input.
      Loops.
      Random Numbers.
    Walk Through Each Section.
      Track Variables.
      Code Layout.
      Loops.
    Summary.
3. C.
    Brief Summary of C.
      Data Types and Variables.
      Strings.
      Pointers.
      Structures.
      Conditionals.
      Loops.
      Functions.
    Selection Sort.
    Linked List Insertion.
    Linked List Removal.
    Memory Copy.
    Parse a String into Substrings.
    Memory Allocator.
    Memory Free.
    Recursive Word Reversal.
    Calculate All Possible Routes.
    Kanji Backspace.
4. Python.
    Brief Summary of Python.
      Data Types and Variables.
      Strings.
      Lists and Tuples.
      Dictionaries.
      Conditionals.
      Loops.
      Functions.
      Classes.
      Exceptions.
      Importing Other Code.
      Output.
    Is a Number Prime?
    Find a Substring.
    Alphabetize Words.
    Encode Strings Using a Character Map.
    Print the Month and Day.
    Go Fish, Part I: Draw a Card from a Deck.
    Go Fish, Part II: Ask if Another Hand Has a Card.
    Go Fish, Part III: Play a Full Game.
    Parse Numbers Written in English.
    Assign Gift Givers.
5. Java.
    Brief Summary of Java.
      Data Types and Variables.
      Strings (and Objects).
      Arrays.
      Conditionals.
      Loops.
      Classes.
      Exceptions.
      Importing Other Code.
      Command-Line Applications and Applets.
    Is a Year a Leap Year?
    Convert a Number to Text.
    Draw a Triangle on the Screen, Part I.
    Draw a Triangle on the Screen, Part II.
    Reverse a Linked List.
    Check if a List Has a Loop .
    Quicksort.
    Play the Game Pong, Part I.
    Play the Game Pong, Part II.
    Compute Bowling Scores.
6. Perl.
    Brief Summary of Perl.
      Data Types and Variables.
      Strings.
      Lists.
      Hashes.
      Conditionals.
      Loops.
      Subroutines.
      Scalar Versus List Context.
      File Handles.
      Regular Expressions.
      Output.
      Command-Line Parameters.
    Sort a File by Line Length.
    Print the Prime Factors of a Number.
    Tab Expansion.
    Simple Database.
    Find Repeating Part of a Fraction.
    Expand Indented File List to Full Paths.
    Sort All the Files in a Directory Tree.
    Calculate Student Test Averages.
    Merge Sort of Multiple Files.
    Play the Game Mastermind.
7. x86 Assembly Language.
    Brief Summary of x86 Assembly Language.
      Data Types and Variables.
      Arithmetic Operations.
      Flags, Conditionals, and Jumps.
      Loops.
      Procedures.
      Output.
    Make Change for a Dollar.
    Multiply Two Numbers Using Shifts.
    Join Strings with a Delimiter.
    Calculate Fibonacci Numbers.
    Check if Two Words Are Anagrams.
    Convert a 64-Bit Number to a Decimal String.
    Sum a Signed Array.
    Play the Simulation Game Life.
    Check if Parentheses Match in Source Code.
    Radix Exchange Sort.
Appendix A. Classification of Bugs.
    Syntax Versus Semantics.
    Classification Used in This Book.
    A-Algorithm.
      A.off-by-one.
      A.logic.
      A.validation.
      A.performance.
    D-Data.
      D.index.
      D.limit.
      D.number.
      D.memory.
    F-Forgotten.
      F.init.
      F.missing.
      F.location.
    B-Blunder.
      B.variable.
      B.expression.
      B.language.
    Summary.
Appendix B. Index of Bugs by Type.
Appendix C. References.
    Classification of Bugs.
    General Sources for Bug Types.
    C.
    Python.
    Java.
    Perl.
    x86 Assembly Language.
Index.

About the author

Find the Bug: A Book of Incorrect ProgramsAuthor Bio
ADAM BARR lives in Redmond, WA, and works at Microsoft Corporation as a Program Manager on Windows Server. For ten years, he was a Software Design Engineer at Microsoft Corporation, where he worked on products ranging from Windows NT, Windows 2000, and Windows XP to Microsoft Interactive Television and Softimage Digital Studio. He has exceptional experience in C programming and Windows NT kernel development and debugging. He is author of Proudly Serving My Corporate Masters: What I Learned in Ten Years as a Microsoft Programmer.

© Copyright Pearson Education. All rights reserved.

Summary

Presents "bugged" programs in C, Java, Python, Perl, and x86 assembly language, with explained solutions. This book includes language overviews to help you debug 50 examples. It shows how to look past the "surface" of code to uncover its hidden internal logic. It also offers practical guidance on analyzing programs.

Product details

Authors Adam Barr
Publisher Addison-Wesley Longman, Amsterdam
 
Languages English
Product format Paperback / Softback
Released 01.01.2004
 
EAN 9780321223913
ISBN 978-0-321-22391-3
No. of pages 336
Dimensions 176 mm x 232 mm x 16 mm
Weight 492 g
Series Addison-Wesley
Addison-Wesley
Subjects Natural sciences, medicine, IT, technology > IT, data processing > Programming languages

Programm, Programmierung (EDV)

Customer reviews

No reviews have been written for this item yet. Write the first review and be helpful to other users when they decide on a purchase.

Write a review

Thumbs up or thumbs down? Write your own review.

For messages to CeDe.ch please use the contact form.

The input fields marked * are obligatory

By submitting this form you agree to our data privacy statement.