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.
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.
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.
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.
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.
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.
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.
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"
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.
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.
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.
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.
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.
The web interface does have inbuilt docs. Code introspection and tab completion are coming as part of the new interface (in progress) see https://github.com/mathics/IMathics
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).
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?
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
77 comments
[ 2.5 ms ] story [ 126 ms ] threadHaving spent time learning the syntax of Mathematica, this seems like a nice interface to SymPy.
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.
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.
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...)
I used Maxima during my engineering course and found it rather useful for checking my differentiation and integration algebra.
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...
Uhm... it says right at the top of the linked website that sympy is used as the backend.
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.
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.
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).
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.
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.
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"
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.
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 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 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
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.
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.
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...
The true values of Mathematica are it’s Solve-Algorithms and it’s Simplification-Algorithms. They did a heap fine job there.
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.
You mean Mathematica, yes?
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.
The interface would be a lot easier to use if it had an integrated help system (help function?) and tab completion.
There may be a few other differences you are not considering.
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
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".
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 ...