50 comments

[ 2.8 ms ] story [ 86.2 ms ] thread
I can't stand to read Wolfram's ego-stroking for more than a few paragraphs. The guy is very into how great he and his software are.
It's unfortunate because he is pretty smart and has made some good software, and the style sort of gets in the way of that sometimes.

A New Kind of Science even has some good points in it, but it's written in such an over-the-top, "I have revolutionized all of science" way that it actively hinders its message, so a lot of people in the computing-and-philosophy intersection it wants to reach just don't take it seriously or even read it. If someone were really charitable and wanting to put some work into it, it could be greatly improved by being edited into a "what Wolfram really meant to say in that book" precis that includes the main points in maybe 1/4 the space, and with a different tone.

Could you mention any of the good points in NKS? The reviews were so uniformly negative (many of them quite fun to read) that I got the impression there was nothing to it. I paged through it once and saw lots of pretty pictures, but nothing that seemed all that interesting...
I haven't fully formed an opinion about it, but it's the most-completely-laid-out version of his study of cellular automata, which was genuinely novel in the '80s when he first published a classification of them, and led to some interesting debates since then. He digs into them in a lot of detail and forms some theories of computational emergence and philosophy-of-computation, which he then ties in to a sort of computationalist view of the universe that hypothesizes the ubiquity of complexity from simple interaction as a key feature. Along the way he puts forward some pithy "principles", some of which are thought-provoking, though not all are novel and some are obviously problematic (one of the more-cited ones is http://mathworld.wolfram.com/PrincipleofComputationalEquival...).

I do think a massively edited down and more humble version of the book could at least present interesting positions to argue against or develop. Part of the problem with his writing approach is that so much of the response is (correctly) pointing out that he didn't invent certain things, or that he's giving new names to things that already have names in either CS or philosophy or both, etc., that it obscures the contents, and the reader has to do a lot of work to get something out of it.

If you remove the claims to novelty and take it instead as a description of a certain contemporary paradigm of simulation-oriented science that resolves around computational models and complex systems, and take Wolfram as just your narrator digging into its philosophical implications (with a particular set of biases), it's not a bad read either, although it could also use an editor to move along more engagingly and not talk about Stephen Wolfram so much. So I'll admit it's not great for that purpose either; it maybe wants to be like a Douglas Hofstadter book but isn't really. I think some HN readers might actually like it, though. At the very least you can take it as an experimental attempt to answer the question: just how much of a philosophy can you hang almost entirely off of a study of cellular automata?

That's a pretty lukewarm endorsement, because honestly I don't think it's a good book as written, but some of the negative reviews are exaggerating its lack of contents.

Some corrections, from an enthusiast of some of the ideas of NKS and someone in the R&D division of Wolfram Research:

1. Cellular automata are not the "point" of the book. The point of the book is the study of simple computational systems: cellular automata, mobile automata, Turing machines, register machines, tag systems, string rewriting systems, graph automata, lattice automata, etc..

What are they?

How powerful are they?

What is the distribution of complexity of these systems?

How might they hint at an unexplored scientific territory that we could profitably investigate?

What systems in nature can they qualitatively model?

How well does traditional mathematics work in analyzing and predicting their behavior?

The complexity manifested by these systems have been sporadically encountered by various people. A classic example being of course being Conway's Game of Life. But that was seen as pure recreation. Not until much later did anyone engage in systematic enumeration of similar systems in order to determine if Conway's game of life was special in any sense, if its universality was a unique feature of such systems.

Even the genius John von Neumann, who invented CAs, didn't simulate any to see what they actually did. He just saw them as models for engineering, and went about designing a somewhat pointless and brittle self-reproducing CA that has about zero significance for the [then non-existent] field of artificial life.

Similarly, Turing used Turing machines them to build a universal machine, and that's as much as he cared about running Turing machines. He almost immediately went on to oracles and supercomputation, which are pretty abstract and arguably far less important ideas.

2. Wolfram didn't invent many of the things in the book, and as far as I'm aware, doesn't claim to. In the very detailed notes you'll find plenty of attribution (although many academic fields are necessarily summarized very briefly). What he does claim to be the first to have done is articulate a common thread of argument that connects these existing ideas in a coherent and explanatory way.

3. This isn't about simulation. Simulation is precisely the WRONG way to look at what he's saying. What follows is a particular case he covers in the book, one of many such cases, but it is a nice illustration.

Turbulence in fluids is one of those 'puzzling' things that we often describe as a complex and interesting phenomenon in nature [0]. The traditional approach to understanding what causes turbulence is to use non-linear partial differential equations to describe the interplay between velocity, density, and pressure in fluids [1].

When you ask what these equations "really mean", there is a sense in which you have to first explain some pretty complex mathematical machinery, culminating in the very idea of a real number -- that take tens of years for modern-day students to learn in detail, that took hundreds of years for professional mathematicians to construct. These aren't trivial, or even particularly natural, ideas [2].

For some very simple cases it is possible to use the same mathematical machinery that expresses these equations to then solve them -- although enough fundamental stuff is still missing to warrant a $1m Clay prize [3].

But many questions (include almost all practical ones) are far too difficult to solve using the same "mathematical machinery" that expressed the equations. So we end up instead discretizing time and space and finding approximations to the solutions of these equations (using floating point numbers that are themselves approximations to the reals).

But wait a minute! Fluids are COMPOSED of discrete particles. The Navier-Stokes are just an approximation in the case of large numbers and statistical independence of momenta. So we've built approximations of approximations of approximations, at great computational expense and effort, with very little of the clari...

I have to say, that last bit about not getting paid to write this comment on HN made me wonder what percentage of comments on HN are paid for. I never thought about it; I guess if asked I would have guessed 0%, but you never know...
I tried struggling through it once, but it's a long, dense read. (I should say that I find the complaints of Wolfram's ego overblown. I say if someone has done more than you, let them have their ego.) Anyway, Wolfram's emphasis on making the text accessible (through short sentences, etc) give it a meandering quality that makes it difficult to discern whatever implications he's actually trying to go for. There are so many examples that you forget what point he's trying to make.

That said, I found some of the philosophy interesting. I didn't get all the way through the book, but the one that stuck out to me (which I also recognize is not something that Wolfram himself came up with) is the thing about how random outputs can come from systems with very simple inputs.

The implications there are interesting because it means that you can't always reverse-engineer. ("Computational Irreducibility") It also means that reductionism isn't the end-all be-all of analysis, and that "systems thinking" and models-based analysis might be the only way to come to certain classes of insights.

It also means that the existence of highly complex systems is not evidence of a higher power, or a soul. We cannot always reverse engineer the outputs of a highly complex systems down to a simple system with simple inputs, but that doesn't mean that simple system doesn't exist.

So it starts tying into the free will vs determinism philosophical argument - the point being that we as people can be non-deterministic complex systems, and that might feel like free will to us. Which isn't the same thing as saying that we are highly complex deterministic systems, with response patterns that would be completely predictable if we could analyze it enough.

NKS contains a mention of the proof that Rule 110 is Turing Complete. This is genuinely interesting, but it doesn't change its field in a significant way.

Of course, Wolfram didn't come up with the proof himself. That was done by Matthew Cook while he was working for Wolfram Research. Stephen Wolfram obtained a court order preventing Cook from presenting his result before NKS was published, because he claimed that publishing this result violated an NDA Cook signed.

> Stephen Wolfram obtained a court order preventing Cook from presenting his result before NKS was published, because he claimed that publishing this result violated an NDA Cook signed.

BTW, this provided insight into question exactly what was Wolfram's results and what was taken from his colleagues/employees.

It very much confused me when I first read about the court order: Did he really not have enough of his own results in NKS that he needed to hide the fact that the results were not originally his? And merely by asking the question, the answer seems obvious.

According to Wolfram, Cook's job was to prove Rule 110 was universal. Cook didn't "discover" it as an independent action.

In a very direct sense, this was a software development task, where the program that was being written was precisely a universal program (through several layers of emulation, of course; rule 110 -> 'particle computer' -> cyclic tag system -> Turing machine). It's an impressive program, but also quite mechanical. More details: http://www.wolframscience.com/nksonline/page-681#previous

Here's the timeline as far as I've been able to determine, mostly from sources inside the company:

0. Wolfram tasked Cook with finding a proof that 110 was universal.

1. With encouragement and help, Cook finished the proof many years before the book was ready.

2. Cook tried to publish the program/proof at some complexity conference.

3. Wolfram asked him not to, because it was against the terms of his contract.

4. Cook agreed not to, but then did it anyway.

5. Wolfram threatened legal action to prevent the proof being published.

This kind of thing is clearly a breakdown of the relationship between Cook and Wolfram. Is there a good guy and a bad guy? Maybe, maybe not. But if we see this proof as a program, I'm sure many people would agree that publishing code one was paid to write, without permission, is kind of a no-no.

To my mind, this doesn't so much paint Wolfram as a lawsuit-happy egomaniac as it does expose some of the contradictions of a running a private company as a commercial venture and as a vehicle for one's own research.

edit: I work for Wolfram, as probably some HN users already know and as I mention elsewhere on this thread. But when I heard about the whole Cook thing a couple of years ago, I asked around about what happened to make sure I wasn't working for a company that was unethical. The above is what I was able to determine.

I tried to look beyond that because it seems like a personality disorder he has little control over, but after spending some time on the site I still don't have a good idea of what Mathematica is or why I would want to use it. It seems to be all things to all people. If it's a computer language, then you could say that about any computer language. Mathematica seems to be a computer language with an IDE that provides a multitude of components (25 yrs worth.) It's even got a web dev component, but I couldn't figure out what benefits it brings.
It's a programming language and an associated IDE for doing mathematical and scientific computing. It is similar to Matlab in some ways, although Matlab has a strong "numerical" flavor and Mathematica has a strong "symbolic" flavor.

As a language it use an M-expression-like syntax. See http://en.wikipedia.org/wiki/M-expression

I believe its IDE was also the first widely used one to take the "mathematical notebook" approach where you can sort of free-form arrange formulas on a page and link them to each other. Unless I'm mistaken, at the time the other computer-algebra systems (Macsyma, Maple, etc.) all used REPL style sequential interfaces. I mostly prefer the REPL interfaces myself, but a lot of people like the notebook style, and I think Mathematica's approach to that has been influential on some recent open-source interfaces like Sage Notebook and iPython Notebook.
Weirdly, Mathematica integrated support for high-performance numerical linear algebra libraries from Intel and others a couple years before MATLAB did.

So your point about symbolic versus numeric flavor might have been correct prior to version 6, but it is no longer true (Mathematica 10 will be released later this year). In fact, they now use many of the same libraries for pure numeric work.

Numeric (as well as hybrid numeric+symbolic) computation is possible in Mathematica. In MATLAB, symbolic math requires a clunky add-on that is far from competitive with what Mathematica can do.

I work at Wolfram.

Neat! I haven't used Mathematica regularly since 2006-or-so, when I was studying mathematics at the University of Chicago.

If memory serves, 5.2 was the then-current version. It's an amazing piece of software.

That's because probably most of their revenue comes not through direct marketing but through site-wide licensing.

This is compounded with the fact that Mathematica's main advantage is in its combinatorial possibilities (just like other more popular programming languages), and not in any specific application.

Think of it as marketing Lego blocks as a business-to-business product.

So your university / company has a licence, and you are naturally sceptical about something that has a definitely weird syntax, they need to tell you "this can help you somehow" and "it's actually better this way".

And if your employee asks you for a licence, and you are naturally sceptical, they need to tell you "this is actually useful in tons of other problems".

It must be a hard sell at the prices they charge compared to free and open source Python Scientific, Financial, etc... (http://www.scipy.org/)
I'm not sure they have to do much 'selling'. They had a product on the market at the right time to become 'the' solution for computational math.

As with many applications or languages (or, in this case, both), being exposed to it at the right time creates a client for life. Those lifers become evangelists in the same way lispniks do (and watch out for those of us who are both), requesting that employers license the software.

If you are between, say, 35 and 45, went to a "decent" university (i.e., one Wolfram and/or NeXT targeted), and have an applied math background of any sort (CS, physics, engineering, etc.), you were very likely exposed to Mathematica. It's just a few steps from there to having a prof use it in a lab or using it because an employer had made a previous investment in development.

At that point, much as with C, or Java, or CLISP, or whatever, it becomes a fallback computational tool. SAS acquires many of its licensees in a very similar way.

As I work through the Project Euler problems, I'm constantly amazed by the Mathematica solutions. Very often, I look at their answer and think "that's cheating... it was way too easy in Mathematica".

So as a non-Mathematica user, it certainly appears to be a very effective technology, and in the right hands and right domain, it seems like it could pay for itself very, very quickly.

Looking through Project Euler solutions sounds like a great way to learn Mathematica!
If R is a programming language that knows how to do statistics, then Mathematica would be a programming language that knows how to do math. It has built in support for just about every kind of math I've ever needed. It is very good at doing symbolic algebra, which I use quite frequently. It can do symbolic calculus (taking derivatives and integration), which I've also used extensively. Supposedly it can compute every one of those symbolic integrals in the big, fat integral table books they have at the library. The programming language can be used various ways, but it is most naturally used with a functional approach. The "Map" function is frequently used, and I naturally end up using anonymous functions quite a bit. I also like the graphics package, and find it quite intuitive to build up complex plots. I prefer it to matplotlib or R's graphics. (That said, some of that is just my years of experience.) There's a lot in there.
As a very simple example of that, you use variables that behave like mathematical unknowns. When I run the following line of Mma code, x, y, and z are undefined. It finds values for these unknowns. That's kind of different than many languages.

Solve[{x + y + z == 3, y + x == 4, z + y == 7}, {x, y, z}]

gives: {{x -> -4, y -> 8, z -> -1}}

Here's a more hacker-ish explanation about what is different and cool about Mathematica: https://news.ycombinator.com/item?id=4015695
Thank you for this very interesting explanation. I've tried to get into Mathematica a couple years ago, but struggled. Can you suggest a good way to scale the learning curve?
We're acutely aware of this. It's always a challenge to onboard users to a tool this broad and deep.

Refactoring our documentation a bit for M10 will help, the predictive interface in M9 helps, and there are some cool "code hint" ideas that are coming in M10 that will hopefully make it easier to keep learning.

We'll also soon be launching a community site to make it easy to discuss functionality, seek answers, and share code. For now, http://mathematica.stackexchange.com is a good resource.

We're also working on getting some materials about the Wolfram Language that should make it easier for people with existing programming experience to grok what is unique and different about WL, and how they might go about learning it.

Probably the best resource remains the existing Mathematica documentation. It is vast -- containing for example more than 100,000 evaluatable code snippets that demonstrate each function being used in multiple ways.

It is available online (http://reference.wolfram.com/mathematica/guide/Mathematica.h...) as well as in-product (double-click function you want to know about, then press F1 or Cmd+Shift+F). Following hyperlinks from familiar territory can get you a long way.

It's quite easy to get lost in it, of course, so here's a short list of "bread and butter" functions that I think every WL programmer should know really well: https://gist.github.com/taliesinb/5848321

Lastly, here is an eclectic mix of guides that might serve as good 'anchors' for some documentation spelunking:

http://reference.wolfram.com/mathematica/guide/LanguageOverv...

http://reference.wolfram.com/mathematica/guide/RulesAndPatte...

http://reference.wolfram.com/mathematica/guide/Patterns.html

http://reference.wolfram.com/mathematica/guide/StringPattern...

http://reference.wolfram.com/mathematica/tutorial/BlocksAndL...

http://reference.wolfram.com/mathematica/tutorial/LevelsInEx...

http://reference.wolfram.com/mathematica/tutorial/ApplyingFu...

http://reference.wolfram.com/mathematica/tutorial/Manipulati...

http://reference.wolfram.com/mathematica/tutorial/Introducti...

http://reference.wolfram.com/mathematica/guide/SymbolicGraph...

http://reference.wolfram.com/mathematica/Compile/tutorial/Ov...

If you must, try replacing every "I" with "some" and it will actually make some sense.
I think the last time there was a Wolfram post, someone also complained that they didn't like his ego. Personally, I don't see the point of reading, or not reading, his post then complaining about him. It accomplishes nothing and it's a bit childish.
I'm not singling you out, daturkel, but these kinds of comments are becoming almost as irritating as his self-congratulatory prose (which I'll grant you is pretty grating at times).

Thing is, if the creator of any piece of software has earned their arrogance, it's Stephen Wolfram. Mathematica is really, properly amazing stuff. It's the closest thing I've ever seen to that Star Trek vision of a computer you can ask anything of. It's orders of magnitude more impressive than, say, a glorified address book, but Stephen Wolfram never put the word 'bitch' on his business cards. He just talks about the stuff his company has built and doesn't bother with humility. There are worse faults.

(comment deleted)
I think what grates most people about Wolfram is his inability to acknowledge the massive contributions that other people have made to his empire. As is noted in a comment down below, Mathematica is dependent on the efforts of dozens of extremely smart people, but Wolfram pretends as though he is the alpha and the omega.
Indeed, Wolfram seems to feel that if his name is on the software (which of course, it is), then it is his creation. The reality is that this is far from true. Additionally, as an above commenter pointed out, his arrogance is not limited to software but also his claims to scientific progress which are not rightly his own discoveries. In general he seems like a bit of a braggart. Photoshop is a fantastic piece of software, but the CEO of adobe doesn't go around throwing his weight. The same could be said of MatLab, R, pretty much any software really. The way he behaves is perhaps the norm in some industries, but in software (especially software backed by dev teams large or small), that kind of personality doesn't come off well.
Can you provide a specific example of a scientific discovery he claims is his own but was in fact discovered by someone else?
Mathematica is indeed brilliant software. And so is Matlab.
If there was ever a time to be self-congratulatory, it would be a 25 year anniversary.

If what he says is true--the fundamental architecture of Mathematica has been fairly consistent over a 25 year period--that's an exceptional thing in the software world. It's rarified air, so I'm going to say he earned this one. :)

It is remarkable how someone can be so obviously brilliant and yet at the same time so (metaphorically) tone-deaf.
Just for a tone comparison, here is Cleve Moler on Matlab's 25th anniversary:

http://www.computerworld.com.au/article/329191/a-z_programmi...

It's very emblematic of the differences between the two systems. Wolfram talks about how he got it all right, and that there is no limit to Mathematica. Moler talks about his delight in seeing Matlab results in the real world, and the decisions he got wrong.

Can you ever imagine Wolfram saying (as Moler does) his target is upping the game of Excel users? I'm laughing just thinking about it.

(comment deleted)
If he thinks it is so important for humanity, he should consider to open source it..
Perhaps he will, one day, but for now the large staff he has working for him all depend on sales of Mathematica to feed their families.

Curating the data sets behind Wolfram Alpha (and Mathematica) is a hugely labour-intensive endeavour. Mathematica itself depends on a large team of extremely well educated people; the pan-scientific domain expertise is significant in that company. Jeopardising that with a radical change of business model, like open sourcing Mathematica, would not be the choice of a sane businessman.

IMHO Wolfram would benefit from open-sourcing Mathematica, and continuing to license Wolfram Alpha (possibly through a 'Pro' version of Mathematica with unmetered Wolfram Alpha API integration).
While this would be lovely, it could be applied to tons of software (stretching the "important for humanity" piece as necessary and feels a bit fallacious. As scrumper says below, sometimes a piece of software is too large or expensive of an endeavor to be done for free. I don't think we can fault Wolfram (the company) for that. Also consider that in any other industry, this would be a crazy request (except perhaps for the pharmaceutical industry, but that's its own can of worms). We're lucky that in software, some people will oblige our request to use what they make for free and change it too.
If he open sources it, and the company goes bankrupt without that income source, it will bitrot and cease to be important for humanity.

The system has to self sustain somehow.

If you want a similar system that is completely free and GPL, look at Maxima. It originates in DOE Macsyma and is Mathematica's direct predecessor. Since the company went bankrupt, the development went on at a glacial pace. Mathematicas commercial develompent model overtook it several times.

We are going to make the core Wolfram Language available as a cloud computation type platform in the near future. The main idea is that anybody should be able to run Wolfram Language code using their browser as a frontend, without necessarily having a license.

Specifically, I would be very surprised if small programs are not free for anyone to run, and if we don't offer some free tier (X minutes of kernel time a month).

Really, we have a strong interest in making WL ubiquitous for doing algorithmic and knowledge-based work. That does certainly mean opening it up more, though as some other people have pointed out, that is probably not going to take the form of open-sourcing the kernel [at least, not until we have different revenue streams in place].

This really does make me feel old. I started using Mathematica 1.1 in my freshman year in college, 24 years ago. I still use it fairly frequently today. I didn't realize I was an early adopter :-).
Your comment makes me feel really young! I'm younger than Wolfram Research but older than Mathematica.

Having just attended our 25 anniversary celebration in Illinois, it's clear there is an enthusiastic and long-lived community around Mathematica that is only going to grow.

With any luck, 2014 will be a "breakout" year in which the Wolfram Language that underlies Mathematica will start playing a more mainstream role in the software engineering industry.

I was one of the first users of Mathematica and recently received a thank-you note from Wolfram Research for my early support. Unlike many early supporters and enthusiasts of Mathematica, however, I won't be encouraging others to join the Mathematica bandwagon.

I myself stopped using the software about a decade ago for one simple, painful reason: I don't want my work to be trapped inside of a system that prevents others from freely building upon it. (And, no, Wolfram's CDF and "player" software are not substitutes for real, live code that I can give to others and have them use, change, and build upon -- without having to license a proprietary software system.)

As I've written before, Mathematica is one of the world's great works of software, mathematics, and engineering. But, as I've also written before, it can't achieve but the smallest portion of its potential to do good for humankind until all humans can use it. For real.

If Google wanted to do the world a big favor, gain itself some serious PR points, and perhaps increase its supply of potential math-savvy engineers two decades hence, it ought to buy Wolfram Research, continue to fund WR's work, and release Mathematica as free software backed by an open development process. Maybe this feat is too big for Google to pull off. Maybe it would take a consortium -- Google, Facebook, Apple, Yahoo!, Microsoft, and IBM together -- but maybe it could happen.

And, if it did, that would be a great day for humankind.

> If Google wanted to do the world a big favor, gain itself some serious PR points, and perhaps increase its supply of potential math-savvy engineers two decades hence, it ought to buy Wolfram Research, continue to fund WR's work, and release Mathematica as free software backed by an open development process. Maybe this feat is too big for Google to pull off. Maybe it would take a consortium -- Google, Facebook, Apple, Yahoo!, Microsoft, and IBM together -- but maybe it could happen.

What? Why not develop a Mathematica alternative?

That's an option. But it would probably set the world back a decade, maybe two, compared to freeing Mathematica. Even if your Mathematica replacement were ready today, it would take years and years and years to gain enough mindshare to begin overtaking Mathematica. The benefit of freeing Mathematica, then, is that it's already dominant. No need to wait out the ever-so-slow shifting of mindshare.
> What? Why not develop a Mathematica alternative?

Or "adopt" one of the existing open source projects developed as Mathematica alternatives.