I think that changing Maxima to fit within the gnu world is not a useful (or
even meaningful) goal.
Many of the tools that are declared to be GPL are quite incomplete,
idiosyncratic (that is, they correspond to one person's view of the right
thing, regardless of other forces - perhaps the history of the emacs editor
is a case in point), unsupported, or supported only in a hacker context
requiring the downloading of many packages, repeatedly to get the right
versions of libraries, gcc, etc. Some are packaged with "installers" or the
equivalent, but not all. Unless a program is widely widely used and popular,
it never gets debugged. Math stuff is not very popular compared to, say,
graphics programs.
Many free programs are mutually incompatible, or compatible only in a
delicate or flakey way. While this is good for a pastry, it is bad for a
program. Many programs are significantly lacking in quality assurance. Some
people might claim that any program that can be compiled - if you know
enough about Makefile and such - is just fine. If you can't make that work,
then hire a programmer to help you. If you find a bug, great - fix it. If
you don't know perl and php and c++, then hire someone to fix it, or put it
on a list. And then someone will tell you it is not a bug, but a feature.
Of course you can encounter problems with commercial software too, so you
have to work with reliable suppliers when possible. So this leads to people
writing their own versions of whatever they need.
I don't understand your point about redundancy. Software evolves generally.
But sometimes it stops working, as we see when a new release of an operating
system (or a new version of GCL) breaks code. Having 2 large programs with
nearly identical specifications except one allows you to delete a character
by <backspace> and the other requires you to type <delete> seems to me to be
a waste of time. But I think you are perhaps arguing that Maxima, if it
overlaps Matlab/Octave, is redundant. I would rather argue that the essence
of Maxima and its competitors is that each aspires to be a "problem solving
environment". SAGE tries to lash all these programs (and numerics and ..)
together in a meta-CAS. So does Texmacs. SENAC is another example. These
are all deliberately redundant because the tools overlap. We don't really
know how to have a single design centrally organized to contain all
computational mechanisms and all proof methods and all knowledge, but at
least some of us would like to think about how that might happen. Even to
include all the information in all the technical journals ever published. So
how to go in that direction?... So if you say, oh, why not leave out a
numeric routine, the reaction I suspect of many people is - oh, if it is
useful why not put it IN?
I make frequent use of foreign functions in Lisp, and have been spending
time calling from Lisp into Microsoft .NET to use handwriting and speech
recognition. A recent message that says GCL now doesn't conform to some
foreign function interface (FFI) so we shouldn't use GCL is to me just the
wrong direction at this time. Going back to an older GCL (if that is a
solution) or going to some other lisp, would be better, in my view. So I
don't endorse writing (say) an FFT in Lisp if you have a really good one in
fortran. But if someone has a very good FFT in Lisp, eh, we could use that
too. (there is one, I think.)
No one knows for sure who uses Maxima, but there are no reasons to leave out
anything, given the state of programming environments today. Do you want
speech input? Do you want to insert a webcam into a maxima display? What
does it matter? Logical consistency is not even achievable in the realm of
math. Calculus students see log(| |) in the answers, but Maxima knows
about i*pi, and doesn't need absolute values. So students ask why Maxima is
wrong.
A technical comment: The idea that Maxima should communicate via pipes is, I
think, faulty. To do so is to condemn the interaction between programs to
be non-robust and slow. Pipes make sense for filtering character streams.
There are lots of better ways to communicate between processes, and just the
idea of introducing extra processes when a subroutine call would work -
well, it leads to new kinds of bugs.
Thanks for your long note; apologies for answering it at such length. And
of course feel free to disagree. You can of course write your own program
(branch of Maxima?) to do exactly what you want!
RJF
_____
From: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu]
On Behalf Of Yigal Weinstein
Sent: Friday, December 01, 2006 1:26 PM
To: maxima at math.utexas.edu
Subject: Re: [Maxima] Why numerics?
I think this post is exceptional in that it questions at the base level what
Maxima's role should be in the math/science domain for the end user.
I believe it would benefit the Maxima project if it were to refine its
statement of being in the wiki or main page or both from,
"Maxima is a full symbolic computation program. It is full featured doing
symbolic manipulation of polynomials, matrices, rational functions,
integration, Todd-coxeter, graphing, bigfloats. It has a symbolic debugger
source level debugger for maxima code. Maxima is based on the original
Macsyma developed at MIT in the 1970's. It is quite reliable, and has good
garbage collection, and no memory leaks. It comes with hundreds of self
tests."
to better fit itself within the gnu world.
First to give a small argument as to what and why such areas should be
defined and openly displayed. The gnu/gpl world is huge. There are many
people who believe in it for personal reasons or who are making a living as
career programmers, scientists, and engineers by using it. The scientific
gnu community is huge, from python, gfortran, gcc, octave, maxima, axiom,
haskell, latex this list goes on and on, and all of these projects are
contributing in their way to the tools available to the mathematician,
scientist, and engineer, who can use these tools to help with their
projects. If the developers of the tools recognize that the other tools are
also being developed and act upon this fact there is a strong probability
that all tools will work better together and that the tools will be more
useful for a given user.
Now a few points:
Should we loathe redundancy? That is, should we ditch the screwdriver
because the drill can do the same job? Probably not, and this is because
they each have a niche they are best suited for. Such a niche is perhaps
even unknown to the developers, at least initially, but becomes clear in an
attempt at using a given tool(s) for a project. Now screwdrivers, and
drills are not the best analogy to software because while software evolves,
usually, the screwdriver you use does not, usually. My point remains
however, software redundancy is not necessarily redundancy as most tools are
best suited for a given task even if there are other tools that can
accomplish the same goal. How redundant should Maxima be - in the domain of
gnu? ( Note there is always the point to be made that the drill may break
and so in order that we are not left stranded keeping the screwdriver is a
good reasonable idea - but I am not interested in this point right here)
This is a point for Maxima developers to define and redefine - but I think a
stab at this could help everyone involved.
So who will use Maxima and what is Maxima trying to be? Is this software
primarily intended for the student studying intro. calculus, the
computational chemist or physicist, or the algebraist? While one could say
it is for everyone to do all sorts of math "stuff" with, the problem of this
assessment lies with what else exists for these people to solve the same
problem with. I know Maxima doesn't make my coffee, at least at present,
but should I develop a program for it to do so? The point to be made is,
Maxima should have a clear explicit objective that includes the intended
user(s) base.
The argument that because Maple, or Mathematica can do something, Maxima
should also, is very faulty. Maxima is in a different domain of software to
these proprietary beasts (, although Maple does have LAPAC routines etc
built in etc.). Maxima has at its disposal all of the gnu domain. Whether
Maxima's developers choose to create redundancies by creating packages
specially for some numerical task etc. is not at issue until Maxima's
purpose is set out. Whether redundancies or easy to use pipes to other gnu
software - such as octave, and R - or both are created is at the mercy of
the developers. However the intended use of Maxima if discussed and stated
explicitly would help the active developer into deciding whether a pipe or a
package was more appropriate or if perhaps both were for giving Maxima a
particular ability.
To conclude the original post and responses point to an observed - whether
it really exists is not at issue - vagueness of purpose for Maxima. This
could be remedied by a short discussion by the developers and an ad hoc
statement created which upon criticism could easily be ameliorated.
My apologies for this piece of writing was not well organized and is rather
long and comes from only a user and not a developer of Maxima but I could
not resist writing it.
Yigal