77 comments

[ 2.5 ms ] story [ 126 ms ] thread
Another option is octave.

https://www.gnu.org/software/octave/

I've only used it a bit, but when I did it was adequate. Not sure how this compares to Mathics overall in terms of functionality, footprint though.

Octave is not a computer algebra system, so it's a bit different than this.
(comment deleted)
Sage / Sagecloud is quite popular in academics in the Czech Republic.
Yes bug Sage is weird. It's a sewed together giant of multiple parts, and the seams are quite apparent. It's also hard to install and get started with.
This is not true anymore. In Windows it might be, but on Mac and Linux it's very straightforward.
Hard to install? It's one command ("pacman -S sagemath") in Arch and three commands in Ubuntu.

Hard to get started with, I can agree with. Despite there being several tutorials, it's not as easy to start using out of the box as Mathematica.

Compared to what, though?
Sage is fantastic! I used it for math research for years; it's python, and brings together many of the best open source math projects. So yeah, there are seams, but the seams are far less bad than (say) writing your own translation layer between the various components. And Sage has a large (and always growing) base of native functionality, as well.

In fact, I'm pretty confused as to why someone would go to the trouble of trying to write a new, python-based mathematica alternative with Sage already quite established and equally free. (I guess keeping the Mathematica language is a motivation for someone who's tied to the mathematica world already, but I've always found it to be a write-only language...)

If you're looking for a mature alternative, Maxima CAS (http://maxima.sourceforge.net/) is worth looking into. It doesn't aim for syntax compatibility with Mathematica as this does, but it is quite usable and fast.
It's also available on Android.

I used Maxima during my engineering course and found it rather useful for checking my differentiation and integration algebra.

Genuine question - what is the use of all these versus something like R or Pandas that is actually usable in production as well.

What is missing in R/Pandas that makes people choose other pieces of software that does something very similar? Commercial versions of software probably has an edge in support/performance/libraries...Or (as with Simulink ) provides a very specific piece of functionality or integration.

But what is the general use case? Even Mathworks has acknowledged the need to integrate with the huge R community out there - http://blog.wolfram.com/2013/05/22/why-would-a-mathematica-u...

Well R and Pandas cover data analysis for the most part, while is is a computer algebra system? Seems like apples to oranges, really more comparable to sage/mathematica.
What about http://rsymbolic.org and obviously symPy ?
> symPy ?

Uhm... it says right at the top of the linked website that sympy is used as the backend.

True - but the question stands. Why use it in the Mathematica way/syntax than by itself.

Remember I'm not qualifying the value of this project as a replacement to Mathematica. I'm asking who is the segment bthat would use this as opposed to going directly to symPy or R.

I think you're right that Rymbolic + sympy are good comparisons as well.
Pandas doesn't really do symbolic computation... at least for me that is 90% of the utility of Mathematica (Maple on the other hand....)
Yeah I completely agree, I've yet to use anything as good as Mathematica for symbolic algebra/computation. Not quite sure what you're comment about Maple means though, would you mind expanding?
Barrier of entry would be what I would consider the primary use case for using all of these vs Pandas and R.

If we look at Mathics only, it features a Mathematica compatible syntax which allows users familiar with the syntax to be up, running and productive with the tool much quicker.

Mathics also provides a notebook, however others do as well as optional downloads. R has RStudio, and you can use Jupyter for Pandas.

Interesting. But then my question is how big is the user base that WANTS to use Mathematica but cannot AFFORD it? Because for a first time user just hunting for a symbolic math, the buy in might not be there.
As the documentation says "Mathics will probably never have the power to compete with Mathematica® in industrial applications; yet, it might be an interesting alternative for educational purposes.". Moreover unlike Mathematica, anyone can examine the code, a definite plus for students.
that doesn't make too much sense because many, many universities already hold site licenses for mathematica where it is either free or very cheap.
Most students in the world are not at universities
All Raspberry Pi's have Mathematica licenses, so there's one cheap way in.
The value of Mathematica is pretty straightforward. The language it provides is nothing special, but the scientific and mathematic routines, along with the symbolic support, put it in a class by itself- no open source package I've seen does root finding and other similar processes as effectively.

The symbolic stuff is pretty cool too. Years ago I wrote "pyml" which made all the Mathematica features available in Python via a C language bridge. Whereas in scipy/numpy you can find the eigenvectors of a numeric array (a matrix of floats), in Mathematica, you can find the eigenvectors of a symbolic array (a matrix containing terms like x-1, y-5, etc).

And yet Mathematica is not nearly as effective as math when done by pencil, paper, and a trained mathematician.

The value of maths is 1) it's "open-source", 2) it's free to use, 3) if you want to switch from one module to another (say, number theory to category theory) you are able to do so using the same tools (pencil, paper, and a trained mathematician), and so long as the two "modules" are inter-operable it flows so beautifully. If they are not, then you get to try to figure out ways to make them so.

That, imho, is why I think all these open source packages keep popping up. Math itself is the ultimate "open source". And in doing math one is not limited to command line interface, left-to-right, line-by-line tools. Compare the experience of writing out a derivative in LaTeX vs on paper. LaTeX is an exercise in causing pain and frustration to oneself. On paper, it feels as though you're writing music.

Or I can use Mathematica to get my derivative, plug it into my numerical optimization routine and not have to think about it again. That's a much better feeling to me.
Yes, I totally agree that Mathematica (other projects) can be the way to go when getting work done. No argument there.
(comment deleted)
you are describing a very limited view of what it means to do mathematics. and no, all of mathematics is not open source. much of it is locked behind institutional barriers.

also, i don't understand this fervent attitude that something must be free and open source to be useful. a lot of open source software is complete trash. there is a reason why people pay to use tools like matlab, labview, and mathematica. it is because their value exceeds their cost.

i believe the phrase is "software is only free if your time is worthless". There are plenty of counterexamples to this (where there is free software that greatly increases the productivity of the user, without a great deal of time spent moving up the learning curve).

In the case of Mathematica there is a ton that is "locked away behind institution barriers". Mathematica contains millions of lines of code dedicated to implementing clever algorithms for making their root finder and other things work really, really well. but those are all internal source code lines within the company.

I've seen this play out across multiple industries. A good example is SAS and R. There are certain parts of FDA new drug applications that require, specifically, the SAS implementation of a statistical routine, and you can't use R because it doesn't implement the routine in a bit-identical manner. However, a spokesperson from SAS once said, "You'd never fly in an airplane designed by open source software" to which Boeing responded "we use open source software to design our airplanes"

I'm replying a little late and I'm not sure if you'll see it, but do you have a source for that quote? That's amazing.
A lot of (free | non-free) software is complete trash.

The advantage of free software is that it never dies; someone can always, if they want/need, pick it up and use/extend it. You don't have to hope a company does go bust, and pay them for the product and/or support, and keep upgrading your devices to newer, still supported versions. Ok, some of that applies to free software but if you want to you could stick with the old versions, or make changes yourself, or pay someone to. These avenues just aren't open with closed source software.

Some people won't be able to afford the commercial products, and the free ones might not be as good/polished but if they get (most of) the job done then they fill a niche.

>The advantage of free software is that it never dies; someone can always, if they want/need, pick it up and use/extend it.

That's a theoretical advantage. In practice lots of things needs to be true for this to happen, even if there's a large user based depending on an abandoned open source program: the code needs to be easily approachable, there should be people willing to extend it who also have the required programming skills etc.

Tons of projects that had lots of users have died or languished.

Heck, even something as popular as GTK+ -- the project is still available, but development has stalled to a halt, and there was a cry of despair from the maintainer that it was just one (one) person doing 90% of the work. If that can happen to GTK+ which is used by millions and powers Gnome, GIMP etc, consider all the other stuff.

Besides, this same theoretical advantage ("never tries") in theory is also potentially true for a proprietary product. Even if the parent company folds, the code and product could always be bought and revived in the future.

I should have said: "And yet Mathematica is <sometimes> not nearly as effective as math when done by pencil, paper, and a trained mathematician."

I wasn't meaning to imply that Mathematica has no value or has little value. It's indeed awesome both productivity wise and for just enjoying the exercise of doing math.

I was trying, and doing a poor job, to give reasons why pencil and paper has value. Not to the exclusion of Mathematica or more so than Mathematica. Just, that it still has tons of value. And that, maybe that is what these open source projects are trying to recreate that Mathematica has not yet captured.

I personally do enjoy sometimes doing written math. I manually matrix-multiplied the three axis rotation functions (see the three one-axis rotation functions, and the result of multiplying them) https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_d...) But of course these days I just let the computer do rotations for me.

I think the interesting product idea here would be something I've never seen: a canvas on a tablet that acts like pencil and paper (drawing) but also "helps" by recognizing what you write, converting it to a formal language, and validating/verifying it. sort of the mathematica notebook, but more like a notepad

I like Mathematica and find it a sometimes, very useful tool. I've taken over two dozen University courses in mathematics, including topology, abstract algebra, analysis, combinatorics, number theory, etc. Yet, even simply equations can stump my rather meager ability to solve them and this is where Mathematica is so useful. You can use it interactively to quickly traverse the difficult ground on the way to insight or a solution about your problems.

Consider the simple looking problem, find the definite integral of sin(x^2) from 0 to positive infinity. This is a real expression that that occurs naturally in the study of electromagnetism.

Solving this is beyond the ability of most practicing mathematicians to just sit down and noodle out an answer. The integral in known as the Fresnel integral and has the pretty answer of sqrt(pi/2)/2. Mathematica gives me the answer in just a second.

Question - have you tried using anything like symPy directly. I'm curious to know your opinion (clearly a power user) of how it would compare.
Yes, I've tried SageMath, which is said to build on sympy as well as numpy, scipy, R, maxima, and other math related projects. It's really quite capable considering that it is an open source project. It supports notebooks, like Mathematica, and the programming is done in Python, which is much more widely known that the Mathematica programming language. I like it's wide open nature and the programming in Python. However, there are still some rough spots where the different technologies come together. Mathematica on the other hand is expensive but it is very polished.

SageMath, http://www.sagemath.org, is perfect for those that can't afford Mathematica or want to leverage their existing knowledge of Python. It solves the Fresnel Integral too. Please consider supporting the SageMath project.

I use mathematica to do engineering, not math. But there are definitely people who do recreational mathematics with computers, and some of them have shown things that can't be done with pencil and paper. The proof for the four color theorem is a nice example of this. Computers are useful tools for doing things we can't execute quickly by hand, or cleverly approximate/solve through more elegant methods.
>And yet Mathematica is not nearly as effective as math when done by pencil, paper, and a trained mathematician.

You'd be surprised. Actually it's not even close.

Good like calculating FFT, working with large primes, etc, with pen and power for one...

Lots of working research mathematicians use Mathematica for a reason.
Well, that may be because scipy and numpy are not intended for symbolic computation. If you want to do this, use a piece of Software that is intended for those things. SageMath would be an option.

The true values of Mathematica are it’s Solve-Algorithms and it’s Simplification-Algorithms. They did a heap fine job there.

(comment deleted)
In addition to what others have said, Mathematicas's graphics abilities make R feel like a TI-83 graphing calculator. (When was the last time you had to discuss JPEG as a "graphics device?")

The documentation is also incredibly better - every symbol/function has examples that have already been run so you can scan for a result that looks like what you need and see how they did it, and then play with the example in the documentation notebook.

> Even Mathworks has acknowledged the need to integrate with the huge R community out there -

You mean Mathematica, yes?

Ease of use.

Python is hard to learn to use for math. It requires a strong programming and math background.

Mathematica's syntax is more natural and it doesn't require learning numerous different packages and figuring out how to stitch them together - it just works. Graphing is more convenient, too.

Symbolic manipulation. That's the only reason Mathematica is used in academia. If you're in the academia and want to do numeric computations you would use something like R or Matlab.
That, and Mathematica's NDSolve is also quite hard to beat.
Is sympy ever going to be able to do symbolic Padé approximation? That's the only thing keeping me from dumping Mathematica.
Thanks for posting this, just for our awareness.

The interface would be a lot easier to use if it had an integrated help system (help function?) and tab completion.

Or you could just use the real thing for free at https://www.open.wolframcloud.com/
"Mathics is released under the GNU General Public License (GPL)."

There may be a few other differences you are not considering.

That's only free for demo usage. $120/yr for the lowest tier for non-trivial/toy projects.
Mathematica is a very complex piece of software. As an ex-physicist there's no way I would trust this completely unknown open source alternative.
But it's open source, and you can review what you'd like. You're unable to do that with Mathematica.
Except that's not what we're being paid for and frankly, most physicists don't have time or knowledge to do that (our reality is "publish or perish", unfortunately).
I have other things to do with my life, fortunately.
You shouldn't trust Mathematica either. It has had bugs in the past [0].

Also it didn't have a proper "undo" feature until a year or so ago, which is pretty embarrassing.

[0] http://www.ams.org/notices/201410/rnoti-p1249.pdf

I don't think his point was "Mathematica contains zero bugs".
My point was "this piece of software surely has more bugs than Mathematica". What's your point? That because they both have a non-zero number of bugs we should be equally suspicious of both?
> My point was "this piece of software surely has more bugs than Mathematica".

It sounded like your point was "I trust Mathematica, but not this open-source CAS". Otherwise you would have just said "I don't trust CASs".

The idea of Mathics is great - open-source, in-the-browser Mathematica clone - unfortunately the implementation is still sorely lacking. Last time I tried it (admittedly fairly long ago), even simple stuff just didn't work: https://github.com/mathics/Mathics/issues/260
Mathics was abandoned a few years ago when the author got a job working on ... Take a guess as to what
GitHub shows significant activity in 2015, 2016:

https://github.com/mathics/Mathics/graphs/contributors

It looks like sn6uv (Angus Griffith "a Mathematician and Programmer from Sydney Australia") has picked up the baton ...

That's right. Mathics is still maintained. There are currently two of us working on it. The last release was v0.9 in March this year.