Massive egos aside, it's hard to think of a successful software company that is more anti-freedom than Wolfram. While I think all software should respect users' freedom, I recognize Apple, Microsoft, Oracle, and Adobe have all made at least some meaningful contributions to free software.
Users want freedom to not be forced to use just free stuff, which is quite different. In a hypothetical country, one could be forced just to use proper GPL'd open source software. It wouldn't be a free country, even if the software itself was free.
Arguing that the freedom to restrictively licensing your software is more freedom than using GPL because it requires unrestricted future access is analogous to arguing that one should be tolerant of intolerance because that is the more tolerant action.
Yes and being intolerant of intolerance is to become intolerant ourselves. I have a strong distaste for those who are intolerant of the intolerant, even more so than those who are merely intolerant, but I tolerate them.
It's analogous to saying people who murder murderers are murderers. Which is true.
> I have a strong distaste for those who are intolerant of the intolerant, even more so than those who are merely intolerant
Wait, seriously? So, if someone says "I don't want my kids ever to meet gay people", and I say "I don't want my kids ever to meet that guy", then you feel that I'm more in the wrong?
Yes. The first person is showing prejudice with an exclusionary attitude. The second person is showing exactly the same while being self-righteous about it. The first person is prejudiced against gays based on his own experience growing up as well as his ignorance. The first person is being who they are. The second person is doing what they are doing because that's what society is telling them to do. (Of course if the second person is the gay person the first person is prejudiced against, then I would sympathise with them instead because they was the target of the first person's prejudice). And to think you're good when you're judging people with the same attitude to align with society's prevailing morals is distasteful to me. But I understand it and I will still let my kids meet you. It's human nature to follow the crowd.
>The second person is showing exactly the same while being self-righteous about it
The first person is ignorant, the second person is annoyed with ignorance. Ignorance isn't the same as being in a minority group. There's no human right to remain ignorant.
If you were merely annoyed with someone and letting that be, then you tolerate them.
Everyone is always ignorant of something, you and I included. Human rights doesn't come into this. It's people pretending to be ignorant of nothing who I'm wary of.
The which is freeer software decision and whether to tolerate the intolerant or not are both a paradox. You can't know whether you're enabling a net increase in freedom/tolerance or decreasing it because you're doing both and won't know the result until its too late. Either decision, like choosing any value, requires a moral compromise based on the realities of the situation.
I agree with this statement - I don't think they're analogous because each situation has a different reality. It's like saying "As a submarine commander, you should be able to command this space shuttle because flying a shuttle is just like commanding a submarine - both vehicles are surrounded by a hostile environment." But of course we know the two environments are not analogous like that - they have different realities.
Commercial software licenses and intolerance are both a result of the self interest of the individual in society and are a defensive measure that protects individual values from community over reach. GPL and enforcing-tolerance are based on community values that protect a shared interest against the interests of individuals.
> The second person is doing what they are doing because that's what society is telling them to do.
I have a suspicion that we have totally different ways of thinking about this, so our disagreement might be about the axioms rather than their consequences, in which case it's probably useless on both sides for us to argue; but I would like to have one more go, to see if our disagreement is really so fundamental.
Why is it valid to say automatically that someone who is intolerant of homophobia is just doing what society is telling him or her to do? Indeed I'd say to the contrary that there are many societies where homophobia is the normal attitude, so that being intolerant of it is very much going against societal norms.
Even if I'm in a society where homosexuals are (correctly) treated as equals, then describing as simple conformity my revulsion at an attempt to treat them unequally seems to be extremely uncharitable. Why not simply say that I, too, am "being who I am", because of my upbringing or any other reason?
I have a suspicion that we have totally different ways of thinking about this, so our disagreement might be about the axioms rather than their consequences, in which case it's probably useless on both sides for us to argue; but I would like to have one more go, to see if our disagreement is really so fundamental.
Okay. Let's try that.
Why is it valid to say automatically that someone who is intolerant of homophobia is just doing what society is telling him or her to do? Indeed I'd say to the contrary that there are many societies where homophobia is the normal attitude, so that being intolerant of it is very much going against societal norms.
That's a good question. If we were in such a society, the annoyance I have for people who follows the crowd and do not think for themselves would not apply to you.
Even if I'm in a society where homosexuals are (correctly) treated as equals, then describing as simple conformity my revulsion at an attempt to treat them unequally seems to be extremely uncharitable. Why not simply say that I, too, am "being who I am", because of my upbringing or any other reason?
I have distaste for the intolerant of the intolerant, because on one hand, they know the harm intolerance can cause in society, and on the other, they engage in the very same intolerance they know causes harm, and then they have the gall to tell people they are morally superior. That is knowingly causing harm, and then tricking people into thinking they're tolerating - all it provokes is the very same intolerance in other people, and the very same impulse to disguise this intolerance in others. The intolerant have a passive effect of reducing society's tolerance, which have the consequence of suffering in individuals. The intolerant of the intolerant have the same passive effect, except they're now knowingly partaking in this activity.
The intolerance of the intolerant makes the following situation possible: "Don't talk to that man, he is a misogynist! Oh by the way I hate misogynists. :)". Intolerance in society allows possible situations where simple label will smear the reputation of someone in other's minds for life, before people get to really know who the person is.
And that's the core problem of prejudice, isn't it?
EDIT: As I look at my closing paragraph, I see that it comes across as rather dismissive, and I apologise for that. Let me clarify up front that, though I disagree with you, I appreciate and respect your reasoned arguments, and your willingness to continue arguing civilly and rationally.
> > Indeed I'd say to the contrary that there are many societies where homophobia is the normal attitude ….
> … If we were in such a society, the annoyance I have for people who follows the crowd and do not think for themselves would not apply to you.
If you are not in such a society, then you live in a happier world, or at least society, than I do—in particular, one where Antonin Scalia is not a Supreme-Court justice.
> I have distaste for the intolerant of the intolerant, because on one hand, they know the harm intolerance can cause in society, and on the other, they engage in the very same intolerance they know causes harm, and then they have the gall to tell people they are morally superior.
I think that certainly there are people who are smug about their intolerance of intolerance, just as there are people who are smug about their intolerance of homosexuality—used as a running example just because it's what I started with, not because I think it's the only kind of intolerance. However, I don't see why it's unfair for me simply to be repulsed by intolerance, without having my repulsion automatically judged to be artificial, and in service of some ulterior motive.
I agree that the fact that I am repulsed by something that (in my opinion, to be sure!) is actually morally bankrupt, as opposed to someone else's by something that is not, doesn't make me a better person; but I don't think that it makes me worse, either. That, and possibly also what seems to be your blanket assumption that intolerance of intolerance can only be in service of some agenda (and not a genuine emotional or intellectual reaction), I think is where we do, and may simply have to agree to continue to, differ.
You can be repulsed with someone and still tolerate them. If you operate a shop, you continue to sell to them. If you're friends with their employer, don't tell your friend to fire them. If you are neighbors, you continue to acknowledge their existence when they greet you. And you let your kids play with their kids, so that your values diffuse outwards. When they try to engage you, you give them your attention. If they're homophobic but at the same time they do a good deed, you continue to praise them. When an opportunity arises for you to explain to them, with compassion and respect, their ignorance, you take it up. If you partake in these activities rather than ostracise them from your society, you are tolerating them, repulsion or no. A person who was brought up a racist, but have the attribute of tolerance, will continue to engage the target of his prejudice, and eventually learn of his own prejudice, and his repulsion would be cleared. Tolerance connects a person to reality - it gives a chance for reality to affect change in the person, and vice versa. This is how tolerance can increase society's tolerance. If you wanted to change the world for the better, I think it works better than ostracising and locking up the intolerant.
Tolerance means accepting something is part of your reality, even when you don't like it. If tolerating means accepting something only if you like it, it wouldn't be called tolerance...:)
You're missing the point. If people demanded that Wolfram were open, then it would be either a) open or b) gone.
The fact that it's neither of those would suggest that people don't want it open badly enough. Listing off projects that are open to show that people like open things is absolutely irrelevant.
You missed my point. The argument made by exolymph was users do not want freedom. I listed projects which are among the best and most popular in their class, in no small part due to their respect of users' freedom.
Were those Wolfram's users? And did they reject his app in favor of the free alternatives?
I think your point is missing the point. The market of people who just want a solution to work and be easy to use is much, much larger than the market that explicitly demands BSD or GPL-style freedom. Wolfram serves the former. Makes more money that way, too.
Right, I was trying to say that it's no more capable and seems objectively worse as a programming language. Don't get me wrong, it looks like a comprehensive learning library but why learn a language that isn't used for production software?
People don't "like open things" because of marketing hype, they just tend use the most useful things. Collaboration in programming is a feature. If no other projects on github are written in "wolfram language", then learning to program doesn't really enable you to do as much.
> If people demanded that Wolfram were open, then it would be either a) open or b) gone.
That seems a bit like saying that, if people demanded that North Korea were open, then it would be either (a) open or (b) gone. Of course, the lock-in to a software package is less than the lock-in to a country, but at a certain point it is not totally absurd to say that it is effectively impossible to switch.
You mean to say the lock in of a dictatorial military state is slightly more problematic than the lock in of downloading a different piece of software?
I guess this is sarcasm? I didn't say 'slightly'; certainly it is much more problematic. Obviously, the comparison is hyperbolic, but I don't think so much so that it is valueless. (On an uncharitable personal note, I'm not so sure that comparing Wolfram's own ambitions directly to a dictator's is all that exaggerated.)
I'm sure there are people in the past that wanted Windoze to become "open" (whatever that means, you don't specify in your argument). But Windoze is neither open nor gone.
You're forgetting the third and much more realistic option: that people will come together and create a substitute that far surpasses the original, because of the naturally collaborative nature of free software.
Wolfram the computational engine is a hosted solution, so there's very little point to "opening" that, business continuity reasons aside.
Mathematica I don't know much about, but afaik serious engineers, mathematicians and physicists use MATLAB generally. There's more of a shift to using R and Julia nowadays but academics are notoriously stubborn when it comes to using software, regardless of its quality.
I see good non-programming specific open source tools far more unlikely than programming related ones. There are some good ones, but not many.
All of those projects which you listed are more or less programming or web-content related - for which the domain knowledge is readily available among the people who enjoy working in open source. One needs domain experts in the particular domain to implement successful software.
Domain experts are motivated by money, peer reputation, and improvement in ones domain. Two of these are readily available in FOSS projects, and becoming a developer in a reputable FOSS project also improves ones career prospects financially quite considerably.
So, for a programmer, participating in a FOSS project is quite appealing.
Now take some other domain, like music. First, if ones peers are likely to be more or less ignorant of software development, they really cannot appreciate the effort an expert places on developing a software. They may find it interesting, but not as admirable as progressing in ones own domain. Secondly, while developing software may give insights in ones problem area, it's not directly related to her craft. Take a hypothetical composer - which is a more appreciated thing, him doing a composition, or testing/speccing some new compositional software. Thirdly, domain experts seldom gain any obvious financial benefit or participating in open source software (I'm talking about the dominating dynamics, not special cases).
> Mathematica positions itself as a mathematical appliance, like a fridge or an oven or a car, none of which are generally running free software.
And that is why there are Linux gurus that will invest lots of time to get GNU/Linux run on their fridge - because there are people who will not accept this status quo.
This is awesome, but man are they are ton of different programming languages for the purpose of learning now. Most beginners are going to be confused on just which one to pick.
Best to Wolfram. Lets see if this can become the pack leader.
I absolutely hate Wolfram's online workbook UI. No matter how careful I am I end up breaking it in so many ways. Delete that image of a horse? Too bad, have to refresh the page to get it back. Click enter incorrectly? That new line can never be deleted now. Want to format your document at all? Good luck.
I subscribed to their online offering when it originally came out, but immediately canceled because the UI is just so far behind its desktop competitors, like Maple, and even Matlab. I want to support this software, it has great potential, but they need to sit down and really rethink how it's put together and delivered to the user.
Maple makes me sad. They had an amazingly effective streamlined GUI circa 2000, a native Windows app which launched significantly faster than the built-in Microsoft calculator tool, and then felt like an upgraded terminal-style REPL with all of math at your fingertips. It had capable plotting with nice embedded graphics, great built in documentation with fast search, etc. It was rock solid, I don’t think I crashed it once. As a high school student, it was an amazing tool for me.
Then they decided to hop on the Java bandwagon, and rewrote their whole UI using some kind of cross-platform Java GUI toolkit. App startup time went from like a tenth of a second to like 30 seconds (at least, that was my subjective impression at the time). Every part of the GUI was laggy and glitchy, it crashed regularly, the documentation was reorganized and much more confusing, etc.
The big-ticket feature additions which supposedly justified the rewrite were some gimmicky stuff for writing formulas in a more standard-math-typography way instead of as plain text, plus some related handwriting recognition thingy, but this ended up being slow, confusing, and ineffective, and cluttering up the rest of the interface.
I used a version of Maple that shipped with both the Java GUI and the native one. It was amazing how much faster the native GUI started and ran.
This was before I learned "real" programming, so I actually stuck with the Java GUI to get the pretty-printed math formula editor. Still, maybe that experience caused me to avoid writing Java programs later on...
I had the same experience, using Matlab in college in the early 2000s was great. But the upside of its decline is that it motivated me to pick up a more general systems programming language for scientific computing work.
The problem I have is that there is at least one Matlab toolbox I haven't been able to find an open source alternative. I use parts of the System Identification toolbox, but the parts I use aren't the parts that are implemented in the Octave one I found. There are tools in it that will do a transfer function estimate and various things with frequencies that I haven't found an alternative. I've bought the text that covers the toolbox and sometime when I have the time, I'll try and implement it.
I use Maple 16 (I haven't bothered buying any of the newer versions) and it has the Java GUI. The GUI is pretty bad, but if you make sure you work in worksheet mode rather than document mode, you get the old style at least. I also turn off the sidebar. I don't find it to be too bad on my Macs.
I still use Maple mainly because of familiarity. I've been using it since the 90s. I'm a contributor to SymPy, but even then I can think through the problem quicker using Maple.
(disclaimer: I'm the founder of SageMath and SageMathCloud) People keep asking me about the comparison. Wolfram Programming Lab does indeed appear to be similar in some ways to SMC/Python/Jupyter Notebooks. I think SMC/Python/Jupyter is a better choice for college teaching because (1) the healthy and rapidly growing and improving open source ecosystem, (2) that Python is also useful for a huge amount outside of mathematics, (3) SMC is cheaper than Wolfram Programming Lab and of course Python is free forever, (4) SMC has realtime collaboration (multiple people editing the same doc at once), history recording of all edits, and better snapshots, where Wolfram doesn't have any of that, (5) SMC supports a full Unix shell, anything you can install there, and also LaTeX, (6) the course management in SMC is much more developed.
For a long time, Undo didn't work properly on the notebook interface for Desktop Mathematica. In fact, a lot of their tooling is pretty terrible. It's a shame, because it's a really interesting and powerful language (a lot different than matlab).
My son is only 2 but I hope to pass on to him my love of maths, electronics and programming in an interactive way. This is why, for example I've been getting to grips with the raspberry pi and keeping tabs on the whole 'computer based math' movement. While I understand the background issues some HNers have with Wolfram I'm cheering on any efforts (including this new Wolfram Labs announcement) that may spark my son's interest and aid his future education.
Every time I see something with Wolfram Language, I'm fairly impressed with how powerful it seems.
But then I wonder, is that just because I see people who are skilled in the art or is it intrinsic to the language? If it is so powerful, how come I don't see more of it being used? Is this just because it runs on a closed system? So does Matlab, but at least in my experience Matlab seems more widely used, why is that?
You can't really compare MATLAB and Mathematica. Mathematica excels at symbolic computation whereas MATLAB is primarily geared towards numerical analysis and scientific computing. You could code numerical things in Mathematica, but you'll get poor performance compared to MATLAB. Similarly, MATLAB does have a symbolic toolbox, but it pales in comparison to the extensiveness of Mathematica. Numerical and scientific computing work is generally more useful in industry than anything you would do with symbolic computation (e.g. you wouldn't analytically solve a sophisticated PDE so you would use numerics), so that explains why MATLAB seems more prevalent. As for your first question, I would say that Mathematica definitely has a lot of power built in. I know a few researchers (myself included) who have used Mathematica in some really cool ways only knowing the basics, which I think is a huge audience for Wolfram. With that said, there are definitely many power users who are probably doing greater things with the language.
> You could code numerical things in Mathematica, but you'll get poor performance compared to MATLAB.
Yes and no. MATLAB and Mathematica have access to the same BLAS libraries. If you're using packed arrays in Mathematica, you can expect similar performance for many pure numeric things. Mathematica is missing some of the higher level primitives, there's no built-in function that corresponds to DGEMM, as a random example.
Another weakness is that there's only a handful of packed array types, for a 64-bit system, you get tensors composed of doubles, signed 64-bit ints, and complex numbers; no bool arrays, no unsigned 32-bit or 16-bit, no enum or factor arrays. Now this is purely a performance thing -- you can make tensors/arrays containing anything you want, but their contents just won't be 'packed' into a contiguous region of memory, instead they'll be arrays of pointers to other memory on the heap. Such arrays are slower to work with, much less memory efficient, harder to pass over an FFI, etc.
There's also a lack of fast workhorse-ish functions involving tensors, so there isn't a way to broadcast a condition (say 4 <= x <= 10) onto an input matrix to get a 'mask matrix' as is so common in MATLAB and R and so on, and one of their secrets to writing fastish code in a interpreted language.
On the other hand, you can deal with ordinary lists (and Associations) that contain arbitrary types (as with any dynamically typed language), which makes many kinds of algorithmic work very straightforward. After all, not everything is best represented as an n-tensor of reals or ints or bools! But if your lists do happen to be homogeneous lists of ints or reals (of any rank), they will usually end up being stored more efficiently as mentioned above, a process that is, for better or worse, totally invisible unless you know about Developer/PackedArrayQ.
There is also Compile (https://reference.wolfram.com/language/ref/Compile.html?q=Co...) which still has a fairly limited type system, but will still let you bypass large amounts of interpreter overhead when you need to do something performance critical.
> you wouldn't analytically solve a sophisticated PDE so you would use numerics
> so that explains why MATLAB seems more prevalent.
I think the explanation lies more with MATLAB having exactly the right features (or the right toolboxes) at the right time to fill niches in thousands of engineering and research labs. If you're running a lab, and that postdoc who wrote the code driving your instrument has long since left, there is very little reason to embrace a new language, even if it has caught up in various ways, and especially if that new language isn't tailored exactly to what you are doing, and would prefer you to use some strange thing called "functional programming", etc.
Yeah I think it looks impressive, and it's cool that it's been developed for like 30 years.
The Matlab comparison isn't that useful though, because the languages are geared toward different problems. Matlab at its core is linear algebra ("engineering"), while Mathematica is based on symbolic computation ("algebra"). That's a pretty huge difference. They have both branched out I'm sure, but the history remains.
People have a similar confusion over Matlab/Julia vs. R. They're both scientific computing, but R is for statistics. (R has matrices and linear algebra, though they are fairly terrible compared to the data frame operations, and seem second class.)
I would think of each language as having a core data structure:
1) Mathematica/Wolfram - expression/symbol
2) Matlab - matrix/vector
3) R - data frame (columns of heterogeneous type)
Julia is trying to subsume some of R, but it really is almost putting two different (but related) languages under one roof.
Mathematica can get performance on par with Matlab. I think the real problem is that Mathematica's performance can feel inconsistent to beginners (i.e. some things are fast, some are slow, and why they are fast and slow is not at all obvious.)
Hmm I don't think that one can conclude much about the overall performance of either pieces of software by this "rank test". It's not exactly comprehensive, nor particularly practical.
If I had to guess, its because Matlab looks a lot more like "traditional" programming and so is more approachable to engineers & scientists with a C/Fortran/Basic background.
I also think marketing plays a part. Matlab has effectively sold itself as the go-to language for mid-scale number crunching (i.e. scientific-type problems that are complex enough where performance could matter, but not so complex that you need careful performance tuning or a supercomputer.) Mathematica can achieve similar performance in those sorts of problems, but in my mind, Wolfram has been presenting Mathematica as more of an educational/casual tool for one-off tasks.
I can't comment on cost or licensing offerings, but that could be a big factor as well.
It's powerful but somewhat hard to extend. If there's an intrinsic method to do something then it is very powerful, but if you want to do something slightly beyond the scope of what's already there the code quickly becomes hard to read and slow.
It's good for scripts but I really don't see how you could maintain any sizeable project purely in Mathematica.
> It's good for scripts but I really don't see how you could maintain any sizeable project purely in Mathematica.
The same is true for MATLAB projects. Yet people do maintain sizeable projects in that. They're horrible, unreadable, and depend on various things in that specific installation of MATLAB that make any even medium sized program hard to even get running on another machine, never mind productionizing it.
A) Can I run my programs locally without connecting to the cloud?
B) Can I dynamically embed generated graphs on my own site, instead of using the Wolfram Cloud to host it?
If you have Mathematica installed on your own server, then yeah, you can do both. If you just want to share a graph, then convert it to an image and host it on your own.
As an experienced developer, I surprisingly enjoyed progressing through Wolfram's book for beginners. (I used Mathematica, not their online UI.) In particular:
+ Making instant web apps and APIs just by specifying two functions -- "front-end" and "back-end".
+ Easily creating impressive-looking programmatic 2D and 3D graphics and sounds.
+ Innovative idea making visible graphics and colors as arguments and outputs of functions.
+ "Knowledgebase" of facts accessible using natural language. (Though, this was often slow due to server calls.)
My main critique of Mathematica is that it is the epitome of a kitchen sink library. There is an overwhelming number of functions for every possible thing. So, it is often not feasible to know what is offered without a lot of reading. (In fact, Wolfram even states this in his book.)
This is the real problem with their "knowledgebase". I would love to enter any natural-language query and get an answer, but in reality I need to check their list of supported areas and know the seemingly arbitrary list of facts about each area. To really make this useful, Wolfram has to figure out how to make it work without requiring me to be so knowledgeable about what it contains a priori.
Also, having such a large standard library makes the language very "flashy". It is indeed impressive and inspiring to create a sphere or musical piece in one line of code. However, real programs end up being much larger. In practical programs, Mathematica's functional syntax results in long unwieldy statements with forced formatting. This is occasionally impressive, but it is just as often hard to decipher.
I don't really get the complains about a kitchen sink of predefined functions, or the functional syntax. You can always fall back on defining a function yourself. (And with the amazing documentation and Google, it's quite easy to find most functions anyways.) Likewise, you can always use C++-style syntax for defining functions, for loops, etc.
Mathematica has plenty of problems, like it's extreme slowness for things that should be comiled, and awkward reference passing, but the ones you've pointed out don't really make sense to me.
> I don't really get the complains about a kitchen sink of predefined functions
If you're running it locally, there's a very practical reason to complain: between Wolfram 7 and 8, the application bundle size went from 29 MB to 2.65 GB. That's not a typo.
Surely the graphics that they return should be returned, live, rather than passively occupying space even while unread? (I don't just mean 'should' in the sense of "that's the way it ought to be"; I thought, though I don't know for sure, that part of the appeal of the 'live' documentation is that that's the way it is.)
Some stuff requires internet connectivity, some stuff takes a certain time to compute. If you had to wait one minute for all the stuff to evaluate when you open a new documentation page that would probably bad user experience. The appeal of live documentation to me is that I can modify the examples in place until they do what I need.
This is true for lots of programs. Try installing TeXLive or a similar LaTeX distribution from a package manager. Usually it pulls in a *-docs package that takes up well more than half of the download.
To be fair, though, it is very easy to customise TeXLive so that it doesn't do this; whereas, as far as I know, Mathematica offers no such option. To be sure, you can delete it afterwards, but I'm not sure how gracefully Mathematica deals with that; whereas TeXLive, for example, gracefully deals with incremental upgrades from a very basic installation. (I know, because that's exactly how I run it on my tiny SSD. My current installation is well under 1 GB.)
You could argue that standard libraries should be enormous and try to be everything to everyone. In fact, this is one of Mathematica's selling points -- they have many complex algorithms implemented.
However, this also means there is an enormous, aging codebase that Wolfram continually must maintain and add new features to. It means that coders from different communities (who use different sections of documentation) likely have very different standard practices. And, I am concerned that this philosophy of "always having to look everything up" really hinders their knowledgebase product due to lack of consistency.
However, I applaud Wolfram for the ambition and enthusiastically sticking with it over so many years.
> I don't really get the complains about a kitchen sink of predefined functions, or the functional syntax. You can always fall back on defining a function yourself. (And with the amazing documentation and Google, it's quite easy to find most functions anyways.) Likewise, you can always use C++-style syntax for defining functions, for loops, etc.
In the short term a kitchen sink of predefined functions are great, but in the long term they become baggage that holds a platform back (and there's no way to improve them without breaking backwards-compatibility). They're usually a sign that the platform has its priorities wrong: you need a good dependency management solution, and once you have that there's not much value putting things in the standard library. (Look at Scala, which is going to a lot of effort to carve things out of the standard library so that they can be maintained separately with their own release lifecycle).
You've described a hypothetical way things could have gone wrong. But have they? I don't think so. The Mathematica developers have in fact been impressively foresightful. When it has been necessary to make changes that break legacy code they have done so, but it's been very rare.
I really think this is like an Apple vs. non-Apple situation. Sure, the Apple ecosystem is closed and not as flexible and you can think of all these problems that it could get stuck on. But in practice for the large majority of Apple's target audience, these concerns don't pan out. And the benefits of that system are large.
Here are two examples. The frontend asks a user for an image (or city+radius), and the backend edge detects the photo (or returns a map with a shaded radius around the city):
Does this cost money..? I remember when the iOS app came out for the computational engine. For $50. I'm sure that was a long since rued decision to price it like that, but I still have this odd feeling about Wolfram doing this fancy stuff but trying to spin a big chunk o dough for it. (Not that it's a bad thing but I don't see cost talked about here compared to their other products?)
I am not sure Wolfram Research realize what they have.
If they would make their stack FOSS they would be absolute heroes and shape the future of applied math and computation software with a historic impact. Otherwise they will fade away, when other interfaces (Jupyter & Co.) catch up and/or surpass it in its capabilities. More and more people will just not accept the closed nature as it inherently contradicts with the idea of exploration.
There are basically 3 scenarios:
- they go FOSS now: best outcome for people and Wolfram
- they go FOSS later: good outcome for people, more difficult for Wolfram, as they lose developers/community
- the don't go FOSS (or not in near future): Wolfram SW won't be used anymore as open alternatives surpass it. People won't care.
I think Wolfram Alpha / Language is cool, but generally agree with your analysis. Is the Wolfram engine supposed to be a tool to better access indexed human knowledge on the net? Or is it about teaching people to think in a structured way about querying and manipulating this data? For the former goal, we really need to know what's going on behind the scenes of his program to weight the results. For the latter, what are we teaching if the language obfuscates the details of how it is interpreted?
The thing about Mathematica (and any other math product) is that it lets you increase the abstraction level of your thinking.
If you have a smaller problem, first type it into mathematica, and see if it comes up with an answer. It means that you don't have to divert your efforts into that small problem.
That said, mathematica has a function to have it explain exactly what it did to solve a particular problem. Example:
Sure, Mathematica is great. But showing the formulas does not mean showing how the code was interpreted -- ie, translated into machine instructions. So it's good for exerting power over equations that have known algorithms for solving efficiently. Not to knock his achievements. I mean, what have I done that's so cool?
> The thing about Mathematica (and any other math product) is that it lets you increase the abstraction level of your thinking.
The difference between Mathematica and other environments is that in the latter, you ascend from the trivial to the abstract, hopefully learning the entire structure as you go, but with Mathematica, you're deposited on a mountaintop with no obvious pathway down.
> That said, mathematica has a function to have it explain exactly what it did to solve a particular problem.
Yes, but this doesn't work for the more advanced features. If it did, someone could simply copy down the conversion sequence and recode it for a different environment. As a result, Mathematica users are in the position of accepting results whose genesis is concealed.
I don't think they are losing mindshare. Mathematica is simply unparalleled in its features. Any stats showing they are hurt by the closed nature of their software?
Mindshare is a bit fuzzy, but at least among academics, I do think its closed-ness has made it lose some of its luster in recent years. Mainly because the bigger focus on reproducibility and open code and such has made people feel like it's not quite the "right" way of doing things, especially if you're preparing something for public consumption (vs. private experimentation), compared to e.g. the more community-based and open Python math ecosystem. Ten or fifteen years ago people didn't think about that as much, so people used Mathematica happily. Nowadays of course many people still use Mathematica, but, unless my circle is totally unrepresentative, a good number feel a little more uneasy and maybe slightly guilty doing so, and have at least a desire and vague plans to switch if/when they find time or the alternatives get better.
As a researcher currently working in Matlab, if/when I release code publicly I'll be porting to C++ and writing bindings to other languages. It doesn't feel like I'm really contributing much to the community if I release code that requires thousands of dollars to run.
GNU Octave is a free/open alternative for Matlab, which is mostly compatible with things built in Matlab. Just make sure your code runs in Octave and you don't have to do any porting.
There's no viable alternative to Mathematica, let alone a compatible one. Even for the basic stuff I've used Mathematica (student license) for, basic symbolic integration, differentiation and simplification, I get inferior results from Sympy and Maxima. I haven't tried XCas yet, some say it is better.
And this is only talking about the computer algebra capabilities. Mathematica has all sorts of nice tools for doing plots, interactive UIs and other stuff.
> Any stats showing they are hurt by the closed nature of their software?
No reliable statistics, only the conjecture that Sage, sympy and other such environments allow people to produce a significant percentage of the results Mathematica can produce. Mathematica still has a substantial territory of advanced results unmatched by the free environments, but the gap is narrowing as the years pass.
I know this -- students are much more likely to acquire Sage or IPython than purchase even the lower-priced student version of Mathematica, simply because they can get the former for free, and there's plenty of high-quality documentation and examples available (example http://arachnoid.com/IPython). And how many undergraduate courses require the kinds of advanced results that only Mathematica can produce? And given those specific results, in an academic environment how much of a penalty is it that only the result is produced with no explanation or context?
I don't really see sympy and the like surpassing Mathematica. Even maple is kinda having trouble. If when I'm buying Mathematica I'm paying for a proper implementation of the risch (integration) algorithm, it will have been money well spent.
I'm not sure. I haven't looked at it in a very long time. The open source implementations I know reasonably well are: Maxima (and therefore Sage), SymPy, and Axiom. I did some work on a integration test suite for Sage before I had to put it on hold. It was based on a suite from Axiom.
There is no complete implementation of the Risch algorithm. None of the implementations fully implement the algebraic case. Besides, the Risch algorithm doesn't solve all symbolic integration problems in practice:
* Even when it succeeds, it doesn't necessarily give you the simplest possible form of the solution.
* It is concerned with elementary functions, but real-world problem often involve non-elementary functions (like Bessel and hypergeometric functions). You can extend the Risch algorithm to work with such functions, but this is complicated.
* It doesn't allow computing parametric answers for common parametric families of integrals (this needs to be done using heuristics and lookup tables).
* It doesn't give you an algorithm for definite integration, except in simple cases. Even with proper definite integrals, you need to be extremely careful with branch cuts when applying the fundamental theorem of calculus. For improper definite integrals, systems like Mathematica generally try to go via convolutions of Meijer G-functions, using huge lookup tables and simplification heuristics.
* Even more fundamentally, the Risch algorithm (and symbolic integration more generally) puts heavy demands on the underlying symbolic computation engine. In particular, it depends on the ability to decide whether an expression is equivalent to zero, which in fact is an undecidable problem, and this strictly speaking makes the Risch "algorithm" a non-algorithm (though it is a proper algorithm when restricted to a ground field where zero testing is effective, such as Q).
I can only say that I am very impressed by the knowledge you are displaying about the Risch algorithm and symbolic integration. If I may ask, what is your background and how did you learn about them so deeply?
PhD in symbolic computation (RISC). Symbolic integration is not my field of research, though, and I don't really know anything beyond the basics (covered in courses on computer algebra). Passively attended plenty of seminars and conference talks on symbolic integration, though, and for a couple of years, I did share office with Clemens Raab who is one of the experts on the Risch algorithm.
I am working on a project that requires symbolic computation, which I am learning a bit by myself. For now I can manage, but could I get in touch with you in case I would need some advice about that? My email is in my profile (thanks!).
> I don't really see sympy and the like surpassing Mathematica.
Given enough time, it will happen. There are several reasons. One, people who publish mathematics academically are reluctant to use a closed-source tool to create their results, because those results can't be examined and verified at their source. This issue pushes people toward sympy/Sage/Jupyter and other similar open environments, even though at the moment they aren't as powerful as the Wolfram environment.
For example, imagine that the four-color map problem (the first significant computer-aided result in mathematics) had been solved by a close-source environment (instead of an open, freely readable source as it was). If that had been true, people would still be arguing about whether the result was valid.
Two, an open-source environment like sympy attracts technically skilled people intent on improving it, knowing that they're contributing to a tangible kind of progress that's clear to everyone, and then freely copied by like-minded people into different environments, all with the intent to advance human knowledge, rather than make stockholders happy.
Three, this may not be apparent, but the existence of environments like Sage and sympy are putting tremendous pressure on Wolfram to price their products more reasonably. Instead, and so far, Wolfram's strategy has been to design enticing free samplers like Wolfram Alpha as gateways to their expensive offerings.
> If when I'm buying Mathematica I'm paying for a proper implementation of the risch (integration) algorithm, it will have been money well spent.
This is a perfect example -- until Mathematica is open-sourced, no one can know whether the existing algorithm is either complete or optimal. Also, given that research into this algorithm has enormous practical value in both mathematics and computer science, it's a shame that a large segment of the effort is being carried out in secret. I'm sure those responsible for its present form would love to publish their results, if only for the fact that this would get them fired and possibly prosecuted.
There was a time when people who made an original contribution to human knowledge would publish their results in the open (think Einstein) and take pride in their contribution to the common good. It seems those days are past.
imagine that the four-color map problem (the first significant computer-aided result in mathematics) had been solved by a close-source environment
Mathematica isn't magic and the source code for your mathematica program is perfectly readable text. Reproducing the result from a mathematica program without mathematica is often time consuming and occasionally painful, but it's rarely a hard problem. So if the four-color map problem had first been solved using Mathematica, it wouldn't have taken many weeks for the solution to get reproduced in a different languages. Hell you could probably reproduce the necessary code just from reading the paper without ever looking at their source code.
> Mathematica isn't magic and the source code for your mathematica program is perfectly readable text.
Yes, but the user's program only tells Mathematica what to do, not how to do it. How Mathematica does it is proprietary, and this represents a serious transparency problem for academic work and publication.
> Hell you could probably reproduce the necessary code just from reading the paper without ever looking at their source code.
If this were true, Wolfram wouldn't be able to charge thousands of dollars per copy of Mathematica. The reason Mathematica is expensive is because of what it conceals, not what it reveals.
Also, if they don't go FOSS, their users are living under a Sword of Damocles: At any point, they can choose to change everything, break everything, and your recourse is one of a variety of impolite ways of saying you have no recourse.
Being a customer doesn't save you, BTW: Giving them money insulates you not one whit from their decision that a course of action which destroys your whole setup will get them more money. This doesn't really change even if you have a contract: Unless you convince a thoroughly insane court to order some form of specific performance, the most you're entitled to is, essentially, a refund, maybe some punitive damages, and Wolfram no longer caring about you even to the extent they previously did.
I see Wolfram's offerings as an incredibly convenient prototyping and educational tool. I can't really imagine anyone sane is using it for anything that would result in a disaster significant enough to evoke a sword hanging over ones head.
There are different target groups for this kind of software. People who like open source will never use anything else, even if its inferior to closed source alternatives. Other folks will gladly pay to get a system that is robust, stable, and easy to use. I think there is enough market share for Wolfram to thrive for a long time (and open source alternatives too).
> People who like open source will never use anything else [...]
I like open source, but I _have_ to use mathematica to be as productive as my peers in my field. The open source tools that exist are indeed inferior and that's why I cannot use them.
However, this is not a good argument, as my field is physics. I do believe that the use of mathematica for science is a inherently bad thing, and should not be considered an allowed part of doing science -- because it is closed source.
I consider the reductionistic part of science very important, so when I use some function in mathematica I do not know exactly how it is implemented hence I cannot reduce my result beyond the point of "Wolfram says it is ok.". But that is not ok.
I have been lucky with all of my results, in the sense that one can check them by hand or by inferior products. But finding the result to begin with is why mathematica is almost necessary for a lot of calculations.
You have to think of Mathematica code as a specification of what your science does. As long as the expected output of the function is clearly defined, then your work is replicatable/verifiable (with enough effort) which makes it good science. I am much more concerned about occaisional places where the documentation of Mathematica is poor, than whether the soruce is viewable.
Open Source is just the ultimately precise but horribly inconvenient documetnation.
Fair enough. Perhaps my issue more correctly lies in the close-to absolute trust some of my colleagues have for mathematica.
Since mathematica is so much faster and feature rich people use it and only very occasionally is it verified by some other software. I would prefer, and would make things easier and faster, if we had (verifiable code) + (one result), instead of (no code) + (one result) + (independent check of result), since only rarely one bothers/have the time to make the independent check. In some cases there is no option to make an independent check (e.g. "with enough effort" is usually too much effort).
I have only used some of the modules that are available for SymPy. Most of them are not complete enough to use professionally, but I try to spend some time to learn them since I would prefer to use them when they get more complete -- but that's one reason why they are inferior.
At one point I was using SymPy and I wanted to invert a symbolic matrix, a rather small one but it had some off-diagonal elements. This took a few seconds in mathematica, after a few hours in SymPy I had to halt the execution of that line. I never got around to look at the code to see what caused it, probably some simple bug, but that's another reason.
I have used Sage somewhat as well. It has more features than SymPy, for what I do professionally. Still some features are missing that I would need. But this might also just be a problem of the amount of experience I have with these tools.
The last problem is that these are much slower than mathematica. I would certainly not say that I'm a good programmer, so my code is probably very slow and badly written. In mathematica I have done some calculations that take days to complete, but they were quite heavy calculations. For these projects I could in principal have used SymPy, I know it has enough features, but with how much slower it is, it would be useless (unless I was able to improve my code to compensate).
With more experience I could give more specific concerns.
Thanks. I must say that except the inversion example, this is still not specific enough for me to decide if SymPy (and other tools) are inferior, as you claim -- in particular, I can't tell if they are going to be inferior in doing the kinds of things I need done.
Given that FOSS still cannot properly replicate the workflow experience of Xerox PARC workstations and Wolfram tools are one of the best success stories of Lisp inspired work environments, I don't see that happen any time soon.
As another example, when will we have FOSS Notebooks that can match what Apple is doing with Playgrounds?
Having the means to the right funding makes a lot of difference, specially when many seem to be wary to pay for developer tools while gladly pay for any physical tools.
I'm not familiar with the workflow experience of Xerox PARC workstations. I am interested in novel and useful workflow experiences. Do you have sources that describe the benefits of the experience? If it is based on personal experience, can you elaborate?
My personal experience is based in Smalltalk VisualWorks and Oberon.
Smalltalk, well being Smalltalk.
Oberon being the product of Niklaus Wirth, after he learned Mesa/Cedar while at Xerox.
That experience, coupled with lots of archaeological digging for old manuals and papers is how I got to learn about it.
Basically Xerox had three workstation environments, Interlisp-D, Smalltalk and Mesa/Cedar.
All enjoying the fact of the workstation and OS blended into each other.
The CLI was a REPL, so you had full access over the OS. Any public API could be accessed in the REPL, you could interact with running applications, all the same way.
Also the REPLs were graphical with inline generation of data, so imagine something like Swift Playgrounds as the CLI.
Thank you for the clarification! I have worked with smalltalk (environment in which I learned OOP). I didn't realize that the default work environments in a Xerox PARC were REPL lisp, smalltalk or mesa (not familiar with mesa except as reference to mesa3d -- the same?). This sounds like an awesome environment. Mathematica doesn't really capture this either, not being integrated with the OS or third party applications, does it? Sounds like MS is trying to do this with PowerShell but with a poor interface compared to smalltalk or lisp (and probably less standardized). Did Xerox control all the software or mandate programming languages or interfaces?
Mesa was a memory safe system programming language created at Xerox, as an evolution from Extended Algol to replace BCPL. Niklaus Wirth based his Modula-2 design on it.
Shortly thereafter they updated Mesa into Cedar, which added support for RC with local GC for cycle collection. The system then got called Mesa/Cedar.
It allowed the same interactive experience as the other workstations, but using a GC enabled systems programming language.
The REPL provided nice features, like auto-suggestion when a typo would cause a compilation failure. It is also probably the first graphical debugger for a strong typed language.
Any OS API could be used on the REPL by typing modulename.procedure , which could use other OS APIs to get its input from different sources.
An idea Wirth adopted into Oberon.
You can see how all three environments looked like here:
Symbolic integration, differentiation and simplification just works miles better in Mathematica than any of the open alternatives I've tried.
It's quite common that the open alternatives just choke on something quite simple. In Mathematica, you can just use Simplify[] to get a nicely simplified expression. In Maxima/Sympy, you might be able to get the same result but you need to understand how the simplification algorithms work, ie. you have to choose which simplification method to apply based on the task and might need to apply more than one method to reach the goal.
Additionally: Mathematica is pretty darn simple to use and well documented. Going through the docs of Maxima, Sympy, etc requires you to be a domain expert in computer algebra. I am not. I just want something to assist me when a basic algebra task would require several sheets of paper and I'd be likely to make mistakes.
I am not even going to talk about the UI, plotting and other features. I haven't used them much.
I have not tried XCas yet, perhaps it's more suitable for my purposes. Some commercial calculators (ie. physical devices) are based on XCas.
note: I've been mostly working on some basic university level physics related to space flight and orbital mechanics. Stuff like Kepler's equations or rocket equation solutions.
There is one thing I don't understand about your argument, Microsoft did not open source their entire stack, but what you're asking of Wolfram would be akin to releasing the whole Windows source code into the wild. Sure Wolfram would still exist in some sense, maybe as a consulting company, maybe just selling support, but it would become a fraction of its current (not huge anyway) size.
> If they would make their stack FOSS they would be absolute heroes and shape the future [...]
... and instantly stop making money. I have the impression that making money is quite important to Wolfram Research.
You may be right that in the long run they're bound to get their lunch eaten by free alternatives, but "in the long run we are all dead" and it's really not surprising if they prefer "continue making lots of money from selling Mathematica, and maybe one day find that free alternatives take away our market" over "immediately make vastly less money from selling Mathematica, but keep market share for this big codebase we can no longer make much money out of".
Also, open-sourcing their stack would mean relinquishing a certain amount of control. Have you ever heard anything about Stephen Wolfram that would suggest he'd be OK with that?
I don't think Wolfram will open source their engine, ever. Their income is mostly from selling the software licenses an I don't know how they could replace that income.
However, it would be nice if they would open source parts of their application so bugs could be fixed in the user-facing parts. Even if their engine remains closed, the UI could be open sourced. I'm fine with them keeping their "secret sauce" proprietary and asking money for it. They spent decades making it work.
I am saying this because Mathematica for Linux doesn't work great. It's violating the X11 protocols and doing some crazy things with XSendEvents, which makes it not work at all on some window managers (window layout is completely fucked, mouse clicks aren't received properly, etc), while other WMs (e.g. i3wm) have Mathematica-specific hacks to ignore some of the messages it's sending.
I'm not sure what to do with this situation. For some of my projects (outside of paid work), I'd need Mathematica. So far I've used an educational site license for my university but now I've graduated and I won't have access to that.
So I could pay them $130 (student license, I still have my @uni.edu email for now) to $300 (normal license) but I don't know if they'd fix the issue. I could start using a more mainstream desktop setup (KDE, Gnome, whatever) in the hopes that it works, but that's not ideal either. I have not contacted customer support because I'm skeptical that they would do anything for such a small minority of their customer base.
Mathematica is almost the only closed source application I'd need. The open alternatives are not good enough and I'm not educated enough to improve them.
If you'd like a similar experience without being tied to a proprietary language and where the skills you develop can later be applied to other fields, I'd like to recommend our https://tonicdev.com .
It uses JavaScript (support for node 0.10 through 5), and instead of being one giant library made by one company, connects you to every version of every package on npm (that's 200,000+ libraries!). Anytime something is published on npm, it immediately becomes available on tonic, allowing you to work with the "global standard library". If you use something like D3, you can do math visualizations: https://tonicdev.com/tonic/d3-example-from-beaker . Alternatively, you can use async and await to play with APIs: https://tonicdev.com/capicue/iss/4.0.0 . When you're done, you can hit download and run it on your own computer using node.
"""Fannie Mae financial economist Bernard Gress is taking an innovative approach to predicting the stability of mortgages. He's using Wolfram technologies [...]"""
I love Mathematica and use it at least once a week. But these "free" versions are nothing but your first hit. And the Wolfram Language is not something you're going to figure out in the course of an afternoon with five notebooks.
>Wolfram Programming Lab is something that’s uniquely made possible by the Wolfram Language. Because it’s only with the whole knowledge-based programming approach—and all the technology we’ve built—that one gets to the point where simple code can routinely do really interesting and compelling things.
"knowledge-based programming" -> lots of libraries
"uniquely made possible by the Wolfram Language" -> we have the best libraries, and therefore the most expressive language
Stephen Wolfram is a font of interesting ideas that deserve attention. He really is an intelligent and perceptive guy. The problem is he's so arrogant that he consistently ignores (or, when he does acknowledge it, belittles) what others have done. I find myself unable to trust anything he writes or does because it's always filtered through the lens of his own brilliance - I intuitively expect that such a person will ignore serious problems with their own work because it's a threat to their ego.
I think we should look very carefully at his ideas, work out what they actually are (instead of what he thinks they are because he's not a reliable source) and steal them.
142 comments
[ 2.8 ms ] story [ 128 ms ] threadArguing that the freedom to restrictively licensing your software is more freedom than using GPL because it requires unrestricted future access is analogous to arguing that one should be tolerant of intolerance because that is the more tolerant action.
It's analogous to saying people who murder murderers are murderers. Which is true.
Wait, seriously? So, if someone says "I don't want my kids ever to meet gay people", and I say "I don't want my kids ever to meet that guy", then you feel that I'm more in the wrong?
The first person is ignorant, the second person is annoyed with ignorance. Ignorance isn't the same as being in a minority group. There's no human right to remain ignorant.
Everyone is always ignorant of something, you and I included. Human rights doesn't come into this. It's people pretending to be ignorant of nothing who I'm wary of.
I have a suspicion that we have totally different ways of thinking about this, so our disagreement might be about the axioms rather than their consequences, in which case it's probably useless on both sides for us to argue; but I would like to have one more go, to see if our disagreement is really so fundamental.
Why is it valid to say automatically that someone who is intolerant of homophobia is just doing what society is telling him or her to do? Indeed I'd say to the contrary that there are many societies where homophobia is the normal attitude, so that being intolerant of it is very much going against societal norms.
Even if I'm in a society where homosexuals are (correctly) treated as equals, then describing as simple conformity my revulsion at an attempt to treat them unequally seems to be extremely uncharitable. Why not simply say that I, too, am "being who I am", because of my upbringing or any other reason?
Okay. Let's try that.
Why is it valid to say automatically that someone who is intolerant of homophobia is just doing what society is telling him or her to do? Indeed I'd say to the contrary that there are many societies where homophobia is the normal attitude, so that being intolerant of it is very much going against societal norms.
That's a good question. If we were in such a society, the annoyance I have for people who follows the crowd and do not think for themselves would not apply to you.
Even if I'm in a society where homosexuals are (correctly) treated as equals, then describing as simple conformity my revulsion at an attempt to treat them unequally seems to be extremely uncharitable. Why not simply say that I, too, am "being who I am", because of my upbringing or any other reason?
I have distaste for the intolerant of the intolerant, because on one hand, they know the harm intolerance can cause in society, and on the other, they engage in the very same intolerance they know causes harm, and then they have the gall to tell people they are morally superior. That is knowingly causing harm, and then tricking people into thinking they're tolerating - all it provokes is the very same intolerance in other people, and the very same impulse to disguise this intolerance in others. The intolerant have a passive effect of reducing society's tolerance, which have the consequence of suffering in individuals. The intolerant of the intolerant have the same passive effect, except they're now knowingly partaking in this activity.
The intolerance of the intolerant makes the following situation possible: "Don't talk to that man, he is a misogynist! Oh by the way I hate misogynists. :)". Intolerance in society allows possible situations where simple label will smear the reputation of someone in other's minds for life, before people get to really know who the person is.
And that's the core problem of prejudice, isn't it?
> > Indeed I'd say to the contrary that there are many societies where homophobia is the normal attitude ….
> … If we were in such a society, the annoyance I have for people who follows the crowd and do not think for themselves would not apply to you.
If you are not in such a society, then you live in a happier world, or at least society, than I do—in particular, one where Antonin Scalia is not a Supreme-Court justice.
> I have distaste for the intolerant of the intolerant, because on one hand, they know the harm intolerance can cause in society, and on the other, they engage in the very same intolerance they know causes harm, and then they have the gall to tell people they are morally superior.
I think that certainly there are people who are smug about their intolerance of intolerance, just as there are people who are smug about their intolerance of homosexuality—used as a running example just because it's what I started with, not because I think it's the only kind of intolerance. However, I don't see why it's unfair for me simply to be repulsed by intolerance, without having my repulsion automatically judged to be artificial, and in service of some ulterior motive.
I agree that the fact that I am repulsed by something that (in my opinion, to be sure!) is actually morally bankrupt, as opposed to someone else's by something that is not, doesn't make me a better person; but I don't think that it makes me worse, either. That, and possibly also what seems to be your blanket assumption that intolerance of intolerance can only be in service of some agenda (and not a genuine emotional or intellectual reaction), I think is where we do, and may simply have to agree to continue to, differ.
Tolerance means accepting something is part of your reality, even when you don't like it. If tolerating means accepting something only if you like it, it wouldn't be called tolerance...:)
The fact that it's neither of those would suggest that people don't want it open badly enough. Listing off projects that are open to show that people like open things is absolutely irrelevant.
I think your point is missing the point. The market of people who just want a solution to work and be easy to use is much, much larger than the market that explicitly demands BSD or GPL-style freedom. Wolfram serves the former. Makes more money that way, too.
People don't "like open things" because of marketing hype, they just tend use the most useful things. Collaboration in programming is a feature. If no other projects on github are written in "wolfram language", then learning to program doesn't really enable you to do as much.
That seems a bit like saying that, if people demanded that North Korea were open, then it would be either (a) open or (b) gone. Of course, the lock-in to a software package is less than the lock-in to a country, but at a certain point it is not totally absurd to say that it is effectively impossible to switch.
You're forgetting the third and much more realistic option: that people will come together and create a substitute that far surpasses the original, because of the naturally collaborative nature of free software.
Wolfram the computational engine is a hosted solution, so there's very little point to "opening" that, business continuity reasons aside.
Mathematica I don't know much about, but afaik serious engineers, mathematicians and physicists use MATLAB generally. There's more of a shift to using R and Julia nowadays but academics are notoriously stubborn when it comes to using software, regardless of its quality.
All of those projects which you listed are more or less programming or web-content related - for which the domain knowledge is readily available among the people who enjoy working in open source. One needs domain experts in the particular domain to implement successful software.
Domain experts are motivated by money, peer reputation, and improvement in ones domain. Two of these are readily available in FOSS projects, and becoming a developer in a reputable FOSS project also improves ones career prospects financially quite considerably.
So, for a programmer, participating in a FOSS project is quite appealing.
Now take some other domain, like music. First, if ones peers are likely to be more or less ignorant of software development, they really cannot appreciate the effort an expert places on developing a software. They may find it interesting, but not as admirable as progressing in ones own domain. Secondly, while developing software may give insights in ones problem area, it's not directly related to her craft. Take a hypothetical composer - which is a more appreciated thing, him doing a composition, or testing/speccing some new compositional software. Thirdly, domain experts seldom gain any obvious financial benefit or participating in open source software (I'm talking about the dominating dynamics, not special cases).
Mathematica positions itself as a mathematical appliance, like a fridge or an oven or a car, none of which are generally running free software.
And that is why there are Linux gurus that will invest lots of time to get GNU/Linux run on their fridge - because there are people who will not accept this status quo.
I'm pretty sure the entire FLOSS movement outlines what is meant by software 'freedom' in this context, and why it is important.
And if you don't see the difference between a software "application" and consumer electrical appliances, I'd say you're being willfully ignorant.
Best to Wolfram. Lets see if this can become the pack leader.
I subscribed to their online offering when it originally came out, but immediately canceled because the UI is just so far behind its desktop competitors, like Maple, and even Matlab. I want to support this software, it has great potential, but they need to sit down and really rethink how it's put together and delivered to the user.
Then they decided to hop on the Java bandwagon, and rewrote their whole UI using some kind of cross-platform Java GUI toolkit. App startup time went from like a tenth of a second to like 30 seconds (at least, that was my subjective impression at the time). Every part of the GUI was laggy and glitchy, it crashed regularly, the documentation was reorganized and much more confusing, etc.
The big-ticket feature additions which supposedly justified the rewrite were some gimmicky stuff for writing formulas in a more standard-math-typography way instead of as plain text, plus some related handwriting recognition thingy, but this ended up being slow, confusing, and ineffective, and cluttering up the rest of the interface.
This was before I learned "real" programming, so I actually stuck with the Java GUI to get the pretty-printed math formula editor. Still, maybe that experience caused me to avoid writing Java programs later on...
- No setting of the platform's L&F
- Everything is done on the main thread
- No care is taken about how to write GC friendly code and data structures
- No attention to eye candy
It is like having Assembly developers cry at the shitty performance of C compilers in the early 80's and blame the language.
I still use Maple mainly because of familiarity. I've been using it since the 90s. I'm a contributor to SymPy, but even then I can think through the problem quicker using Maple.
* http://www.sagemath.org
* https://cloud.sagemath.com
But then I wonder, is that just because I see people who are skilled in the art or is it intrinsic to the language? If it is so powerful, how come I don't see more of it being used? Is this just because it runs on a closed system? So does Matlab, but at least in my experience Matlab seems more widely used, why is that?
Yes and no. MATLAB and Mathematica have access to the same BLAS libraries. If you're using packed arrays in Mathematica, you can expect similar performance for many pure numeric things. Mathematica is missing some of the higher level primitives, there's no built-in function that corresponds to DGEMM, as a random example.
Another weakness is that there's only a handful of packed array types, for a 64-bit system, you get tensors composed of doubles, signed 64-bit ints, and complex numbers; no bool arrays, no unsigned 32-bit or 16-bit, no enum or factor arrays. Now this is purely a performance thing -- you can make tensors/arrays containing anything you want, but their contents just won't be 'packed' into a contiguous region of memory, instead they'll be arrays of pointers to other memory on the heap. Such arrays are slower to work with, much less memory efficient, harder to pass over an FFI, etc.
There's also a lack of fast workhorse-ish functions involving tensors, so there isn't a way to broadcast a condition (say 4 <= x <= 10) onto an input matrix to get a 'mask matrix' as is so common in MATLAB and R and so on, and one of their secrets to writing fastish code in a interpreted language.
On the other hand, you can deal with ordinary lists (and Associations) that contain arbitrary types (as with any dynamically typed language), which makes many kinds of algorithmic work very straightforward. After all, not everything is best represented as an n-tensor of reals or ints or bools! But if your lists do happen to be homogeneous lists of ints or reals (of any rank), they will usually end up being stored more efficiently as mentioned above, a process that is, for better or worse, totally invisible unless you know about Developer/PackedArrayQ.
There is also Compile (https://reference.wolfram.com/language/ref/Compile.html?q=Co...) which still has a fairly limited type system, but will still let you bypass large amounts of interpreter overhead when you need to do something performance critical.
> you wouldn't analytically solve a sophisticated PDE so you would use numerics
The whole analytic/numerical distinction really isn't true anymore (e.g. https://reference.wolfram.com/language/ref/NDSolve.html, https://reference.wolfram.com/language/FEMDocumentation/tuto...).
> so that explains why MATLAB seems more prevalent.
I think the explanation lies more with MATLAB having exactly the right features (or the right toolboxes) at the right time to fill niches in thousands of engineering and research labs. If you're running a lab, and that postdoc who wrote the code driving your instrument has long since left, there is very little reason to embrace a new language, even if it has caught up in various ways, and especially if that new language isn't tailored exactly to what you are doing, and would prefer you to use some strange thing called "functional programming", etc.
The Matlab comparison isn't that useful though, because the languages are geared toward different problems. Matlab at its core is linear algebra ("engineering"), while Mathematica is based on symbolic computation ("algebra"). That's a pretty huge difference. They have both branched out I'm sure, but the history remains.
People have a similar confusion over Matlab/Julia vs. R. They're both scientific computing, but R is for statistics. (R has matrices and linear algebra, though they are fairly terrible compared to the data frame operations, and seem second class.)
I would think of each language as having a core data structure:
Julia is trying to subsume some of R, but it really is almost putting two different (but related) languages under one roof.Mathematica can get performance on par with Matlab. I think the real problem is that Mathematica's performance can feel inconsistent to beginners (i.e. some things are fast, some are slow, and why they are fast and slow is not at all obvious.)
http://julialang.org/
have a few more.
I also think marketing plays a part. Matlab has effectively sold itself as the go-to language for mid-scale number crunching (i.e. scientific-type problems that are complex enough where performance could matter, but not so complex that you need careful performance tuning or a supercomputer.) Mathematica can achieve similar performance in those sorts of problems, but in my mind, Wolfram has been presenting Mathematica as more of an educational/casual tool for one-off tasks.
I can't comment on cost or licensing offerings, but that could be a big factor as well.
It's good for scripts but I really don't see how you could maintain any sizeable project purely in Mathematica.
The same is true for MATLAB projects. Yet people do maintain sizeable projects in that. They're horrible, unreadable, and depend on various things in that specific installation of MATLAB that make any even medium sized program hard to even get running on another machine, never mind productionizing it.
But lots of people do it.
A) Can I run my programs locally without connecting to the cloud? B) Can I dynamically embed generated graphs on my own site, instead of using the Wolfram Cloud to host it?
+ Making instant web apps and APIs just by specifying two functions -- "front-end" and "back-end".
+ Easily creating impressive-looking programmatic 2D and 3D graphics and sounds.
+ Innovative idea making visible graphics and colors as arguments and outputs of functions.
+ "Knowledgebase" of facts accessible using natural language. (Though, this was often slow due to server calls.)
My main critique of Mathematica is that it is the epitome of a kitchen sink library. There is an overwhelming number of functions for every possible thing. So, it is often not feasible to know what is offered without a lot of reading. (In fact, Wolfram even states this in his book.)
This is the real problem with their "knowledgebase". I would love to enter any natural-language query and get an answer, but in reality I need to check their list of supported areas and know the seemingly arbitrary list of facts about each area. To really make this useful, Wolfram has to figure out how to make it work without requiring me to be so knowledgeable about what it contains a priori.
Also, having such a large standard library makes the language very "flashy". It is indeed impressive and inspiring to create a sphere or musical piece in one line of code. However, real programs end up being much larger. In practical programs, Mathematica's functional syntax results in long unwieldy statements with forced formatting. This is occasionally impressive, but it is just as often hard to decipher.
Mathematica has plenty of problems, like it's extreme slowness for things that should be comiled, and awkward reference passing, but the ones you've pointed out don't really make sense to me.
If you're running it locally, there's a very practical reason to complain: between Wolfram 7 and 8, the application bundle size went from 29 MB to 2.65 GB. That's not a typo.
However, this also means there is an enormous, aging codebase that Wolfram continually must maintain and add new features to. It means that coders from different communities (who use different sections of documentation) likely have very different standard practices. And, I am concerned that this philosophy of "always having to look everything up" really hinders their knowledgebase product due to lack of consistency.
However, I applaud Wolfram for the ambition and enthusiastically sticking with it over so many years.
http://www.leancrew.com/all-this/2012/04/where-modules-go-to...
In the short term a kitchen sink of predefined functions are great, but in the long term they become baggage that holds a platform back (and there's no way to improve them without breaking backwards-compatibility). They're usually a sign that the platform has its priorities wrong: you need a good dependency management solution, and once you have that there's not much value putting things in the standard library. (Look at Scala, which is going to a lot of effort to carve things out of the standard library so that they can be maintained separately with their own release lifecycle).
I really think this is like an Apple vs. non-Apple situation. Sure, the Apple ecosystem is closed and not as flexible and you can think of all these problems that it could get stuck on. But in practice for the large majority of Apple's target audience, these concerns don't pan out. And the benefits of that system are large.
How exactly do these functions work? Can you specify a front-end that's outside of the wolfram platform/domain?
If they would make their stack FOSS they would be absolute heroes and shape the future of applied math and computation software with a historic impact. Otherwise they will fade away, when other interfaces (Jupyter & Co.) catch up and/or surpass it in its capabilities. More and more people will just not accept the closed nature as it inherently contradicts with the idea of exploration.
There are basically 3 scenarios:
- they go FOSS now: best outcome for people and Wolfram
- they go FOSS later: good outcome for people, more difficult for Wolfram, as they lose developers/community
- the don't go FOSS (or not in near future): Wolfram SW won't be used anymore as open alternatives surpass it. People won't care.
Even Microsoft got it.
If you have a smaller problem, first type it into mathematica, and see if it comes up with an answer. It means that you don't have to divert your efforts into that small problem.
That said, mathematica has a function to have it explain exactly what it did to solve a particular problem. Example:
http://i.stack.imgur.com/V9dxn.png
The difference between Mathematica and other environments is that in the latter, you ascend from the trivial to the abstract, hopefully learning the entire structure as you go, but with Mathematica, you're deposited on a mountaintop with no obvious pathway down.
> That said, mathematica has a function to have it explain exactly what it did to solve a particular problem.
Yes, but this doesn't work for the more advanced features. If it did, someone could simply copy down the conversion sequence and recode it for a different environment. As a result, Mathematica users are in the position of accepting results whose genesis is concealed.
There's no viable alternative to Mathematica, let alone a compatible one. Even for the basic stuff I've used Mathematica (student license) for, basic symbolic integration, differentiation and simplification, I get inferior results from Sympy and Maxima. I haven't tried XCas yet, some say it is better.
And this is only talking about the computer algebra capabilities. Mathematica has all sorts of nice tools for doing plots, interactive UIs and other stuff.
No reliable statistics, only the conjecture that Sage, sympy and other such environments allow people to produce a significant percentage of the results Mathematica can produce. Mathematica still has a substantial territory of advanced results unmatched by the free environments, but the gap is narrowing as the years pass.
I know this -- students are much more likely to acquire Sage or IPython than purchase even the lower-priced student version of Mathematica, simply because they can get the former for free, and there's plenty of high-quality documentation and examples available (example http://arachnoid.com/IPython). And how many undergraduate courses require the kinds of advanced results that only Mathematica can produce? And given those specific results, in an academic environment how much of a penalty is it that only the result is produced with no explanation or context?
[0] http://maxima.sourceforge.net/
* Even when it succeeds, it doesn't necessarily give you the simplest possible form of the solution.
* It is concerned with elementary functions, but real-world problem often involve non-elementary functions (like Bessel and hypergeometric functions). You can extend the Risch algorithm to work with such functions, but this is complicated.
* It doesn't allow computing parametric answers for common parametric families of integrals (this needs to be done using heuristics and lookup tables).
* It doesn't give you an algorithm for definite integration, except in simple cases. Even with proper definite integrals, you need to be extremely careful with branch cuts when applying the fundamental theorem of calculus. For improper definite integrals, systems like Mathematica generally try to go via convolutions of Meijer G-functions, using huge lookup tables and simplification heuristics.
* Even more fundamentally, the Risch algorithm (and symbolic integration more generally) puts heavy demands on the underlying symbolic computation engine. In particular, it depends on the ability to decide whether an expression is equivalent to zero, which in fact is an undecidable problem, and this strictly speaking makes the Risch "algorithm" a non-algorithm (though it is a proper algorithm when restricted to a ground field where zero testing is effective, such as Q).
Given enough time, it will happen. There are several reasons. One, people who publish mathematics academically are reluctant to use a closed-source tool to create their results, because those results can't be examined and verified at their source. This issue pushes people toward sympy/Sage/Jupyter and other similar open environments, even though at the moment they aren't as powerful as the Wolfram environment.
For example, imagine that the four-color map problem (the first significant computer-aided result in mathematics) had been solved by a close-source environment (instead of an open, freely readable source as it was). If that had been true, people would still be arguing about whether the result was valid.
Two, an open-source environment like sympy attracts technically skilled people intent on improving it, knowing that they're contributing to a tangible kind of progress that's clear to everyone, and then freely copied by like-minded people into different environments, all with the intent to advance human knowledge, rather than make stockholders happy.
Three, this may not be apparent, but the existence of environments like Sage and sympy are putting tremendous pressure on Wolfram to price their products more reasonably. Instead, and so far, Wolfram's strategy has been to design enticing free samplers like Wolfram Alpha as gateways to their expensive offerings.
> If when I'm buying Mathematica I'm paying for a proper implementation of the risch (integration) algorithm, it will have been money well spent.
This is a perfect example -- until Mathematica is open-sourced, no one can know whether the existing algorithm is either complete or optimal. Also, given that research into this algorithm has enormous practical value in both mathematics and computer science, it's a shame that a large segment of the effort is being carried out in secret. I'm sure those responsible for its present form would love to publish their results, if only for the fact that this would get them fired and possibly prosecuted.
There was a time when people who made an original contribution to human knowledge would publish their results in the open (think Einstein) and take pride in their contribution to the common good. It seems those days are past.
Mathematica isn't magic and the source code for your mathematica program is perfectly readable text. Reproducing the result from a mathematica program without mathematica is often time consuming and occasionally painful, but it's rarely a hard problem. So if the four-color map problem had first been solved using Mathematica, it wouldn't have taken many weeks for the solution to get reproduced in a different languages. Hell you could probably reproduce the necessary code just from reading the paper without ever looking at their source code.
Yes, but the user's program only tells Mathematica what to do, not how to do it. How Mathematica does it is proprietary, and this represents a serious transparency problem for academic work and publication.
> Hell you could probably reproduce the necessary code just from reading the paper without ever looking at their source code.
If this were true, Wolfram wouldn't be able to charge thousands of dollars per copy of Mathematica. The reason Mathematica is expensive is because of what it conceals, not what it reveals.
Being a customer doesn't save you, BTW: Giving them money insulates you not one whit from their decision that a course of action which destroys your whole setup will get them more money. This doesn't really change even if you have a contract: Unless you convince a thoroughly insane court to order some form of specific performance, the most you're entitled to is, essentially, a refund, maybe some punitive damages, and Wolfram no longer caring about you even to the extent they previously did.
I like open source, but I _have_ to use mathematica to be as productive as my peers in my field. The open source tools that exist are indeed inferior and that's why I cannot use them.
However, this is not a good argument, as my field is physics. I do believe that the use of mathematica for science is a inherently bad thing, and should not be considered an allowed part of doing science -- because it is closed source.
I consider the reductionistic part of science very important, so when I use some function in mathematica I do not know exactly how it is implemented hence I cannot reduce my result beyond the point of "Wolfram says it is ok.". But that is not ok.
I have been lucky with all of my results, in the sense that one can check them by hand or by inferior products. But finding the result to begin with is why mathematica is almost necessary for a lot of calculations.
Open Source is just the ultimately precise but horribly inconvenient documetnation.
Since mathematica is so much faster and feature rich people use it and only very occasionally is it verified by some other software. I would prefer, and would make things easier and faster, if we had (verifiable code) + (one result), instead of (no code) + (one result) + (independent check of result), since only rarely one bothers/have the time to make the independent check. In some cases there is no option to make an independent check (e.g. "with enough effort" is usually too much effort).
Can you be more specific? It might be interesting to hear if people found viable solutions to specific concerns.
At one point I was using SymPy and I wanted to invert a symbolic matrix, a rather small one but it had some off-diagonal elements. This took a few seconds in mathematica, after a few hours in SymPy I had to halt the execution of that line. I never got around to look at the code to see what caused it, probably some simple bug, but that's another reason.
I have used Sage somewhat as well. It has more features than SymPy, for what I do professionally. Still some features are missing that I would need. But this might also just be a problem of the amount of experience I have with these tools.
The last problem is that these are much slower than mathematica. I would certainly not say that I'm a good programmer, so my code is probably very slow and badly written. In mathematica I have done some calculations that take days to complete, but they were quite heavy calculations. For these projects I could in principal have used SymPy, I know it has enough features, but with how much slower it is, it would be useless (unless I was able to improve my code to compensate).
With more experience I could give more specific concerns.
As another example, when will we have FOSS Notebooks that can match what Apple is doing with Playgrounds?
Having the means to the right funding makes a lot of difference, specially when many seem to be wary to pay for developer tools while gladly pay for any physical tools.
Smalltalk, well being Smalltalk.
Oberon being the product of Niklaus Wirth, after he learned Mesa/Cedar while at Xerox.
That experience, coupled with lots of archaeological digging for old manuals and papers is how I got to learn about it.
Basically Xerox had three workstation environments, Interlisp-D, Smalltalk and Mesa/Cedar.
All enjoying the fact of the workstation and OS blended into each other.
The CLI was a REPL, so you had full access over the OS. Any public API could be accessed in the REPL, you could interact with running applications, all the same way.
Also the REPLs were graphical with inline generation of data, so imagine something like Swift Playgrounds as the CLI.
Lots of nice documents here:
https://archive.org/details/bitsavers_xerox
Filtered by language:
https://archive.org/details/bitsavers_xerox?and[]=subject%3A...
https://archive.org/details/bitsavers_xerox?and[]=subject%3A...
https://archive.org/details/bitsavers_xerox?and[]=subject%3A...
So these workstations where an whole stack OS.
You can read about their implementations on the links I provided before.
Additionally, you can get the original Smalltalk-80 from from Stephane's web site.
http://stephane.ducasse.free.fr/FreeBooks.html
This is a very ruft idea how it felt to use a Smalltalk workstation:
https://www.youtube.com/watch?v=8yxCJfayW-8
https://www.youtube.com/watch?v=JLPiMl8XUKU
The REPL was what is known in Smalltalk as transcript.
Similarly the Interlisp-D workstation also had they own mixture of REPL and editing
https://www.youtube.com/watch?v=wlN0hHLZL8c
Some of the ideas that lived on the Lisp Machines afterwards
https://www.youtube.com/watch?v=NOysrxexTXg
https://www.youtube.com/watch?v=o4-YnLpLgtk
Mesa was a memory safe system programming language created at Xerox, as an evolution from Extended Algol to replace BCPL. Niklaus Wirth based his Modula-2 design on it.
Shortly thereafter they updated Mesa into Cedar, which added support for RC with local GC for cycle collection. The system then got called Mesa/Cedar.
It allowed the same interactive experience as the other workstations, but using a GC enabled systems programming language.
The REPL provided nice features, like auto-suggestion when a typo would cause a compilation failure. It is also probably the first graphical debugger for a strong typed language.
Any OS API could be used on the REPL by typing modulename.procedure , which could use other OS APIs to get its input from different sources.
An idea Wirth adopted into Oberon.
You can see how all three environments looked like here:
http://www.chilton-computing.org.uk/inf/literature/books/wm/...
And yes, Powershell alongside .NET is probably the closest we have in modern computers to those systems.
Followed by Swift Playgrounds and AppleScript on Apple systems.
Although Apple also provided similar experiences with Common Lisp, Hypercard and their NewtonScript and Dylan.
MIT Lisp Machine screenshots from 1980:
http://bitsavers.informatik.uni-stuttgart.de/pdf/symbolics/L...
Yet another proof that the success of AT&T meant a left turn.
Symbolic integration, differentiation and simplification just works miles better in Mathematica than any of the open alternatives I've tried.
It's quite common that the open alternatives just choke on something quite simple. In Mathematica, you can just use Simplify[] to get a nicely simplified expression. In Maxima/Sympy, you might be able to get the same result but you need to understand how the simplification algorithms work, ie. you have to choose which simplification method to apply based on the task and might need to apply more than one method to reach the goal.
Additionally: Mathematica is pretty darn simple to use and well documented. Going through the docs of Maxima, Sympy, etc requires you to be a domain expert in computer algebra. I am not. I just want something to assist me when a basic algebra task would require several sheets of paper and I'd be likely to make mistakes.
I am not even going to talk about the UI, plotting and other features. I haven't used them much.
I have not tried XCas yet, perhaps it's more suitable for my purposes. Some commercial calculators (ie. physical devices) are based on XCas.
note: I've been mostly working on some basic university level physics related to space flight and orbital mechanics. Stuff like Kepler's equations or rocket equation solutions.
... and instantly stop making money. I have the impression that making money is quite important to Wolfram Research.
You may be right that in the long run they're bound to get their lunch eaten by free alternatives, but "in the long run we are all dead" and it's really not surprising if they prefer "continue making lots of money from selling Mathematica, and maybe one day find that free alternatives take away our market" over "immediately make vastly less money from selling Mathematica, but keep market share for this big codebase we can no longer make much money out of".
Also, open-sourcing their stack would mean relinquishing a certain amount of control. Have you ever heard anything about Stephen Wolfram that would suggest he'd be OK with that?
However, it would be nice if they would open source parts of their application so bugs could be fixed in the user-facing parts. Even if their engine remains closed, the UI could be open sourced. I'm fine with them keeping their "secret sauce" proprietary and asking money for it. They spent decades making it work.
I am saying this because Mathematica for Linux doesn't work great. It's violating the X11 protocols and doing some crazy things with XSendEvents, which makes it not work at all on some window managers (window layout is completely fucked, mouse clicks aren't received properly, etc), while other WMs (e.g. i3wm) have Mathematica-specific hacks to ignore some of the messages it's sending.
I'm not sure what to do with this situation. For some of my projects (outside of paid work), I'd need Mathematica. So far I've used an educational site license for my university but now I've graduated and I won't have access to that.
So I could pay them $130 (student license, I still have my @uni.edu email for now) to $300 (normal license) but I don't know if they'd fix the issue. I could start using a more mainstream desktop setup (KDE, Gnome, whatever) in the hopes that it works, but that's not ideal either. I have not contacted customer support because I'm skeptical that they would do anything for such a small minority of their customer base.
Mathematica is almost the only closed source application I'd need. The open alternatives are not good enough and I'm not educated enough to improve them.
It uses JavaScript (support for node 0.10 through 5), and instead of being one giant library made by one company, connects you to every version of every package on npm (that's 200,000+ libraries!). Anytime something is published on npm, it immediately becomes available on tonic, allowing you to work with the "global standard library". If you use something like D3, you can do math visualizations: https://tonicdev.com/tonic/d3-example-from-beaker . Alternatively, you can use async and await to play with APIs: https://tonicdev.com/capicue/iss/4.0.0 . When you're done, you can hit download and run it on your own computer using node.
http://www.wolfram.com/mathematica/customer-stories/predicti...
"""Fannie Mae financial economist Bernard Gress is taking an innovative approach to predicting the stability of mortgages. He's using Wolfram technologies [...]"""
I love Mathematica and use it at least once a week. But these "free" versions are nothing but your first hit. And the Wolfram Language is not something you're going to figure out in the course of an afternoon with five notebooks.
Translating out of Wolfram-ese:
"simple code doing interesting things" -> expressiveness
"knowledge-based programming" -> lots of libraries
"uniquely made possible by the Wolfram Language" -> we have the best libraries, and therefore the most expressive language
Stephen Wolfram is a font of interesting ideas that deserve attention. He really is an intelligent and perceptive guy. The problem is he's so arrogant that he consistently ignores (or, when he does acknowledge it, belittles) what others have done. I find myself unable to trust anything he writes or does because it's always filtered through the lens of his own brilliance - I intuitively expect that such a person will ignore serious problems with their own work because it's a threat to their ego.
I think we should look very carefully at his ideas, work out what they actually are (instead of what he thinks they are because he's not a reliable source) and steal them.