| Design goals behind Mathemagix |
The main current design goals of Mathemagix are
as follows:
-
Strong typedness
-
Mathemagix should be strongly typed, with
support for discrete and parameterized overloading, generic
objects, compile-time type checking and, possibly, built-in
support for expression types which interact with the type
system.
-
High level control structures
-
Mathemagix should ultimately support high
level control structures, like coroutines, generators,
exceptions, continuations, etc. In the future we also wish to
consider parallellism.
-
Runtime efficiency
-
This is a really a long-term goal, since writing a compiler is
not a short-term objective. Nevertheless, the possibility to
write a compiler which produces efficient code should be kept in
mind. In particular, the language should support directives for
controlling memory layout and inlining in a way which is
naturally compatible with the type system.
-
Reusability of extern libraries
-
Before achieving runtime efficiency of Mathemagix
itself, we aim to achieve runtime efficiency through the
extensive reuse of existing dedicated libraries written in other
languages. Mathemagix should therefore
implement transparent mechanisms for reusing extern libraries
and in particular C++ template libraries. Special care should be
taken of garbage collection.
-
Good scalability
-
It should be possible to develop large computer algebra systems
using Mathemagix in a natural and modular
way. Special attention should be paid to constructs for
programming in the large and the type system should naturally
allow extensions of types and code.
© 2012 Joris van der Hoeven
Permission is granted to copy, distribute and/or modify this document
under the terms of the
GNU General Public License. If you
don't have this file, write to the Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.