Hi,

Here is more on the experiment in symbolic computation. Some results and 
timing are given in the README.

https://github.com/jlapeyre/SJulia

The focus is still on a Mathematica-like language, although I think it's 
possible and desirable to write routines with an interface so that they can 
be used in a different way.

The results are encouraging. Many things are relatively fast compared to 
other software. (I consider half as fast as Mathematica 3 in many cases to 
be very fast) Despite the large number of functions, a coherent language to 
build on is not there yet. There is a language and you can write functions 
easily, but it needs a lot of work.

The main thing  I have been looking at recently is allocation, which is 
relatively slow (compared to Mathematica and Maxima, not to python 
projects).  This shows up in particular when creating a large number of 
small expressions.  I don't know how Mathematica does it, but in Maxima 
creating an expression is it is little more than creating a a few cons 
cells. In SJulia each expression has a Dict containing the unbound 
variables that appear in it. This slows down creating an empty expression 
by somewhat less than a factor of two. But, even eliminating this, 
allocation is a bit slow. Allocation is not always a big factor in 
performance. For many reasonable tasks, SJulia is faster (sometimes much 
faster) than Maxima and sometimes as fast as Mathematica 3. (18 years old, 
but a milestone for Mma after about 10 years as a commercial product.)

To reiterate (I think I said this), I think there is a big need for 
something like this code, and Julia is by far the best choice for 
implementing it. Maxima is perhaps the closest open source project. But, it 
has many problems, for instance the CL ecosystem (compared to Julia, this 
is a really big deal), and a heterogeneous, very old code base.

I was never convinced that the Sage model would be useful. I'm not sure 
about Python in general, but I think many of the arguments for Julia 
compared to python apply. Eg, Implementing Mma-like expressions using a 
hierarchy of types seems difficult. Also, there is far more overlap between 
SJulia (Mma-like) needs and Julia, than python (and certainly CL). Mathics, 
as the developers admit, is very slow. It may have some good ideas (but the 
code is GPL).  I don't have enough experience to compare SJulia well with 
SymPy.  SymPy is 100 times slower with the one task I benchmarked. But, 
there are so many unknowns, that I can't draw any conclusions yet.

--John


Reply via email to