There Was a Time before Mathematica
blog.stephenwolfram.com
blog.stephenwolfram.com
Anyways, on to the story. I was an undergrad at UIUC in the early 90's, and the development of Mathematica had created a deep rift in the mathematics department.
There was resentment because there had been collaboration between those working for Mathematica, and other professors in the math department, who were just working on "interesting problems" presented to them by the inner circle guys.
Of course when Mathematica was released, and money and options were being given to the inner circle guys, the outer circle guys had, let's say, hurt feelings.
People say they can't stand Wolfram's lack of humility. Just get over it for your own benefit. People have flaws, that's life. If you get so enraged over his style that you can't listen to what he says, then you won't hear what he has to say which happens to be a lot of interesting things.
This wasn't that far off, though, so full credit, Wolfy.
However, I too find his self-aggrandizing intolerable.
Sentences like "Looking back at its documentation, SMP was quite an impressive system, especially given that I was only 20 years old when I started designing it." Just make me dislike him. Was his age really necessary there? He already mentioned his age a few paragraphs up in a sentence that was far less objectionable.
I use mathematica regularly, but do not have quite as strong an opinion as that.
Would you mind sharing your top three reasons or there about?
In short:
1) Term rewriting systems are a beautiful and powerful model of computation that a lot of people know nothing about.
2) The "everything is data" philosophy is life changing. This same philosophy can be seen in the Clojure community (there are more than a few Mathematica-isms that Rich has admitted being influenced by). Mathematica goes further to say that all data is expressions, which is really a subpoint of #1, but I think that data is the more fundamental important idea than expressions. Even though expressions have extremely wide applicability.
3) Having some mastery over the basics of Mathematica is like having a bunch of secret programming super powers. One time, I came across an exceedingly complex if/and/or/else clusterfuck and reduced it to a trivial truth table in only a few minutes of fiddling with Mathematica. There are lots of cases where experimenting in Mathematica was just a much faster way to understanding and solving a problem prior to implementation.
That's why I mentioned truth tables. Being able to quickly perform symbolic simplifications is awesome. If nothing else, learn how to do that!
Can you say what some of those are?
I'm enjoying your comments on this.
A quick Googling will show you that Rich has popped his head into a bunch of conversations where both Clojure and Mathematica are mentioned. He's also mentioned it in a talk or two.
Of course, given that the early drafts were written by Wolfram himself, you'll have to ignore absurd statements like this one: "Long viewed as an important theoretical idea, functional programming finally became truly convenient and practical with the introduction of Mathematica's symbolic language." [2]
See also: Pure [3]
[1] http://reference.wolfram.com/mathematica/tutorial/CoreLangua...
[2] http://reference.wolfram.com/mathematica/guide/FunctionalPro...
He's mentioned it twice on his blog that I can find: today and on June 1, 2011. Unless I missed a bunch, you are being rather ridiculous.
He must have struggled to not write this as "Electronic calculators arrived on the scene because I was 12"
That said, hooray for Wolfram and Mathematica :)
I figured if I couldn’t explain something clearly in documentation, nobody was ever going to understand it, and it probably wasn’t designed right. And once something was in the documentation, we knew both what to implement, and why we were doing it.
I think this a great practice to follow. I often find it very helpful to write documentation before writing code. I find I end up with a better designed system this way, and as an added bonus it has great documentation too.
Also interesting is the little decryption challenge (turns out he stored his copy of SMP in an encrypted form and can't find the key).
So Wolfram appears to be saying that C, the "language of the future", was much better than that old Lispy stuff he had been using. But then he goes on to admit that he spent lots of time reinventing features that are obvious in Lisp:
>It got even weirder when one started dealing with multi-argument functions. It was quite nice that one could define a matrix with m:{{a,b},{c,d}}, then m[1] would be {a,b}, and either m[1,1] or m[1][1] would be a. But what if one had a function with several arguments? Would f[x, y] be the same as f[x][y]? Well, sometimes one wanted it that way, and sometimes not. So I had to come up with a property (“attribute” in Mathematica)—that I called Tier—to say for every function which way it should work. (Today more people might have heard of “currying”, but in those days this kind of distinction was really obscure.)
Really obscure? To who? C programmers?
Surprisingly, I think he only mentions NKS once in this whole entry, and it includes a nice shout-out to Rob Pike.
Mathematica, macsyma, Symbolics, I've always felt monetized what should have been(remained) open source, GNU(etc.) licensed. Thank you again Mr Stallman.
If you are thinking something along the lines of the "purity" of mathematics, and how mathematics "want to be free"- mathematics is free, as evidenced by your use of BigNum, or even pencil-and-paper. Mathematica is just one of the many calculators, and people have happily paid money for calculators for many years.
If a proprietary tool lets me get my work done faster than a free tool would, then using the free tool takes away some of one kind of freedom--namely the freedom to spend my time doing things I want to do instead of things I have to do to pay the bills.
Perl is deservedly famous for intrinsically integrating its regex engine, so with other's reference material to grow with, eg, all the good bioinformatics books and perl modules -CPAN open source- everything moving ahead directly and often wonderfully, exploring many novel threads derived off whatever I'm primarily currently focused on.
I think being open is good for several reasons. You can inspect the code, meaning that those weird bugs that pop up eventually are solvable. Additionally, the licenses are a pain in the ass. Not having them encourages more collaboration.
Yes!
While Mathematica is a great product (or ecosystem), the license overhead is extremely irritating, and a bit scary if you're running business-critical apps on it. (Lost touch with the license server? Oops, your applications won't run.)
http://omohundro.files.wordpress.com/2009/03/wolfram88_mathe...
Plot3D[Abs[Zeta[x + I y]] , {x, -2, 6}, {y, 2, 35}] takes 0.213483 on my laptop :)
He should be praised not only for his accomplishments, but his commitment and grit. It's not easy to stick with something for so long like he has and continue to improve it over time.
http://blog.stephenwolfram.com/2013/06/there-was-a-time-befo...
I was working at Caltech back then. And I invited everyone I could find [...] put together a little “working group”"</quote>
How on earth does people find the time to do those things while "working"? What do they mean by Work?
I've gotta get rid of my drobo FS and upgrade to a serious colo or something.