40 comments

[ 3.3 ms ] story [ 101 ms ] thread
I've always avoided Mathematica. I Use pari/GP, maxima, axiom, perl's Bignum.

Mathematica, macsyma, Symbolics, I've always felt monetized what should have been(remained) open source, GNU(etc.) licensed. Thank you again Mr Stallman.

Why should it have been open source? Is quality software not worth paying for?

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.

Fsf proponents are not concerned with price, rather with freedom.
The hardline evangelists yes the rest not so much and if you don't realize that I have a bridge I would like to sell you.
There are many kinds of freedom.

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.

It really bothers me to see how the FSF has hijacked the term freedom and redefined it to mean compatible with a very specific set of software licenses while selling it as if they were liberating the Scots from the English monarchy.
With open source, I am `forced' to figure out how to do things on my own without canned functions. I could be wrong, not having looked at Mathematica for twenty years, but I believe my pattern searching among hundreds of millions of long string filtered generated expressions and their respective digit expansions, requires regular expression processing which takes a lot of practice before it becomes easy but likely necessary, as I don't see how this regular expression processing could be eliminated.

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 don't necessarily think it should be free (gratis), but a serious math package should definitely be open source to give legitimacy to any result it produces, for the same reason that a proof that is kept secret is not a proof at all.
Matlab is big in my field, and I've avoided it. I use Python instead instead. If I want to do symbolic stuff (like Mathematica does), I can use SymPy.

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.

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.)

I know that people complain about Wolfram when his posts show up here (which I understand, even if I've always found his bizarre combination of eccentricity and stupendous ego endearing), I thought this was super interesting.

Surprisingly, I think he only mentions NKS once in this whole entry, and it includes a nice shout-out to Rob Pike.

Wolfram's list of language design mistakes in SMP is interesting, particularly how he dropped SMP's symbolic indexing from Mathematica, but still kept echos of the idea in function definitions: http://reference.wolfram.com/mathematica/tutorial/MakingDefi...

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).

I was kind of expecting a piece about how stone-knives-and-bearskins mathematics was before The Wolfram single-handedly brought fire down from Olympus.

This wasn't that far off, though, so full credit, Wolfy.

I wonder whether he has ever written a blogpost that doesn't mention receiving his PhD at 20. I find his self-aggrandizing intolerable.
> I wonder whether he has ever written a blogpost that doesn't mention receiving his PhD at 20.

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.

Mathematica is absolutely incredible and everyone who calls themselves a programmer should own a copy, learn how to use it, and internalize its philosophy.

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.

> everyone who calls themselves a programmer should own a copy

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?

I wrote a little bit about this on HN before: https://news.ycombinator.com/item?id=4844502

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.

there are more than a few Mathematica-isms that Rich has admitted being influenced by

Can you say what some of those are?

I'm enjoying your comments on this.

For one thing, "An Introduction to Programming with Mathematica" is on his Clojure bookshelf: http://www.amazon.com/Clojure-Bookshelf/lm/R3LG3ZBZS4GCTH

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.

Well let me ask you this, then: what do you recommend as a way to learn Mathematica? I feel like I should know more about it. My interest is less in the details of using the software and more in its computational model and its approach to language design. Any suggestions on what a natural approach would be?
Start with Mathematica's builtin documentation. The overview pages are actually quite good. They are also online [1].

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...

[3] http://purelang.bitbucket.org/

Thanks for the response, I have not found it to well matched for all of my tasks but it is definitely well set up for certain types of programming tasks, has several high level abstractions and a diverse set well documented libraries.
I haven never tried to write a script or algorithm or anything in Mathematica. It's not useful for that (at least to me). I use it more to explore and to understand problems.

That's why I mentioned truth tables. Being able to quickly perform symbolic simplifications is awesome. If nothing else, learn how to do that!

> Electronic calculators arrived on the scene when I was 12

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 :)

Another fun read is the listing of original developers of Mathematica in the Addison-Wesley "Mathematica" book and what they worked on.

http://omohundro.files.wordpress.com/2009/03/wolfram88_mathe...

"The plot [on the front page] took about three minutes to produce on a Sun 3/260 computer."

Plot3D[Abs[Zeta[x + I y]] , {x, -2, 6}, {y, 2, 35}] takes 0.213483 on my laptop :)

(comment deleted)
Is anyone else really impressed with his personal archive of documents or scannings of them?

I've gotta get rid of my drobo FS and upgrade to a serious colo or something.

He's got a personal assistant that follows him around everywhere — and perhaps more who don't. Must be nice!
I was rather impressed by those little invitation cards. Clever marketing.
Hey, it's time for me to tell another third-hand half-remembered unsourced story, just because it's halfway relevant. How's that for a disclaimer?

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.

Half-remembered unsourced negative gossip is what great HN commentary is made of these days?
<quote>"Even in my early designs, SMP was a big system. [...] just wanted to go ahead and implement it. [...] and bought every book I could find on computer science—the whole half shelf of them. And proceeded to read them all.

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?

The "Algebra will never be the same again" ad is awesome. It's like an artist's conception of a mathematician. Or alternately, it looks like that black-and-white freezeframe in every informercial right before they introduce the product that solves the problem.
Very interesting read. I especially like the following quote:

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.

> A big early decision was what language SMP should be written in. Macsyma was written in LISP, and lots of people said LISP was the only possibility. But a young physics graduate student named Rob Pike convinced me that C was the “language of the future”, and the right choice. (Rob went on to do all sorts of things, like invent the Go language.) And so it was that early in 1980, the first lines of C code for SMP were written.

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?

If you don't have a connection to the world of physicists you may not realize how huge Mathematica is. I have a friend for whom it is the environment of choice for pretty much everything. Like, when he needs to do some image manipulation, he doesn't reach for ImageMagick, he does it in Mathematica. If he needed to set up a web server he'd probably do it in Mathematica too.

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.

I really liked this quote, "I was trying to find the elementary components of computation...try to pack the largest capability into the smallest number of primitives." It really captures his life's thesis.

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.