next up previous contents
Next: The design: PHC Up: Polynomial Homotopy Continuation: a Previous: Database of benchmark

Programming in Ada

In this section we cite the benefits of object-oriented programming and to try to justify our choice for Ada as programming language.

Object-oriented development methods can be considered as structured programming techniques to help us out of the software crisis , see [4]. The essence of the software crisis is that building efficient, reliable, maintainable and understandable software systems is a very labor intensive and hence expensive job. But is there really a software crisis in the world of scientific computing? There are many examples of general-purpose and user-friendly mathematical software for performing numerical and symbolic computations interactively. Furthermore, various PACKages (such as HOMPACK) are commonly available, dedicated to one specific problem area, implementing one particular class of algorithms.

The following paragraph is a literal quotation from the announcement of OONSCI'96 (the Fourth Annual Object-Oriented Numerics Conference):

Scientific application software continues to grow in complexity due to increasing functionality, evolution of codes, the use of parallelism, and other factors. As a result, more and more time is spent writing and maintaining computer code, and less time is spent on the application itself. Object technology offers a way to break this cycle. Structuring applications as assemblages of software objects, rather than as monolithic programs, may pave the way for more efficient and complex applications by making software reusable, distributable, and modular.

During the last years, the algorithms needed in homotopy continuation have grown in complexity, because concepts from different and not directly related fields of computational mathematics are used. Polyhedral homotopy methods combine path following methods, from numerical analysis, and algorithms to construct convex hulls, from discrete and computational geometry. CONSOL and HOMPACK mainly focus on the continuation methods, rather than on the algebraic nature of the problem. The homotopy used in those packages is not clearly separated from the path following algorithms.

Of course, structured programming can be done in languages such as FORTRAN77 and even in C, but why not use a language which supports and even enforces modular programming? The concept of a `package' is a fundamental construction in Ada, see [3] and [4]. The quality of any program is largely characterized by its design. But usually, the structure of a program grows incrementally, with modifications depending on the change of demands made by the user. In the design of scientific software, this means that programs have to be able to incorporate the growing understanding of the mathematical structure of the problem. We experienced that the package mechanism of Ada is very helpful in guiding the transition between the different stages of designing a reliable software system.

Recently, the language has gone through a revision process to be the first standardized full object-oriented programming language, already implemented by the gnu-ada compiler, see [5].



next up previous contents
Next: The design: PHC Up: Polynomial Homotopy Continuation: a Previous: Database of benchmark



Jan Verschelde
Thu Nov 21 10:50:01 MET 1996