Mathics: A free, open-source alternative to Mathematica
mathics.org
mathics.org
Based on an amazing showcase[1] Mathematica is right at the top of my list of languages to learn if it (and at least some of the surrounding tooling) ever becomes open source. I wonder how many of those examples would give useful results in Mathics, or what their equivalents would be.
> https://www.wolfram.com/mathematica/pricing/home-hobby/
These prices are not cheap, but affordable if you are serious about your hobby.
Mathematica could be so much more, but basically until Stephen dies, it will remain an academic mathematical tool. It’s a complete coin flip as to when he dies the company will collapse or thrive, but it’s just so far away from anything they have plans for at the moment that it’s just impossible to guess.
At least there's a minimized version in Raspbian. It ran fine on an old B model, snappy enough to play around.
I understand that Wolfram made unrealistic agreements with the original programmers, incompatible with growing a large organization to support his evolving vision for Mathematica. Rather than renegotiating, he attempted a maneuver that did not survive a court challenge. The original programmers are now rich.
I cannot find any account of this on the web. There's an unrelated "Fields medalist car accident" that I again know from first-hand accounts, that also has no trace on the web. Huh.
So if anyone's wondering, this post does seem to be based on something, even if it's not easily verifiable.
I don't know here that "not easily verifiable" is deliberate, but it could be.
In the case of the Fields Medalist, one can read in major publications that they engaged a PR firm. Those articles don't specifically spell out sanitizing the web. If one already knows every detail of the event in question (in my case, confirmation includes overhearing him express concerns about a wrongful death lawsuit), an internet search finds many accounts relaying a cover story, and a single forum comment that correctly describes the event. That comment was apparently beyond the PR firm's reach.
Mathematica is a prime, tender and juicy target for modern reverse engineering tools.
That's not true: here is the pricing for the Home and Hobby licenses:
> https://www.wolfram.com/mathematica/pricing/home-hobby/
These prices are not cheap, but affordable if you are serious about your hobby.
The biggest thing missing from SageMath is a step by step solver. (Edit to add a caveat, I'm sure many professionals depend on minutiae of one or the other)
Feature-wise I'd say Sage has more Mathematica functionality than Octave does for MATLAB. Sage is not trying to be compatible however presumably it wouldn't be that hard if the functionality is there?
Sage is a bit of a Frankenstein though
Advanced Expression Manipulation > Prevent expression evaluation: https://docs.sympy.org/latest/tutorials/intro-tutorial/manip...
> There are generally two ways to prevent the evaluation, either pass an evaluate=False parameter while constructing the expression, or create an evaluation stopper by wrapping the expression with UnevaluatedExpr.
From "disabling automatic simplification in sympy" https://stackoverflow.com/a/48847102 :
> A simpler way to disable automatic evaluation is to use context manager evaluate. For example,
from sympy.core.evaluate import evaluate
from sympy.abc import x,y,z
with evaluate(False):
print(x/x)
sage.symbolic.expression.Expression.unhold() and `hold=True`:
https://doc.sagemath.org/html/en/reference/calculus/sage/sym...IIRC there is a Wolfram Jupyter kernel?
WolframResearch/WolframLanguageForJupyter: https://github.com/WolframResearch/WolframLanguageForJupyter
mathics/IMathics is the Jupyter kernel for mathics: https://github.com/mathics/IMathics@main#egg=imathics
#pip install jupyter_console imathics
#conda install -c conda-forge -y jupyter_console jupyterlab
mamba install -y jupyter_console jupyterlab
jupyter console
jupyter kernelspec list
pip install -e git+https://github.com/mathics/imathics@main#egg=mathics
jupyter console --kernel=
%?
%logstart?
%logstart -o demo.log.py
There are Jupyter kernels for Python, Mathics, Wolfram, R, Octave, Matlab, xeus-cling, allthekernels (the polyglot kernel). https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
https://github.com/ml-tooling/best-of-jupyter#jupyter-kernel...The Python Jupyter kernel checks IPython.display.display()'d objects for methods in order to represent an object in a command line shell, graphical shell (qtconsole), notebook (.ipynb), or a latex document: _repr_mimebundle_(), _repr_html_(), _repr_json_(), _repr_latex_(), ..., __repr__(), __str__()
The last expression in an input cell of a notebook is implictly displayed:
from IPython.display import display
%display? # argspec, docstring
%display?? # ' & source code
display(last_expresssion)
Symbolic CAS mobile apps with tabling and charting and varying levels of support for complex numbers and quaternions, for example: Wolfram Mathematica, Desmos, Geogebra, JupyterLite, Jupyter on mobileSage is amazing and valuable but the value of Mathematica is the cognitive ease of having one unified platform for everything. Sage is a nice integration of multiple specialized tools under a rudimentary common framework but requires a lot more mental overhead to tie it all together.
I consider Mathematica a true gift to humanity.
On the other hand there are lots of Common Lisp systems which are capable of running the venerable Maxima/Macsyma.
> not sure what the status of Octave
I'm glad that Octave and Scilab exist, but I switched to NumPy and never looked back.
https://octave.org/news/release/2022/11/02/octave-7.3.0-rele...
And of course this is not true.
I know mathematicians who work almost exclusively on a computer, and others who have an old dusty computer from 20 years ago in the corner of their office that they barely touch. Most are somewhere in between.
Since it in principle never makes mistakes (in practice there are of course bugs, but they are usually different in nature than human errors) it changes what is possible and most convenient. You no longer have to optimise for simplicity as heavily for example. On the other hand computers basically can’t deal with ambiguity, so the rules and statements have to be stated very simply and clearly.
EDIT: One example that comes to mind are indexes in functions. Usually they are just additional arguments that are different somehow from the “main” arguments, for example often being non-negative integers. For humans it makes it easier to think and operate about indices separately from the rest of arguments. But for the computer it’s all the same, as all arguments are treated just as argument, (of course it depends on the implementation etc) and there is no need to treat them separately, since every argument is “special”.
I believe computers can change the landscape of what’s best notation. This is an interesting, interdisciplinary topic to explore.
Let's be precise here: the parent hasn't used "must" here, just stated their observation. It's possible that many if not most mathematicians work this way, but it's not definitely the only one, and it doesn't mean it can't be changed. Actually, there is a lot of work being done on theorem provers, for example.
The natural medium for math is on whiteboards and paper. A computer algebra system like Mathematica is useful, but it augments what is traditionally a paper-and-pencil activity. It makes sense that the standard notation for math is something that is amenable to physical tools.
And it makes sense that the computer tools to assist mathematicians should more closely match this standard notation.
And yes, I enjoy writing in math notation because it's an immediately understandable notation compared to 500 character programming statement.
Displaying equations is a different thing and it's supported by many tools. Maxima for example has wxMaxima: https://sourceforge.net/projects/wxmaxima/
I've also been working on a different UI for Maxima: https://peertube.functional.cafe/w/qnx1onPEx9LCtDP3wFqjWz
Would you know how Mathics compares to Maxima? Mathics' information is pretty sparse.
Of course, anything a human can do, ML can learn to do eventually. Which invites the question: is reading arbitrary hand-written math actually something any human can do?
There are at least two issues here, the first is that there isn't any agreed typographical standard that would make OCR more reliable, and second, there's no consistent or uniform way OCR algorithms are applied. To use your example, the OCR software ought to be able to recognize 'a dot-product dot from a dot intended as multiplication' from its useage context, and where ambiguities or doubts exist the item or aspect of the converted text should be flagged and dropped into an editor that would provide easy access to a choice of selectable options to choose from.
In the absence of accurate AI/ML, having ready access to a flexible mathematically-aware editor so as humans can easily make corrections seems an absolute necessity (especially so when OCRed text originates from source material that has not been typeset with OCR in mind).
It seems odd that mathematicians and programmers haven't yet agreed on standards and protocols around the OCR of mathematical formulae given that the problem has been with us since the outset OCR.
It's hrd, but it's not that hard. Character recognition is half the problem, the other half is context recognition - and there's abundant reference material available. I think we'll see 'copilot for math' aimed at AP/college level users within a few years.
It's not something that any human can do, bu something that any human can do with help. The first killer app will be 'I found this formula, please tell me how to read it.' Not in the sense of being a math tutor (although that may come, but simply in the sense of helping students to read it out loud, identify symbols like hats or bars and son so on. Most math books are terrible in this respect because they assume the student already knows all the notation or has someone who can lecture or tutor them about it. This massively inhibits solo learners who can't engage in the practice of 'teaching themselves' by verbally walking through formulae or discussing them fluently, unless they're lucky enough to have found a good reference for notation.
If you are not in the latter group, Wikipedia has OK summary articles on notation; and these two books offer variously concise and in-depth tools to built mathematical literacy:
https://www.amazon.com/Mathematical-Notation-Guide-Engineers...
https://www.amazon.com/Programmers-Introduction-Mathematics-...
I can't vouch for it, but it seems to be trying to do that.
Eg. when you enter a rotation matrix, it's obvious when you make a mistake when you use the graphical editor in Mathematica. It takes a lot more effort to check if ((1,0,0),(0, sin(2pit),cos(2pit)),(0, cos(2pit),-sin(2pit))) is correct.
This is what that looks like in wolfram alpha: https://www.wolframalpha.com/input?i=1%2B%28%28%28%28a-b%29%... It looks the same in Mathematica while your typing it in, which makes I extremely easy to work with, because even very complex equations look exactly like usual in Mathematica instead of ending up looking like lisp implementation of the Fibonacci sequence.
I wonder if Lisp can benefit from a similar 2d visualization sugar.
And super/sub scripts are in HTML as well.
Unicode is doing all the symbols these days
Param placement like n=0 under a summation, etc are a little more idiosyncratic
Try Marhematica and you’d change your mind. Yes every other tool does it poorly, but Mathematica does it right. It’s fantastic and you miss it everywhere else when you have to leave the Mathematica eco system.
There are many other ways of working with maths. Graphing calculators are very common, and some models even have proper algebra support. There are also the likes of Matlab, R, Python + numpy, and obviously the addition of Jupyter notebooks.
“Mathematica®-compatible syntax and functions” seems to be the main selling point of Mathics. I presume that this means that I can copy-paste Mathematica examples I find online or that are shared with my by someone else.
A free, still maintained, alternative of that is smathhttps://en.smath.com/view/SMathStudio/summary, which also has a cloud option.
Of course it lacks many features, but plugins systems and overall architecture gives hope for possible extension to include many of the desired features.
What would that look like?
Do you have a hypothetical example?
As opposed to something like
def f(x,k) = Sum(k,math.inf, (math.pi*pow(sqrt(x),k))*sin(2*theta*(sqrt(...Sorry to be nitpicking, but it seems you conflate "actual maths" with "maths notation we're accustomed to (since the 19 century)".
As to what "actual maths" really is, it's an extremely interesting question that belongs to the philosophy of mathematics (mostly).
Amusingly, the one thing that the word "actual" does not permit is leading the conversation to that "extremely interesting question": the word "actual" forces an interlocutor to consider only those contexts in which the thing in question is a real, existing thing. "Actual" is a no-hypotheticals-or-philosophical-ponderings zone =)
In this case, that real thing would be modern maths notations. So this is kind of artificial nitpicking: English is not a zero-context language, you are still required and expected to understand the context words are used in based on understanding that they wouldn't make a lot of sense in other -even related- contexts.
Of course, if I'd been glib and said this:
> So... can I write, and see, maths?
Then the insinuation that maths and programming are mutually exclusive concepts should definitely lead to a philosophical discussion.
Sense 1) “‘Actual’ mathematics does not consist in notational embodiments”
‘Actual’ as in essence rather than appearance, territory rather than map. Implies platonic reality of an eternal ephemeral mathematics. Conceived of as beyond and beneath all the particulars of any given representation.
Sense 2) “‘Actual’ mathematics consists in notational embodiments”
‘Actual’ as in embodied. Material. That ‘actual’ mathematics is the set of mathematics which has been ‘actually’ done.
You describe the second sense as self evident but with mathematics in particular this is bound to cause trouble. The sense ‘actual as in essence’ is perfectly reasonable and has a particular affinity to a discussion of mathematics.
I find it hard to even write the description of the second sense without tying some linguistic knot. If ‘actual’ mathematics is its embodiments, what is the thing being embodied? Either the notation embodies nothing (what does it mean to describe the characteristics of a thing which doesn’t exist?) or if it does refer to something then according to the designation of embodied mathematics as ‘material’ then it embodies something which exists immaterially. So either mathematics describes the characteristics of a non existing thing, or a thing which exists, but exists immaterially. If ‘actual’ mathematics is the materially existing embodied form of a separate immaterial thing, what is that thing? So that ‘Actual mathematics’ is the embodiment of a separate immaterial thing called ‘not actual mathematics’. I’m not trying to make a watertight argument here just trying to outline the course of thought that your assertions inflame.
From another angle, what does it mean for something to ‘materially exist’ so that it can be considered ‘actual’. I think this concept so nebulous as to make impossible the patching up of all the holes a cursory investigation reveals.
Personally I think the distinction between the two is the root of trouble here. In the sense that anything exists, it exists according to mathematics. The essence of material existence, to the extent that it can be specified, is a structure of formal relational principles. Such formal structures are the domain of mathematics.
Of course ‘material existence’ is used and understood perfectly well in ordinary circumstances but when the topic at hand is “what counts as ‘actual’ mathematics?” it seems shaky ground to build a house.
Writing is more than this. Writers can arrange characters in 2d space to convey semantic relationships in equations or among words. You can have multiple degrees of emphasis and italics. You can get a sense of which parts of the equation or prose were written quickly and which were written slowly and carefully. Often it conveys a bit of personality. You can even include small drawings or sketches embedded within the text like Gallelo's illustration of Saturn's rings.
I get that we have to strip out this kind of nuance for technical reasons, but claiming that writing ought to be constrained to only what can be represented in plain text feels like claiming that painting should be constrained to only what can be represented in a bitmap.
On the computing side I see this as an editor problem. It’s not hard to conceptualize some multidimensional editor, but evidently it is hard to build one that will overtake the traditional text editors and their not particularly more advanced IDE cousins.
The closest such thing I’ve personally used was HyperCard. I think that for real progress in this area we’ll have to abandon the desire to keep editor and language separated.
Mathics – A free, light-weight alternative to Mathematica - https://news.ycombinator.com/item?id=19851934 - May 2019 (83 comments)
Mathics: A free, light-weight alternative to Mathematica - https://news.ycombinator.com/item?id=11459186 - April 2016 (73 comments)
Mathics - A free, light-weight alternative to Mathematica - https://news.ycombinator.com/item?id=5196551 - Feb 2013 (86 comments)
Mathics - A free, light-weight alternative to Mathematica with support for Sage - https://news.ycombinator.com/item?id=4066826 - June 2012 (57 comments)
For hobbyists, Mathematica is free on a Raspberry Pi, which probably runs better than any alternative, and has a pretty reasonable price point if you buy the real thing for personal use.
For students/professors, Mathematica is basically already free at most major universities.
As a physicist I can say this is definitely not true
It’s just the idea of “what if I accidentally turn my dream hobby into a success?” and “how do I even call lawyers?” and “is any of this worth investing in, on balance?”
https://www.ams.org/notices/201410/rnoti-p1249.pdf
Back when I was using Mathematica a lot (2005-2010ish) the Mathematica usenet group kept an archive of all errors in Mathematica people had found, but it seems to have disappeared off the Internet.
If you browse the [bugs] tag in mathematica.stackexchange.com you'll find a few as well (although admittedly many of the issues there are user errors rather than Mathematica getting it wrong)
Here are two that I found:
the character table of some finite groups weren't square https://mathematica.stackexchange.com/q/252775/7936 this one makes me really nervous as this implies there's not unit testing for the most obvious checks (it's a theorem that the character table must be square and the check is trivial to implement)
conjugate transpose didn't do anything to vectors https://mathematica.stackexchange.com/q/258165/7936
There are plenty more where Mathematica produces the wrong antiderivative or limit.
Felt a lot like P. T. Barnum somehow and I wasn't really comfortable being a customer of someone who made me feel like P. T. Barnum was selling me something.
When I was still in academia I avoided close source because I want my research to be accessible. It does make a difference if you need to go through some strange license portal to activate your university license or if you can just install it in one line.
For me that meant that my scripts run in octave as good as in matlab, if this was feasible (and of course many packages exist only for matlab).
Just because someone else is writing the check doesn't mean it's free. Case in point, the pricing for an individual Mathematica license for use at a college or university ranges from $722/yr to $9k[1], with the customary confusion about what is actually included.
[1] https://www.wolfram.com/mathematica/pricing/colleges-univers...
It's €447 one time purchase, or a €224/year subscription.
The one time purchase does not include updates, so if something breaks with next years macOS update I will probably have to pay for an upgrade again.
This license is pretty pricy for something I just buy for fun, but arguably worth it if you use it often. But I am not allowed to use it for any professional purposes at all. If I just wanted to use it to graph the sales numbers of my side projects (probably not the best tool for the job, but why learn another tool if you have one that does the job?), I would need a professional license which is 10x the price.
Being able to run it on the Raspberry Pi for free is nice, but I assume it is also limited to "personal use".
Mathematica is ridiculously expensive. It's expensive because it's professional software, and there are few alternatives. If you use it daily as part of your job, the price is absolutely worth it, but if you don't, it's just way overpriced.
When I left university, I would have loved to keep using Mathematica, but it was just way too expensive to run it on my laptop, for an app that I would just use a few times per year. And logging into a Raspberry Pi just to use an even slower version of an app that isn't known for being particularly responsive in the first place just isn't something that I care about.
But this is a truism also.
There are plenty of jobs where Mathematica would be useful occasionally, but not every day. For these cases, the software is overpriced.
I'm not sure what that 5000€ refers to. The standard licence is 3880+VAT (I guess that's what you meant), the annual one half that price.
If you look at it as
"hobby stuff" 500
"use it for my job maybe two times a year" 4500 extra
maybe the "home and hobby" license makes more sense for your use case - use it "cheap" for hobby even though you cannot justify paying the full price for work. That's why that license was introduced in the first place!One could also say that a 5000€ A0 printer is "ridiculously expensive" because you want to print only a couple of posters. While you would be better off going to a print shop it doesn't necessarily indicate any problem with the pricing of the machine.
That costs more than a month's rent in some European cities https://www.numbeo.com/cost-of-living/region_prices_by_city?...
Well, at this point it's not even ridiculously expensive; €100 would be ridiculously expensive already.
> a €447 bike is ridiculously expensive
Nah, a good bike can easily cost as much; it's an investment similar to buying car.
> a €447 telephone is ridiculously expensive
It is and it baffles me people are willing to spend even more.
This is something I used to believe.
I am a hobbyist user. Mathematica was not required for my work or for any other interests outside personal curiosity and an ever growing love of math and science.
I’ve made it an indispensable part of my work. A small side-project in Mathematica blossomed into one of the key ways my clients analyze data now.
Mathematica costs less than a dollar a day. It’s always open among the apps on my desktop on both my work Mac and my kitchen Mac.
To stop using Mathematica, you’d have to pry it away from my cold, dead hands. It’s really that great.
And that's why Mathematica is indispensable to you—familiarity and use have made it indispensable.
The trouble is that it's a chicken and egg problem, with the program being so expensive many won't have access to it to try it—some of whom, if they'd had access, would have progressed to your situation.
A program like Mathematica only becomes indispensable to a person after he/she has had access to it for long enough to become familiar with its workings and for the person to actually benefit from the program's features—here that is to provide quick mathematical solutions to problems that would otherwise take a long time or require tedious workings out.
Thus, it's little wonder that so many are looking for cheaper alternatives—as they simply haven't developed the experience necessary to arrive at the same conclusion that you have.
It's unfortunate that's the situation exists and that there aren't more products capable of competing with Mathematica that have a similar UI experience and calculating granularities.
Licenses that you are allowed to use for commercial activities are a lot more than a dollar a day according to their website.
If you live in a developing country where the average salary is $50-$300/month and your company's revenue is similarly thin, yes it is really expensive.
I tried to discuss pricing with Mathematica on behalf of one of these companies and after a few initial exchanges to assess our needs, the sales representatives did not even bother getting back to us and started ghosting us.
The world is not limited to wealthy western countries, countries in Africa, Asia and other regions of the world are increasingly aspiring to develop their technology sector by building an ecosystem of engineering companies.
Mathics and similar initiatives are therefore more than welcome. Even in a developed country, there are many reasons not to want to tie yourself to a proprietary tech so central to your operations, especially in today's world. For example, what about if you are a Chinese company and the US treasury decides to blacklist your company or country?
So by basing that ecosystem around open source software where appropriate, these companies and their employees can avoid the lock in and restrictions of commercial software. I'd expect them to be overtaking the tired Western industrial world fairly soon - or at least being a lot more nimble.
I think this is usually an on-premise license, and not a license to use it on your own computer offline.
You can use it on the cloud. I'm not sure what else you can do with such a license.
As much as I don’t like it either, I can understand their perspective and actually believe that it might have been very hard to create and sustain such a comprehensive, thoughtfully and consistently designed language with an open source model. But it may be interesting to see if there are projects of similar scale with similar requirements that thrive (long-term) on a free and open source model.
I respect Wolfram's enginuity, but I resent his ego for keeping us all out of his walled garden.
The notebook interface has a look and feel as if it was hacked together in two weeks in 2004. Kernel startup and function evaluations can be extremely slow (how the hell did Mathematica 1 run on 1988 hardware?). Sometimes, long-running evaluations can be interrupted, sometimes doing it crashes the kernel. The arcane functional programming language makes writing procedures extremely painful (control flow is handled by nesting If[] functions). Plots are borderline unreadable by default. Customizing them is very complicated and inflexible compared to OOP-based plotting libraries in other languages. Many features don't work at all. I once tried exporting an animated plot as a video file, and most codecs were simply broken. Sometimes PDF exports of plots are Megabyte sized for no good reason.
Instead of fixing such basic stuff, Wolfram keeps adding cloud features that nobody asked for and machine learning stuff that nobody uses. For the vast majority of users, Mathematica 7 is functionally identical to Mathematica 13. Unfortunately, there still is no real alternative, so everyone keeps giving them lots of money for a frankly very unfinished product.
Really? Of all your complaints that one seems the least true, in my experience. I think plots are lovely by default, but then 5% of the time it’s crap and then I’m cursing, with you, at how alien and annoying the whole thing has become.
I used Mathematica in 1988 on a Mac and have been grateful that my employment has given me free access ever since. The notebook interface feels basically the same to me as it did in 1988, when it was an incredible innovation. Now, it is a little annoying.
I also don’t know what feels unfinished about it, but it sounds like you’ve spent more time wrestling with it than me. It has been an incredibly enduring product that still wins at symbolic math. And I also hope open source tools can replace it in my work.
In the case of red-green (or any) color blindness the simple solution is to provide either a choice of predefined colors and or ways of manually overriding the defaults—and in relative terms the extra programming effort needed to provide this useful functionality is a trivial matter.
Sotware manufacturers really do have a damned hide when they omit such important features especially when the need for them is so obvious.
BTW, I'm not color blind but I've witnessed situations as you've mentioned, so too would have the program's software developers. That they've not attended to the matter makes it all the more annoying.
Unfortunately, Wolfram is not alone and it's the curse of the software industry. There are hundreds upon hundreds of examples of programs where new usually-unwanted features are added at the expense of unfixed bugs and important features that are badly implemented and need attention but which its developers keep ignoring.
The problem ultimately boils down to us users—first, we don't complain loudly enough about obvious problems and second, we're all too taken in with promises from marketing departments about the benefits the new glitzy features will bring but which rarely live up to expectations.
What we don't collectively realize is that poorly finished software with bad user ergonomics is enormously costly to society in terms of wasted human effort and lost productivity when tallied across millions of users.
I qualify that comment from my own experience both as an IT professional and as someone who has run an IT department. Personally over the years I've lost thousands of hours trying to get buggy or poorly implemented software to do some of the most basic of core functions that ought to work properly from the outset. Same goes for typical users who are forever calling on my department's help desk to solve problems that ought not exist.
One may decide that it’s too unstable or dangerous to base one’s primary tools in proprietary software land.
I have precisely this concern in my fields of work.
i would pay double/triple the price if it was open source. i shudder at the thought of doing scientific work with help of a magic black box
In this case it's an open-source project reimplementing Mathematica (though technically only the Wolfram language).
>For hobbyists, Mathematica is free on a Raspberry Pi,
Also Wolfram Engine (which due to previous technicality is closer to Mathics) is free anywhere.
>And secondly, is Mathematica really that expensive if you use it in your job/industry?
The point isn't the price but but that an important software used in academic research is closed source. Those that value open science want to have a way to reproduce results using free tools.
Free tools have taken over programming, and I doubt that cost is the main reason. I don't know if there are any proprietary programming tools in widespread use any more. The same benefits might apply to software for "the rest of us."
Outside of truly enlightened organizations, the cost ends up being just high enough to trigger all sorts of wasteful habits such as: Management approval, dealing with the purchasing department (on a recurring basis these days), using outdated versions, shared licenses, centralized installations, node locking, separate "development" and "run-time" environments, and so forth.
For one specialized app that I use at my workplace, it costs a few man-hours per year to renew the subscription. The license server is on a firewalled domain, maintained by IT, so I can't use the software at home unless I carry a computer back and forth every day. On my bike.
Use of that software tacitly assumes certain work habits such as doing your work mostly in one place.
The cost frustrates sharing. If you want to share something you made, your victim has to buy their own license to use it.
In the time that it takes to hash out the purchase of software X, I can have my entire toolchain (Python, Arduino, WxMaxima, etc) on every computer that I touch: In my office, the labs, and at home. This has radically changed how I incorporate (mostly) Python into my life at work and at home.
Isn’t Xcode is a widely used programming tool?
And I have a pretty broad definition of "programming," so by all rights I should have mentioned Excel.
Apparently many commenters here do not understand the word "alternative", which means "a thing that you can choose to do or have out of two or more possibilities", and instead take it as "equal in every respect".
To someone with no money to spend, Mathematica isnt really an alternative to Mathics.
pip3 install Mathics-omnibus
levels of hard. I'm missing some libraries on one of my machines, but I'm planning on playing with it.
As always in these discussions, I expect many people will start complaining about how expensive Mathematica is, and how Stephen Wolfram is very shortsighted with his pricing, and how open sourcing it would truly unlock all the potential of the system.
And I seriously doubt this point of view. Open sourcing is not a magic dust that automatically makes everything better. While it works in some cases, it doesn’t work in others - and not having a competitive open source mathematical system is a prove of that.
Hiring people to develop and evolve complex algorithms, on work on improving the UI and making it work on three different OSes, or curate and maintain the knowledge library, takes a lot of effort. I’m actually surprised they don’t price it higher!
Disclaimer: And yes, I live in a developed country, so $250/year for a personal license is not a substantial cost for me. I’m sure that somewhat biases my position.
I think it does.
The market is then on ideas. Long term, someone will build an open core business model around Mathics (or similar) and that’ll create an incentive for Wolfram to reprioritize and pursue the best ideas.
The same will happen for this new biz with the open core business model. It will continue to fray as industry figures out what the market wants, pruning poor ideas/execution and rewarding good ideas/execution.
Let’s go!
If the open sourcing a system works as you describe - why haven’t those system received even a tenth of a polish that Mathematica has, over all these years?
I have my answer: because, even with all its warts, producing something of Mathematica quality requires tremendous coordinated efforts of hundreds of highly qualified professionals who need to be tightly coordinated.
If you try the “next best thing” - a few core enthusiasts plus a large number of users who do occasional contribution you can get to (an impressive) quality level of the above mentioned alternatives, but not higher.
Software (as an industry) was born with the right structure. That’s why it moves so quickly.
Other industries (incl. research) need to fix internal problems before they can accelerate, i.e. tightening feedback loops such as procurement cycles. Over time, institutions who can do more with less will outmaneuver even Wolfram.
The future of the world isn’t limited by one guy leading one company.
> I think it does.
I think that it does not automatically make it better, although open source does improve the potential for making it better, compared with not making open source.
There are also other advantages of FOSS, too. Even if you do not modify it, there are benefits to examine the code to find undesirable behaviours, reading the code to figure out something that cannot be figured out from the documentation, avoiding worrying about copyright issues as much as proprietary code, etc. And then, further benefits may be possible if the code might be modified, too.
And the tools have to do everything because people outside of the programming world can't implement missing features themselves. Programmers can create programming tools, but mechanical engineers can't create CAD tools.
Of course there are downsides: Giving up everything that you get with open-source is a lot. Creating "everything" tools makes them bloated. Having to follow the rules of marketing encourages planned obsolescence and a continual upgrade cycle. Finite resources encourages focusing on "core competency" rather than making general purpose tools.
The choice to use less-polished but free tools is a tradeoff that makes sense for most programmers, and people like myself who are not employed as programmers per se, but do a lot of programming to support our work.
If someone wants to develop a free "alternative," their best bet is to piggy-back on existing free tools. So for instance, a programming language benefits from free text editors. A specialized math or science tool might benefit from being served up as a package with a Python API. And so forth.
https://github.com/mkulesh/microMathematics
These guys should collaborate.
It also has a great toolset for making interactive plots. Assuming you understand the following jargon, it uses the functional reactive paradigm.
All possible variable names in Mathematica are pre-declared, unlike in general-purpose programming languages.* For instance, the variable "x" is predeclared, and when its value is printed out, it prints out "x". Sympy and Sage absolutely use the wrong approach here. You can work around the problem in Sympy using
from sympy.abc import *
but this is honestly rather shit.The editor is nice, in that it suggests documentation, and offers to auto-complete your code. It's similar to an IDE in that respect. This compares favourably against Maxima, where some people suggest to use it via Emacs, and then you don't get access to auto-completion or context-relevant documentation.
You can also copy-paste any object in the notebook. I don't know if this is directly useful, but the copy-paste includes any plot, image, formula, output, etc. The experience is similar to MS Office, where you can similarly copy-paste any image, table, text, or combination of these. With something like Sympy, you would need to use some function to serialise an object (like a formula) to code.
Finally, comparison to Sagemath: Everything in Sagemath seems half done. It ticks a lot of feature boxes, but the features seem incompletely implemented, even when compared to Sympy. By contrast, when Mathematica does something, it seems to be done in a more complete and usable way. The whole system seems consistent, somehow.
* - This is one of the ways that a CAS should not behave like a general-purpose language.
- If you do matrix algebra in it, it rigidly insists on knowing which ring your matrix-elements belong to. If you have a symbolic variable, then you need to indicate this as part of the ring. Some functionality is not available for certain rings, which sometimes feels overly pedantic; surely a best-case effort could somehow be made? I haven't tried this for a while, but I remember this was an obstacle that I hadn't encountered in Mathematica (or Sympy), which seemed to just do the right thing. Note that normally when working with real- and complex-algebras, I usually resort to various matrix representations.
- The pretty-printer wasn't good. Maybe my mistake was insisting it print to Unicode, but it failed to pretty-print the elements of a matrix. It defaulted to printing out Python code within a matrix. Maybe this is a bug? Maybe I should've just outputted to Latex?
- The variables weren't pre-declared, so I kept having to write out `var("x")`, etc. This is not ergonomic for a CAS. Sagemath doesn't even ship with a hack like `from sympy.abc import *`.
Do they offer a .exe that I can install, then click on a button and start a program without any tinkering. Mathics and Sage no. wxMaxima yes. Although I always had the feeling that wxMaxima is more an alternative to Derive than Mathematica at this point.
Mathematica works because it is easy to deal with, no installing packages, libraries, libraries incompatible with others. You have Mathematica 9, you got all that Mathematica 9 supports. You send a notebook to someone else, they can execute the notebook if their mathematica version is equal or larger.
It is like saying that Latex is an alternative to word. No, they both make documents, but one is not an alternative to the other one.
Seriously? I'm already tired of latex packages only being documented as PDF, but at least there's a technical reason. Here, this is just contempt for the users.
One wonders why the omission given Mathematica's vintage—one would have thought that by now Wolfram would have had time to write the output format routines.
(https://reference.wolfram.com/language/tutorial/NIntegrateIn...)
That's why nothing can compete. Not only does Mathematica have an extremely complete implementation of common functionality, it even has an extremely complete implementation of very niche functionality. I don't think that the people who propose OSS solutions really appreciate this, probably because they aren't professional mathematicians/physicists
But no, there's always a discourse about how unfair, unethical, greedy etc the developers of closed source / commercial aka overpriced software are, which vividly displays that the actual sentiment in these complaints is pure and simple envy, towards better things that cost more, towards developers who make a living off their own projects and don't feel obliged to worship the ideals of open source, free as in beer, cheap as in dirt etc...
In fact reading the linked page it appears they "build on top of" scipy.
While Sympy (which is one of the OSS libraries used in Mathics) is a CAS, it only implements a subset of the features of Mathematica, and not to the same standard. See here: https://news.ycombinator.com/item?id=33478881