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