Mathematica on Raspberry Pi for free
raspberrypi.org
raspberrypi.org
I don't get it... Wolfram is a money-hungry egomaniac. For example, unlike the other big Ma competitors (Maple, Matlab, Magma) not a single source line of Mathematica code is exposed. He's litigious, he labels everthing "mine", he endlessly praises himself. He wrote this insulting "don't worry your pretty little head with our source code, it's too complicated for you" piece:
http://reference.wolfram.com/mathematica/tutorial/WhyYouDoNo...
So... gratis Mathematica on Raspbian... what's the catch? Is it to lure us to the cloud?
Edit: To clarify, my guess here is that they want to give people a taste of Mathematica on weak hardware in order to lure them to a subscription model on "the cloud" where much more processing power will be available, just like widespread university site-wide licenses and turning a blind eye to student piracy are great marketing strategies.
Is there any evidence to support my wild theories?
Well,it's mathematics software, so it's actually really not unreasonable. Fortunately, the rest of mathematics has moved past the seventeenth-century style of "Here's my result, the proof is secret". If Mathematica is intended to be suitable for mathematical research, then its source must be open so that the results are auditable.
Other mathematics software like Sage doesn't have this problem, and is already available for the Raspberry Pi for free, obviating the need to use Mathematica.
You don't need source to audit the results. It's a tool, just like a calculator or a table of logarithms or a table of integrals. If I use an HP calculator for a calculation, for instance, you don't audit my results by examining the source for the calculator's firmware and convincing yourself it is right and then accepting my results. No, you audit my results by doing the calculation on your Casio calculator and seeing if it comes out the same.
In fact, you do. Modern computer mathematical results require full exposure, nothing can be left to the imagination. This is true and understandable.
Going back to the first important computer mathematical result (the solution to the four-color map conjecture¹ in 1976), to be taken seriously, computer math results have been required to be fully transparent.
Imagine auditing a cancer cure without knowing anything about the methods or tools. Same idea.
Really, it's not a zero-sum-game between open-source and commercial tools.
Yes, there are mathematical results that can be validated independently. But the problem is not so much pure mathematics as numerical results. In that arena, the method by which the results were acquired must be accessible in detail. And much of modern applied mathematics relies on numerical results. Imagine producing a result of some value and being unable to explain in detail how it was arrived at, because it emanated from a closed-source program.
The four-color map problem I mentioned earlier was the first important case where this problem had to be dealt with, and it was resolved to everyone's satisfaction only because the full source was made available.
Did the four-color map problem use numerical results? I imagine it was just a pure combinatorial enumeration problem (I have not read the original paper, I may be wrong about that).
If you're doing a finite element method to validate a bridge design, you're hardly publishing a paper based on the result (though of course you will do plenty of validation and then times everything by 2 for good measure!).
What kinds of actual fields of mathematics are you thinking about, here?
I know that error analysis is a deep and arcane subject, and personally I have no idea how well or badly we do in that department, but I'm struggling to think of where the details of how we get it wrong or right is crucial for the development of published academic mathematics.
"Most" maths is totally abstract these days, categories and sheaves and topi and what not.
In that case, anyone who uses more than one example to make his point is jumping around. If allowed to prevail, this non-argument would cripple debate.
> Did the four-color map problem use numerical results?
Yes, emphatically so. There were a certain finite number of possible maps (1936 to be precise), and each of them had to be tested explicitly. The reason for the requirement for full disclosure was that the tested set needed to be examined to assure that nothing germane was excluded, nothing included on specious grounds, and the manner of testing had to be closely examined. None of this could be reduced to a simple equation, and none of it yielded to a formal, concise mathematical proof.
> I imagine it was just a pure combinatorial enumeration problem (I have not read the original paper, I may be wrong about that).
If that were true, there would have been no role for a computer program -- it would have been published as a pure and formal result, like Fermat's last theorem. No one would have cared about the role played by computers, because a formal and pure proof could be examined by anyone sufficiently versed in mathematics.
> What kinds of actual fields of mathematics are you thinking about, here?
Any field that would benefit from use of a computer. By recent count, that's nearly all mathematical fields for one reason or another, including areas we once might have thought would have no use for a computer. Computer mathematics has gotten to the point where computers, laboring independently, come up with new theorems that humans have overlooked.
> I know that error analysis is a deep and arcane subject, and personally I have no idea how well or badly we do in that department, but I'm struggling to think of where the details of how we get it wrong or right is crucial for the development of published academic mathematics.
Most struggle with that, and part of the struggle is being able to see the detail of the algorithms used to arrive at a result. No detail, no trust, no science.
> "Most" maths is totally abstract these days ...
Not relevant. Relevant would be whether that abstract mathematics is or is not fully revealed in its details. For science, it must be.
This article --
http://www.newscientist.com/article/dn7286-computer-generate...
-- discusses the role of theorem-proving software like Coq, but includes a misleading statement by someone at Microsoft: "Microsoft hopes to develop a similar system for checking the logic used in computer programs, which could pre-empt some unforeseen bugs that cause programs to crash."
I hope this is an error on the part of the journalist who wrote the article, because it implies that Turing's halting problem, and Gödel's incompleteness theorems, which lie behind it, are potentially soluble. They aren't. All the more reason for full disclosure.
You don't have to _decide_ whether a program halts in order to prove it. In many cases, termination is not so much even a proof obligation as it is a _fact_ by construction; in the harder case where termination is not obvious structurally, you can simply rewrite your general recursion as a call-graph, and then termination is a proof obligation which you must satisfy if you wish to execute it.
Decidability is much a much stronger thing than "provability in most relevant cases", and it turns out that the latter suffices. By Gödel, there are indeed "true" sentences which you cannot prove in a particular system, but I am willing to give you a hundred thousand dollars if you can actually find one and print it out. That is, Gödel's result was indeed sort of constructive, in that it did provide a scheme to construct such a sentence, but nobody does so because the term is so unfeasibly large.
There are many things which we should like very much to be decidable, some of which _can_ in fact be decidable (by Turing, termination is not one of those). For instance, in some systems (such as Intensional Type Theory), type checking is decidable, which is really nice. In others, type checking is undecidable (such as in Extensional Type Theory); does this mean that type checking cannot be done? Of course not. It simply means that type checking becomes a proof obligation, since the typing derivations may not be entirely synthesized by the type checker. (A simple demonstration of this is equality in a NuPRL-like system: propositional equality is reflected into definitional equality; there is not decidable equality for functions; therefore, there are equations which might hold definitionally by equality reflection, but for which further proof would be required; therefore, definitional equality is undecidable; therefore type checking is undecidable; but we can still prove that a term is well-typed, even if type checking is undecidable.)
The sort of access to source code that is being expected here is really no more than the sort of access that you can get to Windows code. It really is not an unreasonable expectation.
I suppose that you, however, do not, which makes what I was trying to say irrelevant.
I do think there is a commercial side to this, too, however. This is a kind of a hook to catch future customers of the commercial package.
Not at all. In computer programming, examples abound in which the gap between the formal algorithm and its practical embodiment led to catastrophe. One can scarcely count the number of times in which the specific manner by which a simply stated algorithm was implemented needed to be examined more closely:
http://en.wikipedia.org/wiki/Ariane_5
"Ariane 5's first test flight (Ariane 5 Flight 501) on 4 June 1996 failed, with the rocket self-destructing 37 seconds after launch because of a malfunction in the control software.[20] A data conversion from 64-bit floating point value to 16-bit signed integer value to be stored in a variable representing horizontal bias caused a processor trap (operand error) ..."
> When you're giving a driving test, you don't need to know how a fuel-injection system works.
No, but someone does. If the software is inaccessible, then no one can check it except its owners, who have an incentive not to check it thoroughly, or to conceal what they have discovered.
How would you even approach this?
Deep enough that the meaning of the result cannot reasonably be called into question, just like in science.
> How would you even approach this?
As scientists. Someone once described science as ... not so much knowing as knowing that we know. Same idea.
Many results that seemed certain when published, evaporated once the mathematics were examined closely. This happens even when the entire process -- data, equations, conclusions -- are all included in the publication. Given that history, imagine how much more cautious people want to be when part of the process of arriving at a critical conclusion is concealed perpetually.
I think what is really being asked is: "What level of confidence is required?".
I would assume you trust the hardware and only scrutinise the software? In contrast: are results tested on a plurality of machines with intentionally, measurably different hardware and the absence of discrepancies implies that the hardware is not a factor with regard to the problem being solved? Presumedly you'd need some sort of standardised test suite to pass on your hardware to really confidently declare the hardware to not be a factor.
I doubt this is the case, but like the previous poster, I'm quite curious as to the specific level of scrutiny applied here.
That's something that varies from field to field. In physics, a new discovery requires a five-sigma result, meaning a result that has a one in 3.5 million probability of arising by chance rather than the legitimate detection of a new particle or phenomenon.
http://www.select-statistics.co.uk/blog/webmaster/one-sigma-...
In psychology, by contrast, a p-value of 0.05 (i.e. 2 sigma) is accepted as statistically significant, which by itself may explain the sad state of the field.
http://en.wikipedia.org/wiki/P-value
> I would assume you trust the hardware and only scrutinise the software?
No, a scientist doesn't trust either hardware or software, but hardware can be checked and validated. In the case of Mathematica, the software cannot be checked and validated, it must be trusted. And for a scientist, trust cannot be distinguished from faith.
"No, a scientist doesn't trust either hardware or software, but hardware can be checked and validated." Do you know if or how this is done?
In both cases, the commercial package has many, many features that the free version barely implements or even completely lacks, and implements many of the shared features better. On top of that, the commercial software has the advantage of being market leader. That brings with it that it, in general, is easier to find a Mathematica package to do X that to find a Sage one.
That's not really how you refute an analogy. In any analogy, you can find differences, but not all differences are relevant. You could say "Mathematica isn't made of wood", or "Mathematica isn't full of soldiers", but these differences don't weaken the analogy.
You have to look at the claimed similarity (in this case, ulterior motives) and show a difference that conflicts with that claim.
You have failed to do this, and so your refutation falls flat.
OP was talking about fearing the 'gift' because it might be a ploy to get you data-locked into Wolfram's cloud suite, or some other kind of bait-and-switch. As in, there might be unforeseen consequences of embracing this offering. I don't think there was any implication that we might not be able to uninstall Mathematica. I think it's an apt analogy.
Consider Microsoft's old "embrace, extend, and extinguish" strategy, which devastated the PC software ecosystem in the 90s. Was that problem solved by individual users uninstalling Microsoft's products? Of course not. Recovering from that destruction was a far more difficult and grueling process which isn't quite finished even today.
This is a Trojan horse. It undermines the open source alternatives. The Pi foundation here is betraying its open source roots.
No, it's not betraying it's open source roots. It has none. The Raspberry Pi has been a proprietary environment dressed up in open source clothing from the beginning.
The Raspberry Pi has most of its processor silicon devoted to a chip that you are not allowed to touch -- the ARM6 core is really more of a coprocessor to the GPU, which comes with a big binary blob. OK, you say, forget the GPU, I'll just use the little ARM core. Nope! You can't boot the system at all without the blob.
Then we've got their laughable attempt to pass off a shim that delegates function calls as an open-source driver. Or their support for software patents, with patent-restricted chip features that require separately purchased licences.
The Pi foundation's roots are with Broadcom, a company known very well for its hostility to open source.
Just because it's not 100% open source doesn't mean it has no roots there. I know this is hotly debated in many circles, but in my book it doesn't have to be all or nothing.
Personally, I feel they made the right decision for their project. I'd rather introduce kids to linux, computing, and hacking on a device that is relatively open rather than on a purely open device that schools may not even be able to afford.
The Raspberry Pi is a cool machine, but the "open source" hype about it is rather exaggerated.
I think they were were so focused on the educational side that they didn't realise how interesting the device would be to hackers and hobbyists. Remember the problems launch where the demand hugely outstripped the initial manufacturing runs.
It is, as you say, an analogy and not to be taken literally.
Someone offering a suspiciously good gift can be expected to expect something in return that may not be to your benefit - particularly if the gift giver is not known for being a philanthropist.
In program why would someone want a closed source solution that cost $2,000 for profession use and $200 for a one year personal license when we have so many great Open Source languages? Why program in something closed source any more? I can't see that working especially in statistics and math.
How would any closed source (secrets) Mathmatica be a better option than an open source language (Sage)? Really want to understand the thought process.
Also Trojan hHrse analogy is always used when referring to closed source programs coming into an environment. Take your issue up with RMS (Richard Stallman)
http://blog.wolfram.com/2013/11/21/putting-the-wolfram-langu...
And re free tools: I doubt very much that Sage has any mechanism for flashing LEDs through the GPIO pins of the Pi, or doing image processing on a RaspiCam, or balancing an inverted pendulum using control theory, or modelling and controlling a sous vide cooker.
For the tinkerer, getting an embedded device to do something cool isn't going to lead to bankruptcy in older age.
From talking to other people at the company I know of only two Wolfram employees who are active on HN, being myself and carlob.
I don't think I cheer Wolfram, particularly. He's arrogant, sure, his posts are self-aggrandizing (or rather product-aggrandizing), sure -- although I don't think that these are remarkable properties for a CEO to have.
But we have some really nice technology that not many people seem to know very much about, so I comment a lot about it when the opportunity arises. Also, I think NKS has some cool stuff in it -- that's how I got associated with the company in the first place, through an amazing summer school experienc in Pisa, Italy.
You use the RPi.GPIO module, as follows:
import RPi.GPIO as GPIO
There's some more information here:https://code.google.com/p/raspberry-gpio-python/wiki/BasicUs...
Probably because it does something Sage can't do. I can think of several reasons why I'm attached to Mma.
1) It has a great help system. Having 3 to 100 examples per help entry, and a See Also section in every single one f them is invaluable, at least for me. I almost can't use any other language's help system after using this one, because it's so good. Good yet simple; nothing prevents others from maintaining at least Examples-driven documentation but almost nobody does that, and I'm not aware of a single other documentation model that would include [consistently] both Examples and See Also sections. With its interactivity and tutorials on top, MMA's DocCenter is completely unbeatable.
2) Sage is for mathematics, Mma is for everything. That's what Wolfram says, and that's what programmers usually giggle at. Ask non-programmers, like me, about it. I use Mma for everything, and I can't imagine using Python instead. I actually feel rather weird explaining this on HN. Have you read about Blub Paradox in “Beating the Averages”? Mathematica vs Sage is Lisp vs Python. Of course I'd never use Sage. Wolfram language is really good: I use it as a basic markup for every piece of structured data that I need to write down in everyday life. I can't think of any single alternative here: other markup languages I know of are way too clumsy for this.
3) Mma has a unique interface, a mix of GUI and CLI. Nobody else has that. IPython Notebooks is a (surprisingly late) attempt to mock it, but for me it looks a bit like an exercise in sympathetic magic: for example, they've copied In and Out labels that are actually Mma expressions, that is, a part of its language. Not that it's an essential part but still, it looks like IPython authors were rather clueless about what they tried to imitate. Mma notebooks themsevles are written in Wolfram language while IPython Notebooks are written in that miserable excuse of a markup called JSON.
Mathematica is Enterprise-class emacs. It's general, powerful, AND also user-friendly and good looking, unlike emacs. I can be sure that lots of people will use it who would never dive into a black hole of a terminal [until absolutely neccesary], yet all the power of CLI will be with them when they use Mma. Well, this sounds like the kind of people I want to write software for.
As for closed source, Mma is just too good for that being a crucial drawback. Besides, a truly mathematical result never depends on anything external so it doesn't matter whether you use black boxes while producing it, or not. If only mathematical result is correct and valuable, then it /must/ be self-contained.
I looked up how it was in version 0.0.1 from 12 years ago and it turns out the original CLI format was made to look like Mathematica [1]: "Interactive execution with automatic history, tries to mimic Mathematica's prompt system".
It's obvious. The first exposure to something expensive is often free. Heroin. Women. Alcohol. All those things that end up costing much more than one can imagine at the outset.
It's a classic marketing strategy, and it works.
> My immediate guess is that they think the money isn't in selling the software itself but to have some sort of cloud-based subscription model ...
No, it will be more like Wolfram Alpha, a way to show what a product can do without providing the full experience.
It's actually a simple concept. Apple used that in schools for ages, first with the Apple II, then with low-end Macs. The software you use in high-school or college stands a good chance of becoming your choice later in life.
As it happens, closed-source mathematical software is next to useless for anything serious, and for scientific work, it's fatal. This is the single biggest obstacle to programs like Mathematica -- it may be useful for experimentation, but once one intends to publish, it has to be completely excluded from the process.
Imagine someone claiming to have cured cancer, but using a method that other laboratories cannot imitate or inspect, essentially black magic. That's what faces people who try to use Mathematica in scientific work. It violates the most basic principle of science -- transparency.
That's kinda funny. Our revenue per employee is lower than the industry average. If the company was interested in money uber alles, there are many more profitable and less interesting ways of doing it than what we do now.
> not a single source line of Mathematica code is exposed
Well, not sure what you mean by 'exposed'. But you can read large swathes of our code by looking in the right place in the installation. We also have some official open source projects, like our HadoopLink: https://github.com/shadanan/HadoopLink
> That's kinda funny. Our revenue per employee is lower than the industry average.
That's true for investment banks too (i.e. lower than comparable management positions in other fields), but this doesn't mean the higher-ups aren't money-hungry egomaniacs. In fact, it can be argued that when the salaries of mid-level employees are low compared to industry norms, that fact may be used to argue that the company is top-heavy, even possibly money-hungry.
> But you can read large swathes of our code by looking in the right place in the installation.
This is misleading. One can read all sorts of user-level script code, but no source code at all. It's not an accident, and it explains why Mathematica cannot be used in serious mathematical work, work meant for technical and scientific publication and peer review.
Read my post again: revenue / employee, not salary / revenue.
> One can read all sorts of user-level script code, but no source code at all.
What? Probably half of the Wolfram Language is written in the Wolfram Language. How is top-level code not source code?
> it explains why Mathematica cannot be used in serious mathematical work, work meant for technical and scientific publication and peer review.
You keep saying that... I think the truth is more subtle. A tool like Mathematica might play a crucial role in some result, but the proof or result itself doesn't a priori need to rest on any black box software at all to be reproducible.
A nice family of examples would be the class of NP problems, for which the discovery might have been difficult, and achieved via proprietary tools, but the verification is possible via open-source tools or with direct human insight.
And that's not even considering physics, biochemistry, engineering, and astronomy, where many of the tools you use will always be expensive and built by industry, and have no impact on peer review. Especially if they are a means to visualizing data to generate hypotheses, or processing or wrangling data into a tractable form.
I can write BASIC code all day long without having access to the engine, the interpreter. But if I publish my result, there will be problems.
Also, if the language under discussion were so open, people would write third-party imitations -- not imitations of the results, but of the methods as well. But they can't. They can't because the source is secret.
> And that's not even considering physics, biochemistry, engineering, and astronomy, ...
The only way a result from a proprietary source would not be an issue is if the result isn't original. A routine statistical result, one that anyone can duplicate, isn't likely to be an issue. But an original result, one in which the mathematics itself is key to the result, would require full disclosure.
> ... where many of the tools you use will always be expensive and built by industry, and have no impact on peer review.
Not really. Any significant result must be completely transparent. To understand the reasons, review the history of the Mars Climate Orbiter:
http://en.wikipedia.org/wiki/Mars_Climate_Orbiter
Even though the specifications were perfectly clear, even though everything was out in the open, two teams used different unit systems, and a critical mid-flight burn went wrong. Imagine how much worse such things would be if any part of important technical processing was concealed from close inspection.
Is a telescope a proprietary source? Is a commercially manufactured CCD a proprietary source? Maybe they got the response curve wrong! Okay, test it before you announce your galactic dust measurement paper! I take that attitude towards "experimental mathematics" that involve computers in some deep way.
And no need to patronize with Wikipedia links, I know the story about the Mars Climate Orbiter. And I don't think it even demonstrates your point. As I understand it, vxWorks, which many of the NASA missions use, is closed source. You have to pay to see the source. And I'm sure that Wolfram Research would or could do the same thing for e.g. intelligence agencies (and hopefully will do for everyone in the future, fingers crossed).
Let me do some patronizing of my own: are you sure your understanding of what the language does is up to date? You seem to talk of it as if it were a predominantly a CAS: http://reference.wolfram.com/language/index.html
Translation: "Don't document your claims like a scientist. What kind of conversation do you think this is?"
> As I understand it, vxWorks ...
Not relevant to the discussion except as another example of the dangers of closed-source systems.
Personally, I would love to see Mathematica's simplification and integration routines some day and discuss them with everyone. That's one of the "basic" things that the free CASes still get so woefully wrong, and for me is one of the most interesting secrets.
So you guys (?) released publicly some boring code about linking Mathematica with Hadoop. Big whoop, it's just a wrapper. Where's the real interesting stuff?
Which means that open-sourcing our projects during their actual development isn't worth the significant development cost (an entire toolchain would need to be open-sourced, and documented). And it also is somewhat antithetical to our design process, which is kinda centralized around Stephen himself, who for the most part really does have a good sense of design.
I think that could change, though, and then I think there is a really good opportunity to open source more of our stuff and start building stuff collaboratively with a wider community. Especially when our Cloud stuff comes online.
Also, I regularly bug Wolfram about open-sourcing some core part of the kernel. He's not in principal against it, but points out that it would cost a lot, buy us nothing in the short term, and fork the language. But I think it'll happen eventually, hopefully sooner rather than later.
Collaborations in Wolfram language will be a pretty unique experiment, for they are likely to unite people from very different fields (including, of course, lots of non-programmers). It's going to be great.
There is likely a lot left to be done in the core language, but encourage folks to start with v1 of the language: http://reference.wolfram.com/legacy/v1/
Once the core of the language is working, implementing things like simplification and integration become much easier: http://webcache.googleusercontent.com/search?q=cache%3Arefer...
It seems unlikely that such a movement would grow to be the size of Mathematica or the Wolfram language, but then again Linux and Wikipedia also seemed unlikely at the time.
We used to integrate with Sage, but no longer. The main reason is that it wasn't really used for anything, but made installing Mathics much more complicated
Should I work on Mathics, Sympy, Maxima, or Axiom? Or is Sage itself growing its own routines?
If you're familiar with / interested in Mathematica, I'd suggest helping Mathics out. The Mathematica language is massive, and there's heaps of low hanging fruit left in Mathics.
(Mathics core developer here btw)
I suggested Mathics because you appear to be interested in what Mathematica can do but resent that it closed source. Since it does not appear that it will be open sourced soon (Taliesin discussed this elsewhere and I got a similar answer from Stephen in an AMA http://www.reddit.com/r/IAmA/comments/tmutz/stephen_wolfram_...), and because duplicating even a portion of a system with a 25-year head start would require a massive amount of effort, it seems the best choice would be to work on a program that would best organize the efforts of the other programs. To agree with that statement one probably has to agree that the language is the best one to build a system around.
I currently work on Octave because there's so much Matlab code out there that needs to be liberated. Is it the same case with Mathematica code? Are people able to easily take their code from Mathematica and run it in Mathics?
I'd really like to see Mathics become the Octave of Mathematica.
)set output tex on
)set output mathml on
And Mathematica is an amazing piece of software. (Or at least was -- I haven't used it about twenty years. Twenty years ago it was mind-blowingly good. Nothing was even close.)
And 'A New Kind of Science' was a fascinating book. It hasn't quite ushered in the revolution Wolfram still seems to expect, but it was fascinating nonetheless.
Indeed... A Rare Blend of Monster Raving Egomania and Utter Batshit Insanity: http://vserver1.cscs.lsa.umich.edu/~crshalizi/reviews/wolfra...
Possibly because, from what I remember of the reviews, most people said something to the effect of, "It's brilliant! Well, the part I know anything about is garbage, but the rest is great!"
Having good free software is very important! But I wouldn't pull back on providing this software, especially where it could be used to provide a real benefit on learning, based on free software ideals.
Octave & co. could see this as encouragement to get better support for themselves on the raspberry pi as well! I see no reason why they can't all coexist.
I also agree FOSS is important but to 15 year old me, the fluid and polished experience of Mathematica was far more important to me than FOSS.
However, out of the box it seemed to have two modes which it would switch between at random:
1. Hang when the user tries to draw a plot.
2. Crash repeatedly.
Eventually I did get it working by fiddling with the (way overcomplicated) installer until I stumbled across just the right set of features to play nice on my computer. Which is fine for me. . . but anything that's going to be used in a real classroom needs a MUCH more refined Windows package to be a viable candidate for most schools.everything in Mathematica (including graphics and UI) is described using the structure of the Mathematica language itself. the whole system is malleable/composable to a degree that few languages approach
for example:
Nest[Button, "hello", 5]
will create a nesting of 5 buttons. that's the same Nest you would use when nesting a function: Nest[# + 1 &, 2, 5]
And neither of these are hacks, they both work under the same exact rules, because: Nest[whatever, a, 5]
gives whatever[whatever[whatever[whatever[whatever[a]]]]]
it's the frontend that chooses to interpret certain symbols (such as 'Button') in particular ways.As an amusing anecdote, I had to use Maple for a course once, and compared the speed of a simple algorithm to find the order of an element of Z/nZ (by taking x, and adding it to itself in a loop until you get to 0). The Maple code ran approximately 100x slower than the Sage code, even though the Maple code used machine integers but Sage uses bigints by default.
With Mathematica, the general impression that I get is that for making interactive graphics, Mathematica is slightly better, but otherwise they're mostly approximately even for the first-year case, with a slight edge to Mathematica. Sage's friendly user interface is a web-based notebook, whereas Mathematica has a native application, but it's pretty good. Sage has very good documentation for common use-cases, but I haven't used the Sage notebook in a while, so I can't really say how discoverable it is.
There are some resources on using Sage in an undergrad curriculum here, if you're interested:
http://www.sagemath.org/doc/prep/index.html
though the examples presume you're actually running a Sage notebook, so they don't show what happens, for instance, when you add an @interact decorator to make an interactive thing, like so:
http://wiki.sagemath.org/interact/
which has a nice example of an interactive Taylor-series approximation.
The reason I mention Maple is because I found it spectacularly easy to use when I first picked it up, as long as you think like a math student instead of a programming student.
Sage can produce some very interesting results, but it has a rather steep learning curve and requires more study and time than the commercial alternatives.
Sage has a full house of powerful mathematical tools, suitable for professionals as well as students, but you have to read more documentation than its alternatives require, and there are no sophisticated tab-completion features and wizards to accomplish various tasks.
One of Sage's advantages is that it can use a browser as an interface, offering a pretty nice working environment that relies on the browser's abilities. Example: http://i.imgur.com/VvrGng2.png
Over time Sage has gotten much better, mostly because of all the skilled volunteers finding and fixing bugs and writing new abilities into the feature set. But it's not Mathematica, and it's not US$2500.00 for a license (alternative: US$1000.00 per year) (source: http://www.wolfram.com/mathematica/how-to-buy/industry-indiv...).
Certainly. Wolfram was once a near-monopoly in computer-aided mathematics, but their exalted position is fast eroding, diminished by free alternatives like Sage¹.
Wolfram's response has been to package their product in increasingly ingenious ways, as with Wolfram Alpha², which has been quite successful. But in the long term, these methods will fail, because for mathematics to be both valid and understood, it must be transparent.
Look, Sage is great, I hope Sage does really well and eventually duplicates the entirety of our functionality. But at the current rate it'll take probably hundreds of years. Sometimes, profit-subsidized research is just much, much more productive at driving innovation.
True in a deep sense. In principle one could collect all the open-source components that make up Sage and recreate it independently. Sage resembles gluons more than it resembles protons and neutrons -- it holds together things created by others.
If I were you, I would want to avoid describing Wolfram's present circumstances as a monopoly. The word has certain legal implications one would do well to avoid.
The legal issues turn on how the monopoly was acquired, not its mere existence. In any case, my original point was that it's unwise to describe one's company's position as a monopoly -- it sounds predatory, and it can only attract the attention of corporate lawyers.
But I don't know what he could be up to. Getting people hooked? Seems like running Mathematica on underpowered hardware could leave a bad taste in people's mouths.
[1]http://www.ted.com/talks/conrad_wolfram_teaching_kids_real_m... [2]http://blog.wolfram.com/2013/11/21/putting-the-wolfram-langu...
Looking at the frighteningly informative article on the Wolfram page, your theory doesn't seem far out at all.
> Despite the hype it is a more closed platform than many other things you could buy
Claiming to be open, but still encouraging and endorsing non-open-source software. I was startled to read why R.Pi is unsuitable for education [1]
[0]: https://wiki.debian.org/RaspberryPi
[1]: http://whitequark.org/blog/2012/09/25/why-raspberry-pi-is-un...
The $25 price point is more important to the educational use (K-12) then any specs put out about the hardware. I don't need to know any of that to learn Python for instance.
Open source (and linux fragmentation for example) is all about choices right?
Only if you make the right choices.
Seriously, they are not endorsing non-open-soruce. They are graceful that there is one additional tool available to educators. Your "debian repository" is a marketplace. I don't see why education has to be run with open source tools. Why? Do we all have to use Open Office instead of MS Office suite? I actually like MS suite better but I just don't want to purchase a license for my Mac so I keep Open Office. I like fusion over virtualbox. There is nothing wrong with anyone using closed source in education. Please stop thinking that because Raspberry Pi runs on open source operating system it has to include open source software from start to end. The end goal is to be able to afford cheap hardware and bundle a bunch of software for classroom use.
I do wonder how much pressure they're feeling from the likes of IPython these days and if that was a motivating factor.
The other part is I don't think I've met a regular Mathematica user that actually likes it, so this may turn out to be a bad idea!
I don't use either IPython or Mathematica much, but I would understand preferring Mathematica over IPython given the choice. Aside from being younger, IPython is made of a combination of systems without a strong conceptual glue tying them together. Mathematica is made of a combination of systems too (kernel written in C, various external libraries in C, Lucene search engine, etc), but the components are tied together using what I guess is now called the Wolfram language, where everything, from computations to settings to notebooks themselves, is specified in Wolfram language expressions. If you view an IPython file in a text editor you see JSON, which is different than the language used to compute. If you open a Mathematica notebook in a text editor you see a nested set of Wolfram language expressions. Mathematica grew up around that idea.
As a further small example, compare the prompts to the two systems:
IPython
In [1]: 1+2
Out[1]: 3
vs Mathematica
In[1]:= 1+2
Out[1]= 3
In IPython, the array brackets are just a sort of notation--the assignment isn't syntactially correct Python. But in Mathematica, you can view that prompt as assigning the value of an In list at index 1 the expression "1+2".That sort of consistency holds through the entire system in a way that IPython can't match.
In Mathematica "In[1]:= 1+2" is a syntactially valid expression (though the literal In symbol is protected), so you could do the following:
In[1]:= in[1]:= 1+2
and the interpreter would evaluate it (though the values of In[1] and in[1] would be different).But even with all of the symbols defined, this is not valid Python (according to https://www.pythonanywhere.com/try-ipython/):
In [1]: in=[]
In [2]: in[0]:1+2
File "<ipython-input-2-b9cd4c9ee15d>", line 1
in[0]:1+2
^
SyntaxError: invalid syntax
The fact that this trivial expression is valid in Mathematica and not in IPython by itself says nothing about the relative merits of each system. IPython could be modified to use another notation for the input/output arrays, and Mathematica would work just as well if it were changed to use some syntactically incorrect notation. But what I was attempting to show is an example of how consistent Mathematica is.It is.
In[1]:= D[x^2 Sin[x], x]
Out[1]= x^2 Cos[x] + 2 x Sin[x]
In[8]:= Integrate[Sin[x], {x, 0, c}]
Out[8]= 1 - Cos[c]
In[10]:= Solve[{x + 23 y + x^2 == 46, x - y == 234}, {x, y}]
Out[10]= {{x -> 2 (-6 - Sqrt[1393]), y -> 2 (-123 - Sqrt[1393])},
{x -> 2 (-6 + Sqrt[1393]), y -> 2 (-123 + Sqrt[1393])}}
I love ipython as well, but it can't do that sort of thing.I love the amount of investigation people put into this sort of thing before making blanket statements like this.
>>> diff ( x**2 * sin ( x ) , x )
2
x *cos(x) + 2*x*sin(x)
>>> integrate ( sin ( x ) , ( x , 0 , c ) )
-cos(c) + 1
>>> solve ( [ Eq ( x + 23 * y + x**2 , 46 ) , Eq ( x - y , 234 ) ] )
______ ______
[{x: -12 + 2*\/ 1393 , y: -246 + 2*\/ 1393 },
______ ______
{x: - 2*\/ 1393 - 12, y: -246 - 2*\/ 1393 }]
Try it for yourself: http://live.sympy.org/I am no sympy expert at all - I figured it all out in the time since I read your comment. But of course I'm sure you love ipython as well.
(edit - fixed copy&pasting stupidness)
I would never say things about ruby libraries, for example, as I don't know anything about it. I might say the same thing about R or matlab, which I do.
In the immortal words of pg:
When disagreeing, please reply to the argument instead of calling names.
E.g. "That is an idiotic thing to say; 1 + 1 is 2, not 3"
can be shortened to "1 + 1 is 2, not 3."
As in, 'python actually can do symbolic computation, see http://sympy.org''Oh, thanks. You're right'
To Quote Sage's home page: "Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface."
Sage is based on Python and so it is not a bit it is the whole thing.
Note that it includes a beta version of the new Wolfram Language!
I got the personal license of Mathematica for Mac a while ago and thought the price was reasonable for such a powerful system.
The only thing that was driving me nuts is that Mathematica does not work properly on a Retina display, which of course is a shame as text and graphics would look gorgeous. Support for that is only planned for the next major version, according to Wolfram (http://mathematica.stackexchange.com/a/30104/10565).
I recently found a hacky fix: http://mathematica.stackexchange.com/a/21158/10565
With that, Mathematica now looks fantastic on my MacBook Pro's built-in screen.
If I increase RAM, I get a black screen when launching the machine.
If I try -vga std (hoping to get better resolution) I get an error.
FriCAS/Axiom running on ARM board (ie. Raspberry Pi) on top of Clozure CL (on Ubuntu/GNU/Linux)
Although my preference is for free software (hadn't heard of either SymPy or Mathics mentioned elsewhere), I like the idea of plugging a Raspberry Pi into the router, and being an X session away from Mathematica.
I wonder how much heat these things produce? Could they be used to make an efficient, small cluster?
Efficient not even remotely the performance per unit of a Raspberry Pi just makes it not worth it (note: it's worth it if you want to simulate multi-node programming, SMPP type stuff).
For example a 32 node raspberry pi machine clocked 10.9Gflops on linpack[1], 32 * 35 is $1120 (excluding switches, cabling, power supplies which would add at least another $200 or so).
A single Nvidia Titan clocks ~1.5 Teraflops in double precession mode for ~$1000 (a performance per dollar rate of 137 times better).
According to wikipedia[2] a cheap Sempron 145 with 3 Geforce GTX760's at $1090 has a performance of 6.771 teraflops (so over 500 times the performance of the 32 node raspbery pi)
1 http://www.zdnet.com/build-your-own-supercomputer-out-of-ras...
2 to 64 nodes http://www.southampton.ac.uk/~sjc/raspberrypi/pi_supercomput...
http://raspberrywebserver.com/raspberrypicluster/raspberry-p...
http://blogs.nvidia.com/blog/2013/07/19/secret-recipe-for-ra...
Canonical had a 43 node Arm build cluster http://www.geek.com/chips/canonical-builds-a-42-core-arm-clu... and there's a campaign for an RPi version http://www.indiegogo.com/projects/a-raspberry-pi-build-clust...
If one managed to hack the binaries and include them in an iOS app, would Wolfram permit that?
http://blog.wolfram.com/2013/11/21/putting-the-wolfram-langu...
http://maxvitek.wordpress.com/2013/11/24/get-mathematica-on-...
I find that it's fine for most things but slow for visualizations (and you need an x server running, not making the most of the emulated hardware).
(Can anyone succeed in using this method and then adding it as a remote kernel to a normal desktop Mathematica session?)
* softfp where the float function arguments are passed in using integer registers or the stack
* hardfp where they are passed in using the FPU registers
In the above cases, the float operations are done in hardware in the FPU. There is a 3rd ABI called softfloat where everything is done in software, and thus is very slow.