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