Abstract
Starting with a correct and efficient algorithm, we examine the process of transitioning to software. We outline and illustrate numerous problems that an unaware programmer may encounter. These include incorrect software (producing wrong results), software whose performance differs dramatically from that suggested by algorithm analysis, unpredictable performance of the resulting software, and problems that derive from undecidability and intractability. In many cases, we indicate what a programmer may do to avoid or ameliorate the problems created by these phenomena.
References (9)
- and Gagne: Operating Systems Concepts. The same applies to garbage collection which is usually part of operating or runtime support systems. Undecidability and intractability on the other hand are part of the general algorithm repertoire that is covered in textbooks on the design and analysis of algorithms, for example Kleinberg and Tardos: Algorithm Design. This paper is based on E. L. Leiss: A Programmer's Companion to Algorithm Analysis; the only other books treating similar material are the two Programming Pearls collections of papers by Jon Bentley, referenced below.
- A. V. Aho, R. Sethi, and J. D. Ullman: Compilers: Principles, Techniques, and Tools, Addison-Wesley Publishing Company, Reading, Mass.
- J. L. Bentley: Programming Pearls, 2 nd edn, Addison-Wesley, Reading, MA, 2000.
- J. L. Bentley: More Programming Pearls: Confessions of a Coder, Addison-Wesley, Reading, MA, 1990.
- D. Goldberg: What Every Computer Scientist Should Know about Floating-Point Arithmetic, ACM Computing Surveys, pp. 5-48, Vol. 23, No. 1, 1991
- N.J. Higham: Accuracy and Stability of Numerical Algorithms, SIAM, 2 nd edn, 2002.
- J. Kleinberg and E. Tardos: Algorithm Design, Pearson Addison-Wesley, Boston, MA, 2005.
- E. L. Leiss: A Programmer's Companion to Algorithm Analysis, Chapman & Hall, Boca Raton, FL, 2007.
- A. Silberschatz, P. Gavin, and G. Gagne: Operating Systems Concepts, 7 th edn, John Wiley, New York, NY, 2004.