Tim,

all screwing around aside for a moment. I broadly agree with your
sentiments. However, there are also some issues with what you are
suggesting. And I mean to make these observations in all seriousness.

One of the reasons we have been rewriting things like ZZ and ZZ[x] is
that there has been an enormous amount of new research in these
directions recently. It's perhaps not appreciated by people outside of
number theory, but multiplying huge integers and polynomials is an
*important problem* in some parts of computational number theory.

I have the utmost respect for Lisp. It is an innovative language which
is still way ahead of its time. The original papers on Lisp are some
of the most important in Computer Science. They are still being mined
actively today. I also have a respect for the desire to produce
something worth passing on to our grandchildren. I see Lisp as being
precisely such a thing.

But what doesn't seem to have been appreciated by the "old dinosaurs",
is that much of the work in systems like Axiom and Maxima has simply
been superseded by more recent research. This is a significant problem
CAS's have. There is no way of producing something which will stand
for all time. The very work it relies on is superseded. This is
completely independent of changes in computer architecture, compiler
design, language evolution, and other transients. This is one of those
pure things. Algorithms for doing these things are simply better than
they were 30 years ago. The way we compute with these fundamental
objects has changed, for all time. No amount of care in the past could
have prevented that old work from being obsoleted by these new
algorithmic advances. So I just don't think the goals you have are
actually in any sense reasonable.

Now if we stop talking about completely pure things for a moment and
return to reality, we also find that computer architecture is
changing. Software that once ran, needs to be ported to the new
architectures to keep it running. So it has to be constantly
rewritten. With some care, we can mitigate such things, but they
cannot be avoided altogether. In fact the only thing which doesn't
change is the mathematics itself. As you say, sin(x) is timeless. But
it is a timeless mathematical function, not a timeless piece of
software. The latter simply doesn't exist.

Again, if you look at languages, these are evolving too. Even Lisp
evolves. We've had Common Lisp, Scheme, PTL Scheme (now Racket), and
numerous revisions of the Scheme Report. Lisp is having new features
added in response to new theoretical developments in computer
languages. All languages are. This means that eventually you want to
rewrite all your code. Now rewriting 100's of thousands of lines of
code is a major undertaking. So you have to add that cost to the
burden of "keeping up".

The point I am trying to make is that creating something timeless is
impossible. It is impossible to keep up with the rate of advance in
all these areas, even if we plan very carefully. I realise that maybe
Axiom tries to define its own language so that if Lisp changes, only a
smallish core needs changing. Well, Axiom's language will also suffer
from obsolescence, eventually, no matter how clever it is. Imagine if
you just get done documenting all of axiom and making it literate and
adding more mathematics, i.e. getting to a satisfactory point with
respect to all your project goals, and then there is a revolution in
computing which fundamentally changes the way hardware works,
algorithms work or languages work. Suppose we communicate with
computers of the future in a completely different way. Axiom will
never have reached the point of being useful because it always lagged
so far behind the current theoretical cutting edge that it actually
became obsolete before it ever received widespread use.

When I work on FLINT, I want my code to have a heavy influence on the
generations which follow, much as I see NTL as having had a heavy
influence on me. This is in fact why I made the decision to rewrite
the whole of FLINT completely from scratch about a year ago or so. I
was very unhappy with what was on record. I wanted it to be "right".
But I do not expect my software to be used by future generations. It
would be nice if it influenced its successors. That is all I hope for
it.

Instead of thinking that we should take the time to get everything
right now, I have a completely different perspective on this (leave
aside most of my comments in earlier posts above, which weren't
terribly serious). What I see instead is that the theoretical
algorithmic work (the timeless part of our enterprise) is actually
advancing *faster* than we can keep up, even writing crappy code. It
might surprise you to learn that there are significant theoretical
advances in arithmetic with large integers which have never been
implemented. This is despite the fact that for many, many years there
has been feverish effort to keep up. The same is true for linear
algebra and polynomial arithmetic too. No package out there reflects
the state-of-the-art in theoretical development. Just the other day I
believe I found a way to compute polynomial signatures asymptotically
faster. This may have to wait until next year for implementation, as
we simply have so much to do that there just isn't time to implement
this now.

If I look at projects like Maxima and Axiom, I am not sure I see them
keeping up. Are they? My understanding is that Maxima may influence
future generations of people dealing with symbolics. But I had a look
at what Maxima has to offer in my field, and I really didn't find
anything. What does Axiom offer? What theoretically timeless things
does it pass on to the next generation. Surely not that sin(x) is
computed correctly. My hand held calculator does that (modulo some of
the digits perhaps being unreliable, depending on the calculator).

I did try to understand the Axiom project. I downloaded the source
code and documentation. I'm afraid that it seemed really incomplete
and I couldn't understand much of it at all. I imagined that the
"literate programming" was supposed to make it so that anyone could
understand the code. Having looked at the Axiom project, I am
uncertain that we have the same concept of what literate programming
is. And if that is the case, then perhaps it is a very personal thing.
That is a concerning conclusion. Can you formalise the notion of
literate programming? Does it have a solid basis in theory?

What I think we can pass on to our grandchildren, what is timeless and
pure, is not a computer algebra system, but theoretical advances, i.e.
ideas. Even if Lisp passes into obscurity, it has still influenced
radically almost all modern languages. The ideas in those original
papers are timeless. They have value, not the original Lisp
implementation, nor any current one.

Sage on the other hand, I think, just takes the view, "I want
something useful, now". For some people, they want something useful
for their research. For others they want if for their teaching. For
others they want it to play with. For others, they want it as a
glorified calculator, or perhaps for modelling work. It means
different things to different people. I do not see it as an enterprise
which is necessarily trying to innovate in any of the areas of
language design, software engineering, program proving, symbolic
integration or any of these other "pure" areas. That doesn't mean such
innovations don't arise from time to time in Sage. But it isn't, as I
see it, the primary goal of such a project. Perhaps it shouldn't be.

Bill.

On Aug 31, 9:46 am, Tim Daly <d...@axiom-developer.org> wrote:
> > If I understand you correctly, you want to set the goal for Sage much
> > higher than just a free, open alternative to the Ma*s.
>
> > - Robert
>
> Yes, but why am I trying to do that?
>
> Computation mathematics is a new field of study, at least in the
> symbolic area.
> It is the child of the union of mathematics and computers. Unlike other
> forms
> of software, computational mathematics software (CMS) has the property that
> it will always be able to give timeless answers, making it useful forever.
>
> Being useful forever does not imply that the software survives forever.
> You can argue that this is good darwinian attrition. But CMS software is
> very hard to build and requires a great deal of very scarce expertise that
> can disappear at any time (e.g. changing jobs, being hired into a company
> like MapleSoft/Wolfram/Magma/etc., companies being bought or closed)
> When that happens, and it will, then that portion of the software becomes
> unmaintainable or unavailable.
>
> The natural response to dead software is to write new software. You can
> see this in CMS-land as there are over one hundred attempts at building
> CAS programs (I collected them at one point, similar to the Sage goal).
> But due to the expertise issue these programs don't get very far. Sage wants
> to rewrite the Trager/Bronstein integration but that seems unlikely as the
> required expertise (Bronstein) is dead and the code isn't documented (yet).
>
> Sage is trying to avoid the darwin problem by gluing together existing
> systems.
> This is a very clever idea, a "second generation" response.
>
> What I am trying to do is ask the question...
> "What does a computational mathematics system need to do to live forever?"
> in particular, in this forum,
> "What does Sage need to do to live forever?"
>
> Sage is exciting, fast moving, has no time to do it right, would die of
> documentation ossification, couldn't possibly prove anything (as if proofs
> are foreign to mathematics), needs to be released twice a day, is in a
> foot-race with the 4Ms for mind-share, needs quantity not quality, will
> let the next-generation-slubs document their work, is 3ns faster than
> M*, etc.
>
> I am one of the first generation dinosaurs trying to impart some of the
> lessons
> learned to the next generation. I am taking the long view, trying to
> figure out
> how to impart computational mathematics to my grandchildren. Will they still
> be writing new polynomial packages and arguing over ZZ? Will they have to
> watch yet another hundred threads discussion the same issues? Will they
> suggest
> that William Stein should move his comments to the flame thread? Or will
> they have
> a broad legacy of excellent CMS work upon which to build?
>
> My experience tells me that William will move on, python will move on, the
> funding will dry up, the students will be hired into real jobs and Sage
> will die
> of code rot as GCC/python/architecture/build-complexity/etc all work away
> at its foundations. The system will devolve into tracking down hard bugs in
> "other peoples code", people will find that hard without documentation
> and not worth doing because it isn't flashy. Suppose William had instead
> proposed that "Sage was a project to find and fix all the bugs in Maxima".
> How many people would join? Now imagine Barry Brightspot proposing
> "a project to find and fix all the bugs in Sage"....
>
> To those who work on Sage... Why? Do you just want to build yet-another-CAS?
> Do you just want a platform for your thesis work? Do you just want to
> write code that gets thrown away? Or would you rather have your name
> appear in the credits list of Sage-2090 as one of the Newtons of
> computational mathematics?
>
> I am advocating that Sage set its goals much higher than replacing the Ms.
> If you don't, then my experience tells me that the project will die. If
> you do
> then the project may die anyway but other people can build on the remains
> rather than from scratch. Or you just might have a formula for the
> long-term.
>
> What do *you* think needs to be done to make Sage live forever?
> I have thought about this question for a long time and I'm trying to
> pass it on.
> Your experience may tell you that my suggestions are wrong but you'll
> only be
> able to know after the fact and by then it will be too late.
>
> Anyway, I've said about all I want to say so I'm abandoning this topic.
> Good luck and thanks for all the fish.
>
> Tim Daly

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to