[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7. A Comparison With Other CAS

This chapter will give you some information on how GiNaC compares to other, traditional Computer Algebra Systems, like Maple, Mathematica or Reduce, where it has advantages and disadvantages over these systems.

7.1 Advantages  Strengths of the GiNaC approach.
7.2 Disadvantages  Weaknesses of the GiNaC approach.
7.3 Why C++?  Attractiveness of C++.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1 Advantages

GiNaC has several advantages over traditional Computer Algebra Systems, like


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 Disadvantages

Of course it also has some disadvantages:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.3 Why C++?

Why did we choose to implement GiNaC in C++ instead of Java or any other language? C++ is not perfect: type checking is not strict (casting is possible), separation between interface and implementation is not complete, object oriented design is not enforced. The main reason is the often scolded feature of operator overloading in C++. While it may be true that operating on classes with a + operator is rarely meaningful, it is perfectly suited for algebraic expressions. Writing as 3*x+5*y instead of x.times(3).plus(y.times(5)) looks much more natural. Furthermore, the main developers are more familiar with C++ than with any other programming language.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by root on July, 11 2005 using texi2html