Abstract :
The C++ programming language has a powerful template facility that enables the development of flexible software without incurring a large abstraction penalty. Templates let programmers tell the compiler how to create classes and functions parametrized in terms of other types and constants. Programmers often use templates to implement type-safe generic containers that hold elements of a particular type, or generic functions that can, for example, sort the elements in an arbitrary generic container. Templates are one of the most complex C++ language features. For this reason, they were deliberately left out of the Java programming language. Nevertheless, templates are the fundamental enabling technology that supports construction of maintainable, highly abstract, high performance scientific codes in C++. To support our thesis, we use examples from the Pooma framework. Pooma supports high performance scientific computing by providing high level math and physics abstractions such as multidimensional arrays, fields, particles, and transforms. It encapsulates the details associated with parallelism, enabling scientists to develop software on serial platforms and then transition quickly to parallel execution
Keywords :
C++ language; natural sciences computing; object-oriented programming; parallel languages; program compilers; C++ language feature; C++ programming language; Pooma framework; abstraction penalty; arbitrary generic container; compiler; enabling technology; flexible software; generic functions; high level math; high performance scientific codes; high performance scientific computing; multidimensional arrays; parallel execution; parallelism; physics abstractions; serial platforms; template facility; type-safe generic containers; Arithmetic; Computer networks; Concrete; Helium; Libraries; Linux; Printing; Scientific computing; World Wide Web; Writing;