11 - Software
Published online by Cambridge University Press: 19 August 2009
Summary
I devote this chapter to a brief description of the implementation of some of the algorithms in Part Two. After discussing the programming methodology, I give an overview of the organization of the code and sketch some of the fundamental data structures. Finally, I introduce a software program, CView, for viewing persistent simplicial complexes, homology cycles and their manifolds, and Morse complexes of grid data.
Methodology
Computer science solves problems by translating them into the language of very fast machines. We could claim that fast programs are the primary goal of this field. Fast software enables a user to quickly scrutinize a problem, observe patterns, gather data, and conjecture. There are two components to fast software: efficient data structures and algorithms, grounded in theory, and lean implementations, tailored to computer architectures. Knuth observes that “the best theory is inspired by practice, and the best practice is inspired by theory (Knuth, 1996).” I apply this observation not only to my work in general, but also to implementations in particular. The theory of practice in computer science has provided numerous abstractions to tackle the complexity of programming, from high-level languages, compilers, and interpreters, to the recent advent of “patterns.” Most of these abstractions, however, depend on extra levels of indirection, consume memory for the services they provide, and yield bloated and slow programs.
- Type
- Chapter
- Information
- Topology for Computing , pp. 183 - 197Publisher: Cambridge University PressPrint publication year: 2005