Despite the overwhelming sense of ego that pervades every word Wolfram and his organization ever writes, you owe it to yourself to try Mathematica.
When I had first encountered Mathematica in college, I thought "this is neat", used it for a few calculations, and forgot about it. Fast forward to a few months ago and I decided to install a demo just to learn about term rewriting and pattern matching.
What I discovered blew my mind: It's just a lisp! Every expression has a "head", which is just a namespaced symbol. FullForm[x+y+z] is really just Plus[x,y,z] and Head[Plus[x,y,z]] is simply Plus. Squint, and it looks like (+ x y z) to me... The really interesting part is that the entire computational library is built around term rewriting. While there is mutable state, it exists almost primarily at the symbol definition level. Everything else is pretty much pattern matching on trees of symbols. Even the rendered output is just a drawn representation of a box-oriented markup built out of Mathematica forms. It's quite amazing.
Wasn't Wolfram the guy who said that Lisp was completely inadequate for mathematical computing, being too slow by a factor of 100 or summat?
Mathematica owes much of its lineage to Macsyma, a computer algebra system that really was Lisp on the inside; its spiritual descendant, Maxima, is written in CL.
Yup, it's basically a LISP. And it has a kind of polymorphism (using UpValues) that makes it possible to do something akin to OOP. Here's the beginnings of a set implementation in Mathematica:
Now you can use + and - on these sorted sets, and they'll format in the frontend as SortedSet[Range[3]] -> <1, 2, 3>. And part indexing, MemberQ, FreeQ, and pattern matching will Just Work.
I dream of a world where people don't compulsively fantasize that for any given piece of software, it should be supplanted by some other piece of software whose main differentiating feature is that it's a FOSS clone.
For me this software project is one of the most admirable. The combination of the quality, expressiveness of the language, uniformity of the environment, cool algorithms and rich visualizations is a geek's delight. It is a pity that since I finished my university there is almost no place for this beautiful software project in my day to day life.
MMA is a fantastic bit of software. It's my secret weapon for lots of tasks, including prototyping algorithms, data manipulation (it absolutely excels at this), visualisation and all sorts of miscellaneous investigatory tasks. I'd love to use it at work but as a Home Edition user my license prohibits this. Were I to accidentally start it at my day job, I'd use it for converting data between various formats, processing it, manipulating it and writing it back again, like a gigantic and insanely powerful interactive awk replacement. Since I maxed out the RAM on my laptop I now have it run at startup so it's always there for back-of-the-envelope stuff.
I used it extensively in designing my side project synth[1], where I used its visualisation capabilities to figure out everything from panning algorithms to delay lines. It earned its keep most often late at night when I was tired and trying to figure out daytime-simple-but-nighttime-hard routines. The Manipulate[] function is really good for this, as it shows you the output of a function as you drag the inputs up and down. I also used it for turning mathematical formulae into C code - the CForm[] function does this very well.
It's also a great way to experiment with functional programming, since that's how it mostly likes to operate.
I reckon there's a lot of places you could use it, but it's too expensive to justify. I don't really care if it's open source or not, but I'd like Stephen Wolfram to have an epiphany on pricing and realise he could sell ten times as many Home Edition copies at a quarter of the price. Its adoption is absolutely held up by its sky high price.
Anyone with further interest in it should check out the Wolfram blog[2] and one of the friendliest StackExchange communities out there[3]
Agreed. Wouldn't it be lovely if it were pre-installed on Macs, so more people had access to it? I'm sure Apple could afford it, and they share a lot of history (wasn't Mathematica pre-installed on Next machines? I know Jobs came up with the name at least).
Dito. This is a total show stopper. Only undoing your very last action and with no redo really sucks. I repeat that as it might sound like a joke to most people. There is no redo. And you can only undo one thing, where "one thing" might be typing a massive formula with all the correct mathematical notation or one full page of text.
So if you undo your last 5 minutes of work because you thought you would undo one line or something there is no way to get it back. T________T
If you deleting something inside that one thing you are currently typing, that deletion is also completely impossible to undo because if you do you will undo typing that entire block. (Undoing a small accidental delete is usually the cause of the scenario i described above)
Yeah, it kinda sucks -- mostly one learns to create new copies of definitions/code when doing substantial changes, which the notebook interface makes quite convenient. Or use a full blown editor like Eclipse.
The holy grail as I see it would be storing the entire edit history of the document as a git-like tree of modifications, which is entirely possible because Mathematica notebooks are themselves built out of Mathematica expressions (see for example Cell http://reference.wolfram.com/mathematica/ref/Cell.html). This would be similar to Rich Hickey's work on language-aware version control (http://blog.datomic.com/2012/10/codeq.html)
Wow. I am impressed not only by the new features, but also by that blog post. That was some really effective marketing!
I'm particularly pleased by the addition of units. I can't count the number of times I've done some symbolic work in Mathematica, copied the results, pasted them into WolframAlpha, added numeric values and units, and then computed the value there. It's become a common refrain in my workflow and a rather annoying one at that, so I'm really glad they're integrating things from WA into real Mathematica.
A lot of the new features fall short for me, e.g. face detection. Sure, it's nice to have over not having it at all, but when alternatives like OpenCV offer so much more functionality, why bother? I was trying to find an easy way to do facial landmark detection recently. If Mathematica included that by default, now that'd be a selling point.
Also misleading is their new "audio spectrogram" feature. Wasn't this already available with their FFT functions? An actual useful feature would be, e.g., automatic formant detection from voice files.
Often times, their new features list are just more nicely-packaged versions of existing features that in practice just save a line or two of code, rather than an feature that didn't exist at all before.
Mathematica is also by far the easiest language for solving Project Euler problems. There's almost a function call for each problem. It feels far too much like cheating but it's a good way to learn the language.
Thanks Wolfram for not letting me upgrade. Website claims "up to 80% upgrade savings!" but when I enter my activation code, I'm told I'm not eligible.
I bought a 1-year license just a few months ago for version 8. Only £36, sure, but I'm a student and can't afford a second £36 now just for a handful of new features, even if they would be useful. Upgrade pricing would be nice. I'm sure working out a fair upgrade price shouldn't be too hard either. I bet there's even a formula for it somewhere...
For those in search of a FOSS alternative, give Mathics a try: www.mathics.org
In the past couple of months, Mathics had made quite a lot of progress.In particular the upcoming release will run on PyPy. Obviously it still had lots of catching up to do, but being written in python (and some Mathematica) makes development easy and fast. Come join us!
It's unfortunate that they restrict the number of cores according to license tier. I was excited about R integration, which is where I do a lot of parallel computations, until I realized this.
I doubt that limit affects your use case. The limit is on the number of mathematica mathkernel processes, not on the number of processes the kernel calls out to. Though, it likely takes some fiddling to set up numerous R processes per mathematica mathkernel.
M won't run if your machine has more than a certain number of cores, or you'll only be able to fill a subset of them with M kernels? I suspect the number of cores available to the slave R process is unrestricted because it runs separately.
Is Mathematic customer driven? I see many baroque details, but I can't imagine them being used often. Graphs and parameters and models that look very specialized: but in many of these cases I know people use Matlab or C. I use Matlab. How does Steve choose which features to add?
On the contrary -- graphs (networks, not plots), statistical distributions, and random processes are everywhere in almost every industry. It is just that the current tools for working with them are currently so hyper-specialized to each individual field that they are 'ghettos' that most smart, general-purpose developers never enter.
We're all blind to things our current tools don't permit us to explore.
As a random example, I bet that many cloud-based services could (but probably don't) do reliability analysis of their services under different independence assumptions. Are the weak links what you thought they were? What if you updated your model as various things failed / rolled over, so that you could run to put out the fires that are most likely to burn the whole village down? For a modest organization a smart intern could probably put this together with Mathematica in a couple of weeks.
That was my first thought as well, but after playing around with it all afternoon, I'd say that I'm "cautiously optimistic". It's quite snappy, and they clearly put a lot of thought into optimizing what it shows and when. It would have been super-helpful when I was first getting started with MMA, and as an experienced user I'm finding myself using it more than I would have expected.
My one gripe thus far is that there isn't as much keyboard control over the prediction interface as I'd like, but that could just be that I haven't found the shortcuts yet.
One thing I quite like about it is that there's a built-in "feedback" feature- any time the "predictive UI bar" is showing, there's a button you can press to send semi-structured feedback about what's currently showing, suggest other things you'd like to appear in similar situations, and so on. I've used it already to suggest a few changes the prediction UI for ListPlot.
[+] [-] snprbob86|13 years ago|reply
When I had first encountered Mathematica in college, I thought "this is neat", used it for a few calculations, and forgot about it. Fast forward to a few months ago and I decided to install a demo just to learn about term rewriting and pattern matching.
What I discovered blew my mind: It's just a lisp! Every expression has a "head", which is just a namespaced symbol. FullForm[x+y+z] is really just Plus[x,y,z] and Head[Plus[x,y,z]] is simply Plus. Squint, and it looks like (+ x y z) to me... The really interesting part is that the entire computational library is built around term rewriting. While there is mutable state, it exists almost primarily at the symbol definition level. Everything else is pretty much pattern matching on trees of symbols. Even the rendered output is just a drawn representation of a box-oriented markup built out of Mathematica forms. It's quite amazing.
[+] [-] bitwize|13 years ago|reply
Mathematica owes much of its lineage to Macsyma, a computer algebra system that really was Lisp on the inside; its spiritual descendant, Maxima, is written in CL.
[+] [-] taliesinb|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] ustcscgy|13 years ago|reply
integrate((x/sqrt(x * x * x * x + 10 * x * x - 96 * x - 71)),x)
AXIOM is written in lisp and latex (literate programming), it's more powerful than MAXIMA.
[+] [-] patrickgzill|13 years ago|reply
[+] [-] zackzackzack|13 years ago|reply
Call outs to R code http://www.wolfram.com/mathematica/new-in-9/built-in-integra...
Social network analysis http://www.wolfram.com/mathematica/new-in-9/social-network-a...
Computation bar http://www.wolfram.com/mathematica/new-in-9/next-computation...
Sigh. I dream of Mathematica being open source.
[+] [-] onan_barbarian|13 years ago|reply
I dream of a world where people don't compulsively fantasize that for any given piece of software, it should be supplanted by some other piece of software whose main differentiating feature is that it's a FOSS clone.
[+] [-] 27182818284|13 years ago|reply
That's what Google's Brin was working on when he interned there.
[+] [-] JulianMorrison|13 years ago|reply
[+] [-] ivanb|13 years ago|reply
Take a look at Maxima then. It is a good system too but not even close in quality, features, etc.I blame its open source nature for this.
[+] [-] ksss|13 years ago|reply
[+] [-] ivanb|13 years ago|reply
[+] [-] scrumper|13 years ago|reply
I used it extensively in designing my side project synth[1], where I used its visualisation capabilities to figure out everything from panning algorithms to delay lines. It earned its keep most often late at night when I was tired and trying to figure out daytime-simple-but-nighttime-hard routines. The Manipulate[] function is really good for this, as it shows you the output of a function as you drag the inputs up and down. I also used it for turning mathematical formulae into C code - the CForm[] function does this very well.
It's also a great way to experiment with functional programming, since that's how it mostly likes to operate.
I reckon there's a lot of places you could use it, but it's too expensive to justify. I don't really care if it's open source or not, but I'd like Stephen Wolfram to have an epiphany on pricing and realise he could sell ten times as many Home Edition copies at a quarter of the price. Its adoption is absolutely held up by its sky high price.
Anyone with further interest in it should check out the Wolfram blog[2] and one of the friendliest StackExchange communities out there[3]
[1]http://www.omnivoresoft.com [2]http://blog.wolfram.com [3]http://mathematica.stackexchange.com
[+] [-] ksss|13 years ago|reply
EDIT: Mathematica can do almost anything, but how do you use it actually in your work environment?
[+] [-] Osmium|13 years ago|reply
[+] [-] scottfr|13 years ago|reply
That alone would almost be reason enough to upgrade.
[+] [-] Too|13 years ago|reply
So if you undo your last 5 minutes of work because you thought you would undo one line or something there is no way to get it back. T________T
If you deleting something inside that one thing you are currently typing, that deletion is also completely impossible to undo because if you do you will undo typing that entire block. (Undoing a small accidental delete is usually the cause of the scenario i described above)
[+] [-] taliesinb|13 years ago|reply
The holy grail as I see it would be storing the entire edit history of the document as a git-like tree of modifications, which is entirely possible because Mathematica notebooks are themselves built out of Mathematica expressions (see for example Cell http://reference.wolfram.com/mathematica/ref/Cell.html). This would be similar to Rich Hickey's work on language-aware version control (http://blog.datomic.com/2012/10/codeq.html)
[+] [-] scrumper|13 years ago|reply
[+] [-] Osmium|13 years ago|reply
[+] [-] PieSquared|13 years ago|reply
I'm particularly pleased by the addition of units. I can't count the number of times I've done some symbolic work in Mathematica, copied the results, pasted them into WolframAlpha, added numeric values and units, and then computed the value there. It's become a common refrain in my workflow and a rather annoying one at that, so I'm really glad they're integrating things from WA into real Mathematica.
[+] [-] Osmium|13 years ago|reply
A lot of the new features fall short for me, e.g. face detection. Sure, it's nice to have over not having it at all, but when alternatives like OpenCV offer so much more functionality, why bother? I was trying to find an easy way to do facial landmark detection recently. If Mathematica included that by default, now that'd be a selling point.
Also misleading is their new "audio spectrogram" feature. Wasn't this already available with their FFT functions? An actual useful feature would be, e.g., automatic formant detection from voice files.
Often times, their new features list are just more nicely-packaged versions of existing features that in practice just save a line or two of code, rather than an feature that didn't exist at all before.
[+] [-] scrumper|13 years ago|reply
[+] [-] Osmium|13 years ago|reply
I bought a 1-year license just a few months ago for version 8. Only £36, sure, but I'm a student and can't afford a second £36 now just for a handful of new features, even if they would be useful. Upgrade pricing would be nice. I'm sure working out a fair upgrade price shouldn't be too hard either. I bet there's even a formula for it somewhere...
[+] [-] taliesinb|13 years ago|reply
[+] [-] sn6uv|13 years ago|reply
In the past couple of months, Mathics had made quite a lot of progress.In particular the upcoming release will run on PyPy. Obviously it still had lots of catching up to do, but being written in python (and some Mathematica) makes development easy and fast. Come join us!
Disclaimer: Mathics vice dictator here
[+] [-] andrewcooke|13 years ago|reply
[+] [-] taliesinb|13 years ago|reply
[+] [-] Osmium|13 years ago|reply
[+] [-] taliesinb|13 years ago|reply
[+] [-] hxrts|13 years ago|reply
[+] [-] programnature|13 years ago|reply
[+] [-] taliesinb|13 years ago|reply
[+] [-] frozenport|13 years ago|reply
[+] [-] taliesinb|13 years ago|reply
We're all blind to things our current tools don't permit us to explore.
As a random example, I bet that many cloud-based services could (but probably don't) do reliability analysis of their services under different independence assumptions. Are the weak links what you thought they were? What if you updated your model as various things failed / rolled over, so that you could run to put out the fires that are most likely to burn the whole village down? For a modest organization a smart intern could probably put this together with Mathematica in a couple of weeks.
[+] [-] philip1209|13 years ago|reply
[+] [-] splicer|13 years ago|reply
[+] [-] stevenbedrick|13 years ago|reply
My one gripe thus far is that there isn't as much keyboard control over the prediction interface as I'd like, but that could just be that I haven't found the shortcuts yet.
One thing I quite like about it is that there's a built-in "feedback" feature- any time the "predictive UI bar" is showing, there's a button you can press to send semi-structured feedback about what's currently showing, suggest other things you'd like to appear in similar situations, and so on. I've used it already to suggest a few changes the prediction UI for ListPlot.