Our Most Important Technology Project Yet
blog.stephenwolfram.com
blog.stephenwolfram.com
Oh, and if Mathematica is the basis of the "Wolfram language", and this is the universal computing language of our new "interconnected brain", I'm leaving for another universe. Unless the boy who cried wolf really has cornered one this time.
Yeah, it did. It also reminded me of one of my own "Moments of Absolute Clarity" that tend to unravel considerably when met with the hard test of execution in the real world.
There's something about the vagueness of the promise that makes it so reminiscent. Sometimes you can get the sense of being on the verge of something big--but the gnarly difficulty lies in bringing it down from the abstraction.
0. internal stresses exist = mutter "look at all these contradictions and warts"; start rethinking assumptions
1. raise temperature = get creative and start brainstorming; new possibilities and combinations present themselves
2. decrease in free energy = do a bunch of prototyping; some radical simplifications or changes of perspective present themselves
3. lower temperature = realize some details are still messy, some ideas were bad; get more conservative and start weeding out stuff
4. repeat until you have to ship
Damn I hate it when that happens! (Especially if I've published the "moment of clarity") :)
Because it's in natural language? WolframAlpha demonstrates (unsurprisingly) that it's still finicky. You still have to do just as much work to ensure connected services are working together properly.
Because--according to universal computation--it covers the entire computable world? So does any Turing-complete language.
I do see this as another cool thing along the lines of IPython Notebooks or JS Fiddle where you can quickly hook up to services and share the results. Uniquely, WolframAlpha's datasets and some of Mathematica's features. So it'd be nice for homework sets or Bret Victor-esque reactive documents (see http://worrydream.com/Tangle/).
No, the Wolfram Language is not natural language. It's the LISP-like language behind Mathematica. We needed to do that from a branding perspective so that the Mathematica product can continue to exist for the academic market without being conflated with the underlying language, which has much wider aspirations.
But as for natural language, you can press '=' and go into 'natural language mode' and write stuff like "total the list", but in my opinion it isn't very good yet and is only really useful for absolute beginners. I think it could get much better in the future when we have nice sophisticated type inference going (which I am working on right now).
As for IPython: the In[..] and Out[..] lines you see in IPython (and amusingly some other cloud system-based IDEs now) mirror v1 of Mathematica back in 1987 (I believe deliberately). It's an amusing accident of syntax that evaluating In[1] works in both Python and Mathematica.
But yes, exactly, part of this whole story is an online IDE (actually, a set of them) that makes it extremely easy to get a whole system deployed. Imagine setting up some machine learning, creating some slick visualizations, allocating some persistent storage, putting it behind an API, and creating an embedded dashboard, all in the space of 20 minutes and a few dozens of lines of code.
The closest existing competitor is FP complete's cloud Haskell system, but I'd love to know about others.
Lisp: everything is lists.
Wolfram Language (prior to V10): everything is an expression. An expression has a head, and parts. The head is the primary place you attach rules. The head can be List, but can also be, say, If, or Disk, or Entity, or Timeseries, or Image, or Graph, or Graphics, or Button, or Frame, (and on and on and on).
Wolfram language (v10): expressions can be numerically indexed (i.e. Part[{"A","B","C"}, 2] == "B"), or symbolically indexed (Part[<|"A" -> 1, "B" -> 2, "C" -> 3|>, "B"] == 2). This new datastructure is called an Association (analogous to a hash map / associative array / dictionary, of course), but eventually it could have heads other than Association.
Anyway, its all quite uniform. No pointers, no references, nothing you "can't see". And the new Association data structure interacts beautifully with lists when you allow it to interact with Part -- you end up with something like XPath, but capable of expressing, for example, almost all of SQL, or LINQ, but in a very functional way.
When was that? 1958?
Wolfram Alpha was massively over-hyped and billed as a Google-killer. It is not remotely that, but it's still an incredibly useful and inimitable product.
But, if you've used mathematica it is the closest thing we have right now to the star trek computer. In a single line I can get solutions to complex problems that would take days in Ruby, Lisp or Haskell. It is the same distance again as Lisp is from C.
In fact, many of the failures you see write-ups on HN I've been able to model and solve in a few minutes with MMA. In particular the rap genius Heroku queue issue.
In fact, many of the failures you see write-ups on HN I've been able to model and solve in a few minutes with MMA. In particular the rap genius Heroku queue issue.
Can you elaborate and/or provide a thorough example of this? I'm curious.
So with a line of code you could represent heroku's queues and determine exactly how many dyne's you needed. Or, you could try different queueing methods and determine how much money you could have been saving.
In some sense Mathematica is further down the What vs How line of language power. Even in ruby, Clojure or Haskell you're still left specifying HOW to do optimization, integration, etc. Not what you'd like to optimize, integrate or manipulate.
[1] http://reference.wolfram.com/mathematica/guide/QueueingProce... [2] http://reference.wolfram.com/mathematica/guide/Optimization....
If you wanted to be ambitious, you could simulate different servicing distributions, and times. But that might add a whole 2-3 lines of code to the solution.
Manipulate[ ListLinePlot[ RandomFunction[QueueingProcess[arrivals, 60/8] , {0, 50}][ "Path"]], {arrivals, 1, 30}]
On heroku's side, you could model their network with a few lines of code and experiment with different types of queues to find things that work well and are affordable.
As PG said in beating the averages, it's one o those things that's easy to dismiss when you're looking up the power curve.
However, Mathematica has always felt a bit niche to me. I wish it was more of an open source project like Octave, because I think the approach is awesome but too often I feel constrained by Wolfram's way of looking at things. If I could combine Matlab, Go, Python, Mathematica, Excel and (yikes) php for it's hands-on-get-@#!$-done-facility, that would be my ideal language.
http://vserver1.cscs.lsa.umich.edu/~crshalizi/reviews/wolfra...
Hahahaha. That’s the funniest thing I’ve read someone write about Wolfram.
The comparison to Darwin is also pretty amusing. Darwin’s book is amazing because it spends most of its effort showing us evidence, so we can draw our own conclusions guided by an overwhelming pile of careful data and research, plus a bit of sharp analysis. By contrast, Wolfram’s book spends most of its effort telling us how important it (and he) is, on unremarkable and tediously repetitive evidence/analysis.
edit: note the Oxford American Dictionary’s definition of pretentious: “attempting to impress by affecting greater importance, talent, culture, etc., than is actually possessed”.
For example count the number of things named “Wolfram” in this most recent blog post, or count the hyperbolic adjectives and adverbs: “amazing”, “whole different level”, “profoundly important”, “incredibly useful”, “breathtaking”, “exciting”, “spectacular”, “sophisticated”, “universally accessible”, “new kind of language”, “cover[ing] all forms of computation”, “by far the largest ever”, “immense”, “spectacularly productive”, “remarkable”, “immense”, “completely general and uniform”, “immense”, can’t-do-it-justice, “immediately meaningful”, “absolutely practical, and spectacular”, “amazing”, “never imagined before”, “incredibly fertile”, “disorienting”, uniquely converging, “universal”, incredibly powerful, “instant”, “absurdly”, “seamless”, “dauntingly long”, “widely accessible”, “wonderful”, “exciting”, “with full semantic fidelity”, “instantly programmable”, “a kind of global brain”, “convenient”, “efficient”, “a new level of computation”, “our most important technology project yet”, “incredibly exciting”.
If you took out all the adjectives, and all the instances of “Wolfram”, there’d be pretty much nothing left. ;) [NKS is thankfully not quite this bad on a sentence-by-sentence level. But then it has 1000 pages to repeatedly tell us how revolutionary and brilliant it is.]
Perhaps you found the actual experiments he did boring, or tedious. I think they're pretty cool, and I've now done my fair share of them, and taught other people how to do them. The axiom systems, graph automata, constraint satisfaction, causal graph stuff, and entropy stuff is all cool. And the notes are a goldmine reference.
Also, this is probably the least important of the 8 specific claims of Shalizi's that I rebut. But hey.
edit: because we seem to be using edits to converse. For 25 years, Wolfram has been the company brand, and people roughly know what it is -- how can we NOT prefix our products with the word Wolfram? Also, did you just call a marketing-type pre-announcement hyperbolic? http://www.youtube.com/watch?v=BETSuT2RNLs
You can do awesome stuff with their mathematical based tools. There are tools for statistics, conversions between units, calculation with dates & times, and a lot more. Look for yourself at http://www.wolframalpha.com/examples/
Now, they also have the data. Like weather data, about media(movies/music), about languages, about media, about stock and also a lot more.
But for developers there is a problem, you can't build apps with their platform. For example you can't really store or receive data, and there are more practical problems.
So I think that they already solved the practical problems. Because they are developing software themselves this way. So for making it friendly for developers they only have to build some frontend for it.
Excuse the sarcasm but Mathematica is unjustifiably expensive to be general purpose and ubiquitous and I'm sure any derivative or superior tool will be as well.
How¸ you ask? Well, I'll just Alpha that for you...
Also, I think the key insight is pretty deep -- systems are either trivially simple, or limitlessly complex, once you reach a (very low) level of complexity, you can do pretty much anything.
As for his post, it should have been titled: "A New Kind of Programming Language".
Here's a very high-level and eclectic list of themes and specific research directions I can remember off-hand: agent-based modeling in economics and operational research, game theory automata in evolutionary biology, lattice gas methods in fluid dynamics, tessellation-based approaches to solving PDAs, L-systems in architectural design, logic automata for programming array-based computers, cellular automata-based PRNGs for stream ciphers, program search for finding lock-free concurrent algorithms, rBMs as used in deep learning.
In fact, I used an exhaustive NKS-style search the other day to find novel data query primitives (i.e. what other functions live in the type-signature space that MapReduce occupies?).
And the Galilean invariance thing is kinda cool: who knew that you didn't need something as fundamental as Galilean invariance?
What do you mean you don't need Galilean invariance? In the real world, fluid motion is Galilean invariant (unless you're talking relativistic motion, which is a whole other class of thing that lattice gases have trouble with). You might be simulating something but it sure ain't a Navier-Stokes fluid.
For Galilean invariance, I've previously waxed philosophic about why I think that's a feature, not a bug (at least, pedagogically): http://news.ycombinator.com/item?id=5931434
Look, I do get your point about lattice gas fluids being interesting conceptually, and I do think they make an interesting point about how little you can get away with and still yield a useful fluid model at the macro scale, but I don't think they're a good example of a trend towards NKS-style methods. If anything the trend in that field since the late 90s has been away from NKS and towards seeing the lattice Boltzmann method as a solver for continuum treatments at the Boltzmann (rather than N-S) level.
Can you describe more how the deviations deviate? Specifically, how do these differences affect numerical solutions?
> If anything the trend in that field since the late 90s has been away from NKS and towards seeing the lattice Boltzmann method as a solver for continuum treatments at the Boltzmann (rather than N-S) level.
Also, which continuum are you referring to here? Number of particles? Lattice spacing?
> Also, which continuum are you referring to here? Number of particles? Lattice spacing?
By continuum I mean you write down the continuum Boltzmann equation, i.e. a partial differential equation for the evolution of the single particle distribution function. You can then discretize this onto a lattice to recover the lattice Boltzmann method.
Anyway, to me, the continued application of these methods is one data point that NKS-like methods are proving useful across a variety of domains.
This is something that kind of died in the late 80s. One of the most noteworthy cases was Damgard's CA-based hash function in the paper that proved collision-resistance of the Merkle-Damgard mode [1]. It was quickly broken [2]. The SHA-3 winner, Keccak, has roots in CA-based designs [3], but at this point it's little more than an historical footnote.
[1] http://www.inf.usi.ch/faculty/shrimpton/spring09/damgard89.p...
[2] http://www.cosic.esat.kuleuven.be/publications/article-132.p...
For 3, I think having a full 7 slides of Bertoni et al's slide deck devoted to the influence of CA-based cryptography on SHA-3 makes it fair to call the approach influential.
Thanks for the references!
It seems like he has an awful lot of balls in the air, which might mean long intellectual leaps, but not the legwork behind them.
Wolfram has a large following in the academic world and improvements to his product line can turn into real results.
Indeed.
One time I knocked my head and blurted out all my ideas without any demos too.
The value of these Open Source communities go way beyond the core language and arise out of the structure.
This will go the way of Linux/BSD (only Microsoft could justify rolling forward alone with its own OS kernel).
Then I try to find the "Redo" button in Mathematica and I reconsider.
a) the Mathematica language has an extensive user manual, but the specification of the language is missing.
b) Mathematica uses term rewriting. Lisp is based on an evaluation model, with procedural macros added.
The kernel language and associated $vau calculus go into this more, and I've experimented with it somewhat myself having ported Manuel's wat-js to perl.
> Pattern matching and term rewriting is the fundamental operating principle of Mathematica’s evaluator. All other programming constructs are implemented by way of term rewriting.