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
