What lessons and observations can we draw from having applied all three symbolic manipulation systems to the fitting problem?

The first observation is that, our Cinderella, the free-ware Maxima
hasn't really performed any worse than Mathematica. We had to use
similar techniques in both systems, i.e., at some stage we had
to manually rewrite the expressions we worked with
in order to make the resulting equations explicitly linear
in *a* and *b*.

On the other hand, Maple's `solve` proved remarkably adept
at solving this problem without any hints or rewrites. Yet, a lack of
automatic expression numbering and of a simple to use
facility for picking apart Maple expressions made our life a little
difficult.

Maple *does* have such a facility, but it is nowhere as easy
to use as `pickapart` or Mathematica's `[[1]]`

. The way
you can pick apart an expression in Maple is illustrated in the
following conversation with Maple:

Functions

`addressof`

, `disassemble`

, and `pointto`

,
are referred to as Maple's Another lesson that we have learnt in this section is that neither system can be used insouciantly. You have to keep an eye on what goes on, unless you want to end up with somewhere in the middle of a large computation, which, in turn, may lead to a thoroughly incorrect answer at the end of a long road.

Maxima, Maple, and Mathematica, are *reasoning assistants*, meant
to be used interactively with every major step and answer scrutinised by
a knowledgeable user. For such use though, the ability to force
certain operations by using `ReplacePart` or `pickapart` may come
quite handy. Of course, if you have to resort to that, it clearly
hints at certain shortcomings in the power and flexibility
of available system functions, e.g.,
the `solve` command in Maxima and Mathematica is clearly not
as powerful as `solve` in Maple, and the way Mathematica handles
expressions with `Sum` also leaves something to be desired.