Wolfram Language Demo Impresses
theodp writes "The devil will be in the details, but if you were stoked about last November's announcement of the Wolfram programming language, you'll be pleased to know that a just-released dry-but-insanely-great demo delivered by Stephen Wolfram does not disappoint. Even if you're not in love with the syntax or are a FOSS devotee, you'll find it hard not to be impressed by Wolfram's 4-line solution to a traveling salesman tour of the capitals of Western Europe, 6-line camera-capture-to-image-manipulation demo, or 2-line web crawling and data visualization example. And that's just for starters. So, start your Raspberry Pi engines, kids!"
A picture is worth a thousand words, but most sets of 1000 words can't be succinctly described by a single picture.
Similarly, while I'm sure that you can write a few lines of Wolfram and do amazing things, I wonder how often you can set out to do an amazing thing and end up with a few lines of Wolfram. Maybe the answer is "pretty often", which would be wonderful. But I'm waiting to hear from some outside users.
So we don't count the lines of code behind the "FindShortestTour" function?
It looks like a very nice library.
Doesn't really say very much about the power of the language at all, though.
As much as I would like to be impressed, what I see is quite underwhelming: a functional application language with some interface to "facts" and "databases" with a pattern matching engine might make some analysis easier but ... the principles of the language are mostly what you come to expect if you have seen lisp once or any modern functional language,e.g. haskell.
I can see it as being useful, but as another commenter pointed out, "FindShortestTour" is a library function (which might be handy), but definitely not an example of how concise the language might be; the same could be said about "EdgeDetect" or the like. The power of the language can be measured in how easily it can be extended or non trivial algorithms can be implemented ... not in how many functions are offered (even if this could be more convenient none-the-less).
The traveling salesman tour - is NOT a 4 line solution. By that definition I can write "Run Linux" and have a one line operating system.
Honestly, seeing that much power in a demo makes the hair on the back of my neck rise (and in the 'something vile beyond comprehension this way comes' sort of way, not the 'awe at technology indistinguishable from magic' kind of way).
If you can do extremely complex and powerful things with very, very, short commands, that suggests that all those commands have a lot of internal magic baked in, quite possibly including some might-as-well-be-nondeterministic guessing to paper over any ambiguity in commands, or in output from one command moving to be input for another.
In the context of a demo, where you can carefully test, and confine yourself to some highlights from the set of programs that are both cool and well behaved, fantastic. In the context of taking the language out into the wild, that sounds like every nightmare interaction with an unpredictable and opaque 3rd-party library that you'll never expunge from your nightmares....
But that's not your job. You're not developing the language. You're just asking it to do things. Submit a bug report and pray to god that they fix it before you need to finish the project that you stupidly designed around this nondeterministic, amorphous pile of somewhat awesome but perhaps totally useless functions.
ftfy
captcha: formulas
The way this is setup isn't that that you code everything in natural language, rather it is just a shortcut to look up the correct formal language. Instead of searching/browsing documentation looking up the exact names of the functions you want and how to chain them, you just type what you want in natural language. If it interpreted you correctly, then great it saved you several minutes, and now you know the real syntax to use in the future. If not, well you only lost a couple seconds.
The idea of mixing natural language like this isn't so weird; the first step that most programmers would take in looking up documentation when they don't even know the name of the library the functionality is located in is to perform a natural language search on web browser, and then go from there. This just takes it one step further and streamlines the process, which is perfect for a interactive language.