Stephen Wolfram's new big thing

    Stephen Wolfram, con­tro­ver­sial author of A new kind of science, possible crank, and inventor of Wolfram Alpha, which has helped me solve many of my math homeworks, has come up with the claimthe he has invented a new com­pu­ta­tion­al paradigm. The initial blog post was quite vague, throwing around many buzzwords such as cloud or natural language, and dubious ideeas such "Algorithm au­toma­tion" (aren't algorithms automatic already?), "Com­putable documents" (I presume he means his pro­pri­etary format, CDF, but it doesn't make sense. You can use any pro­gram­ming language to generate (compute) any document).

    Yesterday, Ven­ture­Beat published an interview with him and came off as bigger wor­ship­pers of Stephen Wolfram than Gizmodo is of Apple products.

    I think that SW presents many things as being new, even if they are quite old. Or at least stretches the truth.

    There’s a whole new level of automation and a completely divergent approach to building a pro­gram­ming language, away from the small, agile core with func­tion­al­i­ty pushed out to libraries and modules and toward a massive holistic thing which treats data and code as one.

    There is a reason why pro­gram­ming languages are built with a small core and have much of the func­tion­al­i­ty in libraries: it's so you are not stuck with the same glove whether you have 3, 4 or 5 fingers. SW might be a genius, but he couldn't have possibly thought of every possible use case, and if a certain func­tion­al­i­ty is baked into the language, it's probably going to be painful to use something else instead.

    Also, treating data and code as one? That's a feature of one of the first pro­gram­ming languages, LISP, which appeared in 1958. S-ex­pres­sions ftw.

    “The knowledge graph is a vastly less ambitious project than what we’ve been doing at Wolfram Alpha,” Wolfram says quickly when I bring it up. “It’s just Wikipedia and other data.”
    Google wants to understand objects and things and their re­la­tion­ships so it can give answers, not just results. But Wolfram wants to make the world computable, so that our computers can answer questions like “where is the In­ter­na­tion­al Space Station right now.” That requires a level of machine in­tel­li­gence that knows what the ISS is, that it’s in space, that it is orbiting the Earth, what its speed is, and where in its orbit it is right now.
    That’s not static data; that’s a com­bi­na­tion of com­pu­ta­tion with knowledge. Wol­fra­mAl­pha does that today, but that it just the beginning.

    Search engines aren’t good at that, Wolfram argues, because they’re too messy. Questions in a search engine have many answers, with varying degrees of ap­plic­a­bil­i­ty and “rightness.” That’s not computable, not clean enough to program or feed into a system.

    I don't really get why un­der­stand­ing objects and the re­la­tion­ships results in static data only. If the re­la­tion­ship between Earth and ISS is given by an equation of elipse (or whatever its orbit is), pa­ram­e­trized by time, it's pretty easy to answer the query "Where is ISS right now?". Google can already solve equations, plot 2D graphs, so it's not exactly a new thing for it to solve equations between objects it already knows about.

    there are 11,000 pages of doc­u­men­ta­tion already.

    It hurts to even think about that much doc­u­men­ta­tion. And to think somebody wrote that... *shudder*

    “In general, what we’re trying to do is so that as long as a person can describe what they want, our goal is to get that done. A human defines what the goal should be, and a computer does its best to figure out what that means, and does its best to do it,” Wolfram says.

    Isn't that what Prolog and other logic pro­gram­ming languages were promising to do? You just say what you want, and the compiler/runtime figures out how to best do it. And look where they are now. Getting half a semester of study in college.

    In about 30 seconds, Wolfram created a small web ap­pli­ca­tion that drew circles on a web page and included a user interface so a visitor could make them bigger or smaller, or change their colors. That’s doable simply because the Wolfram language — with its access to a vast reservoir of knowledge — knows what a circle is and can make it, and it au­to­mat­i­cal­ly provides web-native user controls to manipulate it. It was a trivial example, but in another 30 seconds, Wolfram built a code snippet that defined the countries in South America and displayed their flags. Then he called up a map of Europe and high­light­ed Germany and France in different colors com­pu­ta­tion­al­ly, in seconds.

    The first one would take about .... 5 minutes using d3.js? The second one is probably doable in another 5 minutes, out of which 3 will be searching on Google for an API that returns countries and flags. I'm pretty sure searching the doc­u­men­ta­tion of Wolfram will take longer in the beginning (or we will use Google to search through it ;;) )

    In other words, “South America” is not a variable to be assigned, or an object or class to be in­stan­ti­at­ed. It’s a phrase that is known and understood, which sig­nif­i­cance and meaning and con­nec­tions that can be pulled into your program with very little effort, and no external data sources. And, that knowledge source is con­tin­u­al­ly updating and growing to match the updating and changing world.

    No external data source? But it is con­tin­u­al­ly updating? How? Tele­path­i­cal­ly? It is external to the ap­pli­ca­tion. It will be hosted on Wolfram's servers.

    “It will spawn a whole mass of new startups,” Wolfram told me. “Now it becomes realistic for someone to build out a complete algorithm and automation system in a few hours.”
    It also changes who can program, because instead of programs being tens of thousands of lines of code, they’re 20 or 200. And that means kids can code or novice pro­gram­mers can get started — and build sig­nif­i­cant apps.

    Really? You can whip up a new fancy algorithm but you can't code? I don't think you can learn algorithms just on paper, using pseudocode. It's quite worthless if you don't get to write your own code. There are always small catches which are not obvious on paper, such as constants that for inputs smaller than the as­ymp­tot­i­cal infinity make it more in­ef­fi­cient than other algorithms, etc.

    Oh, and what, kids can't learn to code? You don't have to teach them pointers right away, but Python is a pretty simple language to learn - and it doesn't shoehorn any one paradigm on you.

    it’s so different from a tra­di­tion­al neat separation of data and code and interface.

    Tra­di­tion­al neat separation? Have you ever heard about spaghetti code? There is a reason why it's considered best practice to separate data from code (logic) and interface: usually you can do more than one thing with the same data, you can show the same thing in more than one way, or you can show different things in the same way.

    All code, however, can simply be copied and pasted between cloud and device and desktop — it’s all the same.

    Really? You're en­cour­ag­ing people to copy paste code? What happened to reusabil­i­ty? Don't Repeat Yourself?

    “Another way to do it is to use a function call from a native language like Java,” Wolfram told me. “You’ve got variables in your Java code, and we synthesize the code you need to go from Java to the form that you need it in to send it into our engine, and then sent results back to Java. It will look as if you’re just calling Java, but it will be reaching out to our cloud.”

    And that is new in what way? That's the definition of remote procedure calls, which have been around since the 1980's.

    So, there is a lot of hype and ex­ag­ger­a­tion in what we have heard so far about this new project of Stephen Wolfram. I'm curious what will it actually do - and whether anyone will actually use it.