Outlook

dum spiro spero

Marcus Tullius Cicero

Abstractions in the theoretical and practical aspects of sciences and engineering have been developed for extensive periods of time. The comparatively young ﬁeld of scientiﬁc computing has also made progress in attempting to ascend the ladder of developing abstractions. In contrast to the ﬁeld of mathematics, where abstractions do not result in overhead, the ﬁeld of scientiﬁc computing needs to take care not to incur penalties with respect to limited resources of both memory or computational power due to abstractions. Methodologies, such as static polymorphism have been developed, which together with the ongoing reﬁnement of tools are not only capable of avoiding abstraction penalties, but are even capable of outperforming low level implementations.

The increased abstraction levels also ease to implement higher mathematical abstractions. The C++ programming language, while being far from perfect, oﬀers capabilities to not only establish the desired high abstraction levels at high execution performance. Furthermore it allows the almost seamless reuse of legacy implementations within an abstracted environment, thereby speeding development as well as improving migration capabilities. The reuse of already established pieces of software is not restricted to previous C++ implementations, but by providing a thin wrapping layer extensible to all implementations in languages which can produce link compatible object code. Thus enabling the development of unifying interfaces, which, while abstract, can be ﬂexibly tailored to accommodate new use cases quickly. The high abstraction aims for the employment of concepts in programming. While concepts have not yet been formalized and included into the newest C++ standard, the idea of a concept may already be utilized using the available language features, thereby also highlighting the requirements which are expected from a standardized form of concepts.

It has been attempted to present that an abstract approach to scientiﬁc problems is nothing, which has to be newly developed for scientiﬁc computing. Mathematics has been developed and used by scientists in order to provide structuring not only as a goal onto itself but also as a tool for other sciences such as physics. It is the aim to show the feasibility of utilizing mathematical abstractions as guidelines for realizations of physical problems in the domain of scientiﬁc computing. This should not, however, be a mapping expressing mere existence, for this is clearly beyond doubt as it has already been established on numerous occasions, but is to allow to facilitate the use of advances in all involved ﬁelds of research. Thus it is hoped to have given an idea how to provide a link of the kind as sketched in Figure 2.3. It is clear that such a link cannot be unique, at least from the current level of knowledge. Therefore, a mathematical compendium has been compiled out of the necessity to establish frames of reference. It also intends to show that once powerful concepts are in place, problems can be expressed and treated very concisely without sacriﬁcing generality.

The ﬁeld of physics has then been explored to illustrate that even in this discipline, which predates scientiﬁc computing, there is no single view to any given problem, but that multiple descriptions are available. While the evolution of the modelling techniques and methodologies has progressed, the old descriptions may still ﬁnd applications in ﬁtting contexts. It is such a trend which is also envisioned for the ﬁeld of scientiﬁc computing; to embrace new facilities that develop in the form of programming paradigms as well as supporting tools and thus allow for an increasing level of abstraction, sophistication and reuse. This should of course not happen at the cost of completely abandoning the already existing implementations and code bases, as Section 7.2.3 was intended to illustrate, by showing the integration of old and new implementations. In this it is similar to the attempts to bridge the realms of classical mechanics and quantum mechanics, as very brieﬂy explored in Section 7.4. While this section may be short, it nevertheless constitutes scientiﬁc progress in its own right, even if everything else should be considered to be without value or trivial, it should not be discarded with the rest, since it surpasses the sum of its parts and not only provides insights into a world between worlds, but does so using a newly derived algorithm.

It is crucially important that it is exactly the, for many reasons, implicit assumptions, which can cause major problems for the development of generic implementations. Therefore, even a reiteration of the structures, which are so easily assumed to be ubiquitous is required in order to be able to make them available explicitly. To make a bold claim: the development of generic implementation is mainly concerned with making implicit things explicit. To this end it is ﬁrst necessary to be aware of the implicit assumptions in the same manner that top down design is only possible if “the top” is known. If this is considered as overly simple, it is astounding how often it is ignored.

By adding possibilities of explicit speciﬁcation the number of choices is increased which may not be popular in general, when ever more facilities are expected to work using point and click actions. While this is not an unreasonable attitude in order to cope with the ever increasing number of choices an individual may be faced, it is only the choices which allow to reap the most beneﬁt from scientiﬁc computing. Since it is always possible to provide convenience layers, which shield potential users from the grizzly internals, while it is not easily possible to do the same in reverse. It is hoped, that the initial example provided in Section 3.3 as well as the examples provided throughout Chapter 6 were able to establish this notion while at the same time serving as examples how to map mathematical structures to digital computers.

An aim for future developments is to provide a means to apply algorithms beyond their initial ﬁeld of conception. As Chapter 5 elucidated for example, the described mechanics are in essence a geometric theory, thus geometric algorithms should be applicable, using appropriate generalizations. But the intent is then not to produce just another specialized implementation, for a new particular case, but rather formulate a truly generic version of the algorithm, even if specializations can later be again linked to it transparently. The resulting geometry library should be capable of seamlessly dealing not only aﬃne geometry, which is commonly encountered, but also with Riemannian and symplectic geometries eﬃciently. Furthermore, extensions to include even more diﬀerent geometries such as, e.g., hyperbolic geometries should also be made easy by enforcing an explicit separation of basic concepts. The envisioned setting would in itself form a foundation for employing algorithms by providing required infrastructure, thereby enabling identical methods to be applied for, e.g., the minimization of action and shortest path calculation. It would be an important step of making the abstract concepts of diﬀerential geometry much more tangible in the ﬁeld of scientiﬁc computing.

These concluding remarks had the intent of once more illuminating the work, the ideas, and the concepts presented in all of the preceding pages, while at the same time providing directions for further questing. If any of the goals have been successful, or all eﬀorts of writing as well as reading have been for naught, is, in the end, up to the reader …