Hacker News new | past | comments | ask | show | jobs | submit login
Mathics - A free, light-weight alternative to Mathematica with support for Sage (mathics.org)
189 points by clockwork_189 on June 5, 2012 | hide | past | favorite | 57 comments



Sad that once more the most upvoted comment is negative. Congratulations for attacking a problem like this one.


How do you know how many upvotes a comment has?


Aren't HN comments sorted in order of popularity by votes? Is the top comment not the highest upvoted?

I don't know, but this is what I've always assumed.


Last I heard (and I'm no authority on the subject), HN uses a sorting algorithm that incorporates many variables, including the age of the post, number of upvotes, reputation of the commenter, etc.


    Sum[x^2,{x,1,y}]-y*(y+1)*(2*y+1)/6
mathematica correctly handles this:

    $ math
    Mathematica 8.0 for Mac OS X x86 (64-bit)
    Copyright 1988-2010 Wolfram Research, Inc.

    In[1]:= Sum[x^2,{x,1,y}]-y*(y+1)*(2*y+1)/6

    Out[1]= 0
but mathics bombs out with error

    Sum::iterb: Iterator does not have appropriate bounds.
    Sum::iterb: Iterator does not have appropriate bounds.


I'm sure it will get better with time. It's trying to catch up with a huge software product that has hundreds if not thousands of professional engineers working full time on it. You should file a bug report.


Could you provide a citation that Mathematica has "if not thousands of professional engineers working full time on it", please? I also find the claims of 100s dubious. But I'm interested.


Wikipedia.org states that Wolfram Research has 400+ employees. Given typical software company staffing levels, they probably have apx 100 people working on product development.

For comparison, similar software companies include MathWorks, the publishers of Matlab, with 2,400 employees and SAS Institute with 12,000 employees.


So just to ballpark this, if the average salary is $50,000 and the total cost of employment is $100,000 per year that makes for a run rate of $40 million per year. Over 24 years, assuming average no of employees was half that, that's about $500 million in sunk costs.

Totally made up numbers, but any chance I'm within a factor of 2? Posted only so somebody who knows what they're talking about can ridicule me with actually realistic numbers.


It's probably mor like 1/2 that (engineers). I live in Champaign (Wolfram's HQ), and know several current and former employees.

Mathematica development is split into two main groups. The Math Kernel group has about 20-30 engineers, and the FE group is around 10-15. There's a handfull of developers floating around that work on mathlink (a communication lib that allows external apps to hook into the math kernel).

Overall, they're actually a fairly efficient company. I can't speak to the current state of their finances, but I do know that about ten years ago (just after Methematica 5) they were running at about $24M gross anual revenue for the U.S, about $30M for asia, and $12M for U.K.


In addition to that, Mathematica has been in continuous development for over 24 years. So give Mathics a little time to catch up :)


In addition to that, Stephen Wolfram himself is pretty smart even if he behaves like a dick.


That low number just makes Mathematica all the more impressive, especially considering that I wasn't nearly as impressed with my brief experience with Matlab. On the other hand, I use neither regularly, and SAS and MathWorks probably do other stuff too :P


I am an undergraduate physics student, and we are forced to use Mathematica on a weekly basis. I avoid it whenever possible, but this is what I've been looking for. Awesome!


Why do you avoid it, because it is proprietary?

Because mathematica is actually really a pretty great math program.


Yeah, mostly because it is proprietary and crashes often (Mathematica 8 especially).

The vast majority of students in my program are non-programmers. The only 'programming language' they know is mathematica which I think is a real shame.

Worse than that is that most of them have developed a dependence on Mathematica; without it they are severely limited in what they can do. We are provided with free copies (student version), but once we graduate will have to pay the full price if we want to continue using it.

I guess I just don't like having my abilities to solve problems tied to an expensive, closed source program. I do admit, it is very powerful.


> The only 'programming language' they know is mathematica which I think is a real shame.

Mathematica is a real functional programming language. It's a lisp with CamelCase builtins and consistent naming. And that's without any of its math goodness. It has superb documentation and a huge standard library. If you master it, you can master any lisp with a simple translator. matlab is a toy by comparison.


A key concepts beyond Mathematica are pattern matching and rule-based programming, but not a functional programming.

Yes, it has lambdas and first-class functions, but that's it. What about closures, for example? Therefore one would better not call Mathematica "a real functional programming language".

BTW, rule-based paradigm and pattern matching is a standard feature of languages from Lisp family, e.g. Scheme. From that point of view Mathematica is not something unique.


It is a feature of those systems, but not the foundation.

Mathematica is a term-rewriting system. This is a fundamentally different model of computation from the lambda calculus.

There are many practical consequences of this, in terms of the design of individual language constructs, and in how the language is used generally.


There are many practical consequences of this, in terms of the design of individual language constructs, and in how the language is used generally.

That's interesting. Can you say what some of these consequences are?


The order of evaluation is a bit different than Lisp. It's perhaps more like programming mostly with Lisp macros.


Have you used Sage? It's not as tight as Mathmatica, but it's pretty solid and easy to jump in if you know python.


At university in the "signal processing" lecture, I solved all exercises in Python while most students used MatLab (which was recommended by the lecturer). I just did it because I like Python, and expected my solutions to be clumsier and more "lowlevel". But when we compared our programs, I was surprised that MatLab didn't offer any more useful building blocks (libraries/functions) than Python, at least for our tasks at hand. And the Python code was quite clear, but that's probably a matter of taste.

If it's about programming and math, Python really plays its strengths: Clean syntax, functional programming features, numpy, sympy, linalg, etc.


Julia looks promising as a Matlab replacement: http://julialang.org/


And JavaScript is looking good for casual numerical analysis, mostly because you can very easily create UIs with dynamic plots that you can publish.


I really don't understand this kind of aversion to proprietary programs. Mathematica is a high quality program with excellent documentation (I cannot comment on crashes - it never crashed on my but I'm not using it that extensively). Maintaining and improving such product takes a lot of effort that should be paid for. Student version is really inexpensive at $139 - most books cost comparable sums of money. Once you get a job with real income, you can either ask your employer to buy it for you or can afford to buy it yourself.

As author(s) of Mathics will surely discover very soon, the devil is in details. There are lots of corner cases and improvement opportunities that takes many man-years to implement. It may seem easy to get 50% of functionality quickly; getting the other half is much trickier.


The general problem with proprietary software in sciences (not just math) is that it cuts the chain of replicability and confirmability. Unless you have the source (in a human-readable form) and have the right to compile it on your own, this is a shaky ground to rely scientifiy results on.

This is not an issue if you use that software for dicovering stuff. But it is a huge problem for e.g. mathematical proofs, or statistical analysis in other fields.

Note that I'm not saying that proprietary software has more bugs. But it's a problem if your result depends on using a black-box whose creators hide their implementation from you. Also, even if your may read their code, this is worthless unless you are allowed to compile your own version from that.

Also note that the same issue exists with hardware, but the question whether your processor adds and multiplies correctly is on a totally different level than whether complex algorithms have been implemented correctly.


Do you think the world would be better off if Mathematica, Matlab, SPSS etc didn't exist?

In reality, they make experiments more repeatable, not less. The real offender is the in-house, proprietary software developed by individual research groups. It is almost never open sourced. And it is far more likely to be riddled with bugs.

Computer experiments are just that: experiments. Any real researcher employs multiple methods to confirm their results.


> Do you think the world would be better off if Mathematica, Matlab, SPSS etc didn't exist?

No, but I will celebrate a decent open source alternative, which is what the root was probably suggesting as well. Mathematica is great as an entry software - much like MS Word for word processing. But having LibreOffice is good.


I'm all for open source.

I just don't think the reproducibility of experiments is a valid argument against commercial scientific software.

It's an age-old purist argument. In the meantime, people have been getting stuff done. And without those tools, the "huge problem" would be even huge-er.

The real problem isn't reproducibility, it is extensibility. The development agenda isn't under your control. So if you get to the edge of a field, you might find you hit a wall.


> The real problem isn't reproducibility, it is extensibility

I think its both. Extensibility is obviously an issue. But so is extensibility, I will give two reasons for it:

1. Easy reproducibility is necessary for extensibility. Firstly, academia is not very good at publishing their tools or their codebases. We have given so much weight to the concept behind the implementations and not the implementations themselves, that most people skip publishing implementations. What it means is that the next research group now has to start from scratch in implementing the concepts before they can think of extending the work. Reproducibility is not only to verify previously reported results, but also to create a starting point for further work. Secondly, given that the tools that the researcher is using is proprietary, the trend is to make it closed source. It may be because the tool is not ubiquitous and hence the researcher sees no point in distributing his/her implementations - or because he had not followed any guidelines (or in case of Matlab and Mathematica - they didn't exist/were-not-popular). He might not be sure about his implementations, and hence cannot publish them.

2. Reproducibility has always been the base for science. I don't need to trust the work a random researcher that I don't personally know. I can just verify his/her findings myself. The requirement of commercial software creates a huge monetary barrier in this. It is wasteful of me to buy a licence for a simple verification that I am not planning to extend. Given that non-academic licenses of most of these softwares are insanely expensive, it makes this verification to be confined to researchers from big research groups in large companies.


At least mathematicas notebook-format and matlabs .m is plain text and in worst case readable enough to convert to another language.

Not being plain text is usually my biggest gripe with proprietary software, they don't cooperate with source control systems and are completely useless without the software.


Yeah, but the standard (non-student) version is much more expensive. $2,495.00

http://store.wolfram.com/view/app/mathematica/


us$139 can be pretty steep for students in third world countries.


I can't run Mathematica code at home without paying a licence. I can't run it at work without convincing my employer to pay the licence. Actually, I can't run a single line of Mathematica code right now. I can't share it with my friends (to edit, modify, etc).

One of Mathematica's authors offers an unexpected non-solution to that:

http://www.reddit.com/r/programming/comments/7gue5/the_incre...

"You know it's only $139 for students for the full Mathematica, and if you're not a student you can always pirate it."

Wolfram is aware of that issue, they haven't found a solution.

http://www.reddit.com/r/IAmA/comments/tmutz/stephen_wolfram_...

"But we're still trying to figure out the best ways to make Mathematica as a language be as fully open as possible"

When given the tradeoff between keeping their company running and risk losing language integrity, they rather keep the company running. That's fine for me, but that means that in the meantime I'd use something else. Mathics might change that.


They did try to solve that with the Home edition version, it is a bit more than 2x more expensive than the student version but it does solve running mathematica for cheaper as long as you aren't using it for work.


I have tried open-source (octave,mathics) and closed-source (matlab, mathematica, maple) and I can say that nothing comes close to mathematica. In our physics lab, mathematica has truly changed our entire workflow, making it a lot simpler to focus on the real crux of the problem; instead of dawdling around in symbolic manipulation.

I'm not sure what they are using in undergraduate courses, but I think the toolchain by Wolfram has really advanced the way scientists work. It's far from perfect, but it is an amazing tool.


I love a lot of things about Mathematica. Its syntax is not one of them.


I think Mathematica is designed more for engineering/non programming folks. You would think this shouldn't affect people with programming backgrounds, but I also have felt Mathematica seems much harder to learn than some other languages.


What about Maxima[1]? I've used it for the last 7 years when I needed mathematical operations.

Its not only gratis, its libre.

[1] http://maxima.sourceforge.net/


Interesting attempt, but it is easy to break.

Try

Plot[Sin[x], {x, -5, 200}]

The plot is all over the place. In Mathematica it is a smooth sine wave.

You can put the same input into Wolfram Alpha and see how it looks there.


>The programming language of Mathics is meant to resemble Wolfram's famous Mathematica® as much as possible. //

Sounds,like the sort of thing an opposition lawyer would bring up in IP proceedings in a "so you copied the implementation and interface" sort of way ...


Octave has been consciously MATLAB-like for a couple of decades now http://www.gnu.org/software/octave/


That didn't work out so well for Oracle.


It would be great if it would allow R functions; it's a much better engine for stats than Sage.


Sage covers many things, including symbolic algebra. TMK R does not handle those well ...


Absolutely true. But being able to invoke both would make the software incredibly powerful.


You can invoke R from Sage. http://tutorial.sagenb.org/home/pub/4/


For numeric computations on statistical data I would recommend to keep using R. R does not do symbolic algebra, which is what makes Mathematica so impressive.


If you can use python libraries there are a few libraries which allow you to use R functions through python, so that may be an option.

Edit:

Here they are:

http://rpy.sourceforge.net/rpy2.html http://rpy.sourceforge.net/rpy.html


This looks neat, but isn't it contributing to the fragmentation of the python numerical ecosystem? We already have Numpy/Scipy/SAGE/SymPy and probably more, do we really need yet another package?


It's built on top of Sage, which is built on top of SciPy.

There is a need for a Mathematica-like syntax parser.

(Edited)


Oh man this is fantastic. Where was this when I was taking linear algebra?


The use online link is 404 ing, not sure if it's just for me, a pitty I would have liked to have seen that page.


I can't seem to find the license for the source code anywhere, that is a bit of a bummer.


It's GPL (click on the source code link and scroll down).


The latency kills the fun. But it is free, what can you say!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: