Hacker News new | ask | show | jobs
by snprbob86 4753 days ago
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.

1 comments

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

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!

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/