Algorithm-Oriented Generic Software Library Development

generic algorithms, algorithmic abstraction, software libraries, abstract datatypes, C++ We outline an approach to construction of software libraries in which generic algorithms (algorithmic abstractions) playa more central role than in conventional software library technology or in the objectoriented programming paradigm. Our approach is to consider algorithms first, decide what types and access operations they need for efficient execution and regard the types and operations as formal parameters that can be instantiated in many different ways, as long as, the actual parameters satisfy the assumptions on which the correctness and efficiency of the algorithms are based. The means by which instantiation is carried out is language dependent; in the C++ examples in this paper we instantiate generic algorithms by constructing classes that define the needed types and access operations. By use of such compile-time techniques and careful attention to algorithmic issues, it is possible to construct software components of broad utility with no sacrifice of efficiency.