|
Design goals behind Mathemagix |
|
The main current design goals of Mathemagix are
as follows:
-
Strong typedness
-
Mathemagix should be strongly typed, with
support for overloading, implicit conversions, 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 support high level control
structures, like coroutines, generators, exceptions,
etc.. Our current approach is based on Scheme
continuations. In the future we also wish to consider parallellism.
-
Fast prototyping
-
It should be possible to write a good prototype for the language
reasonably fast. In particular, it must be possible to write a
reasonably fast interpreter for the language.
-
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.
-
Language independence
-
Via the concept of an “abstract evaluator”, it should be
possible to use the functionality provided by Mathemagix
libraries from within different high level languages, mmx-light
being the default interpreter.
-
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.
© 2003 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.