Slashdot Mirror


Stephen Wolfram Developing New Programming Language

Nerval's Lobster writes "Stephen Wolfram, the chief designer of the Mathematica software platform and the Wolfram Alpha 'computation knowledge engine,' has another massive project in the works—although he's remaining somewhat vague about details for the time being. In simplest terms, the project is a new programming language—which he's dubbing the 'Wolfram Language'—which will allow developers and software engineers to program a wide variety of complex functions in a streamlined fashion, for pretty much every single type of hardware from PCs and smartphones all the way up to datacenters and embedded systems. The Language will leverage automation to cut out much of the nitpicking complexity that dominates current programming. 'The Wolfram Language does things automatically whenever you want it to,' he wrote in a recent blog posting. 'Whether it's selecting an optimal algorithm for something. Or picking the most aesthetic layout. Or parallelizing a computation efficiently. Or figuring out the semantic meaning of a piece of data. Or, for that matter, predicting what you might want to do next. Or understanding input you've given in natural language.' In other words, he's proposing a general-purpose programming language with a mind-boggling amount of functions built right in. At this year's SXSW, Wolfram alluded to his decades of work coming together in 'a very nice way,' and this is clearly what he meant. And while it's tempting to dismiss anyone who makes sweeping statements about radically changing the existing paradigm, he does have a record of launching very big projects (Wolfram Alpha contains more than 10 trillion pieces of data cultivated from primary sources, along with tens of thousands of algorithms and equations) that function reliably. At many points over the past few years, he's also expressed a belief that simple equations and programming can converge to create and support enormously complicated systems. Combine all those factors together, and it's clear that Wolfram's pronouncements—no matter how grandiose—can't simply be dismissed. But it remains to be seen how much of an impact he actually has on programming as an art and science."

43 of 168 comments (clear)

  1. Well... by AdamColley · · Score: 5, Interesting

    Hrm, another programming language...

    Attempts have been made in the past to automate programming, it's never worked very well (or at all in some cases)

    Still, look forward to seeing it, perhaps I'll be pleasantly surprised.

    1. Re:Well... by Nerdfest · · Score: 4, Informative

      Perhaps, but I can't help thinking that making assumptions will lead to unpredictable and inconsistent behaviour. Convention over configuration and type inference is one thing, but assumptions are completely another. It's like the dangers in lower level languages where a programmer assumes memory will be zeroed ... and _usually_ it is. It leads to obscure errors. There's a lot to be said for beiong explicit where possible.

    2. Re:Well... by Anonymous Coward · · Score: 2, Interesting

      Lisp worked well. So much so, most of the languages since C basically go "Here's our idea, we're going to be like C in base thinking but extra. What extra? Well, we're going to add lisp-like features, usually in a half-baked manner." The only really major variation is languages targetting multicore operation but they tend to be functional type like lisp.

      Problem with C is that it's a high level assembly. Great for computers as they were in the 1970s and 1980s.

      Problem back then was lisp was too heavy. Problem now is lisp is too fragmented.

      I'm waiting to see if Wolfram does more C + Some of Lisp, or if it will be anything novel.

    3. Re:Well... by rudy_wayne · · Score: 3, Insightful

      Even really smart people come up with stupid ideas.

      Anything that is capable of doing complex things is complex itself. It's unavoidable. Even if every function by itself is extremely simple -- just press the green button -- what happens when there are a thousand buttons. And any one of them can interact with any other button.

    4. Re:Well... by rudy_wayne · · Score: 4, Funny

      Hrm, another programming language...

      Attempts have been made in the past to automate programming, it's never worked very well (or at all in some cases)

      Too many people think that programing is "just a lot of typing". Which leads people to believe that they should create a "new programming language" where you can just type "Make a new better version of Facebook" and be done with it.

      Which leads to a lot of crap with "Visual" in its name. Hey look, you don't have to type. Just drag this widget from here to here. And we've seen how sell that turned out.

    5. Re:Well... by plover · · Score: 5, Insightful

      People seem to think that the problems with programming come from the languages. They're too weakly-typed, too strongly-typed, they use funny symbols, they don't have enough parenthesis, they use significant white space.

      The biggest problems aren't coming from the languages. The problems come from managing the dependencies.

      Everything needs to change state to do useful work. But each state has all these dependencies on prior states, and is itself often setting up to perform yet another task. Non-programmers even have a cute phrase for it: "getting your ducks in a row" is an expression meaning that if you get everything taken care of in advance, your task will be successful.

      Ever notice that on a poorly done task that it's so much easier to throw away the prior work and start over? That's because you've solved the hard part: you learned through experience what things need to be placed in which order, which was the root of the hard problem in the first place. When you redo it, you naturally organize the dependencies in their proper order, and the task becomes easy.

      What a good language has to do is encapsulate and manage these relationships between dependencies. It might be something like a cross between a PERT chart, a sequence diagram, a state chart, and a timeline. Better, the environment should understand the dependencies of every component to the maximum degree possible, and prevent you from assembling them in an unsuccessful order.

      Get the language to that level, and we won't even need the awkward syntax of "computer, tea, Earl Grey, hot."

      --
      John
    6. Re:Well... by Greyfox · · Score: 4, Insightful
      It's very rare that I see a dev team throw something away, unless it's an entire project. Once something's written, people seem to treat it as carved in stone, and they never look at it again. I was looking at some code a while back that output a file full of numbers in a particular format. Over the years the format had changed a few times. Their solution for addressing that was to write a new piece of code that took the original output file, and reformatted it to the new output version. The next time a format change came along, they did the same thing again using the file their reformatter had output! There was a lot of other nonsense in there that was apparently written so that they'd never have to go back and change anything that had already been written. And that kind of mentality seems to be pervasive in the industry (though usually not to THAT extreme.)

      So people bitch about that or business process and I tell them "Well if it's not working for you, FIX it! It doesn't HAVE to be this way, we could just do things differently!" And they look at me as if I'd just suggested the Earth is flat.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    7. Re:Well... by fuzzyfuzzyfungus · · Score: 4, Insightful

      Perhaps, but I can't help thinking that making assumptions will lead to unpredictable and inconsistent behaviour. Convention over configuration and type inference is one thing, but assumptions are completely another. It's like the dangers in lower level languages where a programmer assumes memory will be zeroed ... and _usually_ it is. It leads to obscure errors. There's a lot to be said for beiong explicit where possible.

      This is Stephen "A New Kind of Science" Wolfram. The guy who cataloged some cellular autonoma (and had his uncredited research peons catalog a bunch more) and then decided that he'd answered all the profound questions of metaphysics. I'm not sure that banal matters of 'software engineering' are his problem anymore.

      very sharp guy. However, like many sharp guys, he seems to have entered his obsessive pseudoscience and grandiosity phase. Same basic trajectory as Kurzweil, whose achievements are not to be underestimated; but who now basically evangelizes for nerd cyber-jesus full time.)

    8. Re:Well... by physicsphairy · · Score: 4, Interesting

      Being explicit is precisely what makes programming laborious and tedious. It is entirely true that without such tediousness, you do not enjoy a full range of functionality. But the vast majority of the time you do not need a full range of functionality.

      Speaking as someone in a scientific major, Wolfram|Alpha has shortly become the go to resource for everyone looking to do quick, more-than-arithmetical calculation. It does a fantastic job of anticipating what you need and providing the appropriate options. If I need a differential equation integrated or the root to some expression I *can* ask for it explicitly, but usually I just type in the expression and everything I need will be generated by Wolfram automatically. For involved projects I do setup my problems in Python, but 99% of the time Wolfram|Alpha does just what I need for a hundredth of the effort. The fact my peers are using it the same way is notable because, while before Wolfram I might use Python or Maple or Mathematica, most everyone else would do these things by hand -- learning to use the available tools was something they considered too intimidating or not worth the effort.

      If Stephen Wolfram can do something vaguely like Wolfram|Alpha with more ability to customize and automate what is happening, it's going to transform academics, maybe even down to the high school level. Imagine being able to easily develop a science fair project which requires solving some complicated ODEs, without having to take 3 years of college math first.

    9. Re:Well... by fuzzyfuzzyfungus · · Score: 2

      "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."

      -Greenspun's Tenth Rule.

    10. Re:Well... by LongearedBat · · Score: 3, Interesting

      I do, frequently. And my code is better 'cos of it. In my experience, when people are too afraid to start a module afresh, it's because they're afraid that they don't/can't/won't understand the problem well enough to a) write a solution that works b) understand the insufficiencies/faults of the existing code to do a better job next time around.

    11. Re:Well... by Anonymous Coward · · Score: 2, Insightful

      Or they don't rewrite a module from scratch because it is too intermingled with a hugely complicated system and you cannot guarantee you will not miss something. On my own personal Android projects I have no problem rewriting parts of it no matter how involved or integrated within the whole program it is because I understand how all the parts work together. At work the project is too big to understand how everything works together. There are too many other parts that are assuming that things work the way the have been and if you change something you very well could miss testing some obscure section that seems totally unrelated but still is touched by those changes. It's much easier to make the changes you need to make in as small a way as possible to avoid breaking things. The file conversion seems pretty ridiculous as it would make sense to do the new conversion from the original and not do a conversion of a conversion. Or even just do a conversion once and now all the files are kept as the new version and no more converting needs to be done. But if there are parts of the project that still need to use those intermediate parts of the conversions then that complicates things. You need to change those parts and maybe that breaks other parts etc.The risk can be too high for the little reward it some cases.

    12. Re:Well... by abroadwin · · Score: 2

      I would say this is often true in the real world, but it shouldn't be true if things are really written using best practices. A true, well-written object-oriented design comprised of small, isolated pieces of encapsulated logic, ideally paired with comprehensive unit tests, should prevent the kind of subtle problems you describe. The unfortunate reality, however, is that in many professional settings such careful practices are often ignored or only partially followed, undermining the benefits they are supposed to provide.

    13. Re:Well... by jkauzlar · · Score: 2

      like many sharp guys, he seems to have entered his obsessive pseudoscience and grandiosity phase

      Which is exactly why this may be a fascinating language. Even if it's completely absurd and impractical, whatever ideas he's cooking up may at least be entertaining and/or thought-provoking.

    14. Re:Well... by jbmartin6 · · Score: 2

      I'm not a coder, but I've seen similar effects in system configurations like firewall policies. In those cases it was due to change control, it is easier to get approved and to roll back something that is added onto the existing structure without changing it, than it is to rework the whole thing. I wondered if that was a factor in your experiences in the developer world.

      --
      This posting is provided 'AS IS' without warranty of any kind, implied or otherwise.
  2. Meh... by DrPBacon · · Score: 2

    I'll stick with C

    --
    Spent All My Mod Points
    1. Re:Meh... by __aaacoe2998 · · Score: 2

      Anything with this guy's name on it makes me want to distance myself from it. Alpha was a tracking disaster and I still receive junk mail from this clown.

    2. Re:Meh... by Sponge+Bath · · Score: 2

      Say brother, can you spare a pointer?

    3. Re:Meh... by mwehle · · Score: 2

      Say brother, can you spare a pointer?

      Should have a heap of them around here somewhere. Let me peek in the register. Ah yes, here's a stack!

      --
      Wir sind geboren, um frei zu sein - Rio Reiser
  3. The main innovation of course being ... by jopet · · Score: 4, Interesting

    that you will have to pay a lot of money to use it?

    1. Re:The main innovation of course being ... by dotancohen · · Score: 2

      that you will have to pay a lot of money to use it?

      If the work that needs to be done could be done quicker or simpler (i.e. cheaper) by paying a $1000 license rather than having a $300,000-per-year researcher to go learn Python or R, then it is worth it to pay, no? The current options aren't going away.

      --
      It is dangerous to be right when the government is wrong.
    2. Re:The main innovation of course being ... by rasmusbr · · Score: 2

      If the programming language relies on remote servers (basically Wolfram Alpha) in order to function it would make sense that it would cost money. It costs money to hire people to make and improve a system like Wolfram Alpha.

      If people got over the idea of having everything on their computers for free the world would have a lot less corporate snooping and a lot less ad spamming. That would be nice.

  4. Just Call It "Wolf" by Phrogman · · Score: 3, Funny

    that way if we make a programming error we can just comment "Bad Wolf" (too much exposure to Dr Who recently) :P

    --
    "The first time I got drunk, I got married. The second time I bought a chimpanzee, after that I stayed sober" Arian Seid
  5. Re:yet another programming language by dotancohen · · Score: 3, Informative

    But this one is ostensibly designed by Stephen Wolfram, who knows what scientists and physicists need from a programing language.

    Python, C, Java, et al were all designed by computer programmers for computer programmers. R and Mathlab were designed by computer programmers for mathematicians, thus works a lot better for expressing certain mathematical concepts and working with them (transformations, statistics). But there is much room for improvement, especially when looking at the problem from the scientist's point of view, not from the programmer's point of view.

    --
    It is dangerous to be right when the government is wrong.
  6. His next project is interesting by paiute · · Score: 5, Funny

    Wolfram announced his latest idea - that there needed to be some kind of pliable material available next to toilets with which to clean one's bum. This material, he said, is going to be really soft, probably a couple of layers thick, and needed to be on some kind of continuous dispenser mechanism which he is developing.

    --
    If Slashdot were chemistry it would look like this:Cadaverine
    1. Re:His next project is interesting by macklin01 · · Score: 2

      Wolfram announced his latest idea - that there needed to be some kind of pliable material available next to toilets with which to clean one's bum. This material, he said, is going to be really soft, probably a couple of layers thick, and needed to be on some kind of continuous dispenser mechanism which he is developing.

      And naturally, he'll call it Wolfram paper. :-)

      --
      OpenSource.MathCancer.org: open source comp bio
    2. Re:His next project is interesting by paiute · · Score: 3, Funny

      I know you're trying to be funny by implying he's reinventing the wheel, but ironically, there's more than one way to clean your ass. In some countries, they use water streams rather than TP. There's not just one unique solution to each problem.

      You just made my point. There are already multiple and satisfactory ways to clean one's ass.

      --
      If Slashdot were chemistry it would look like this:Cadaverine
  7. Oh boy. by korbulon · · Score: 5, Funny

    First a new kind of SCIENCE, now a new kind of PROGRAMMING.

    Can't wait for a new kind of LOVE.

  8. Phantom Minus Minus by korbulon · · Score: 4, Insightful

    Stephen Wolfram is the George Lucas of scientific computing.

  9. Re:yet another programming language by VortexCortex · · Score: 4, Interesting

    Consider that the answer may be completely the opposite than what you assume. Perhaps we just teach kids math with programming. Then, just like long division or integration, etc. they won't have a problem explaining their desires to computers.

    Hell, I have a _BEST_SORT() macro which, together with my collections library's _GEN_PROFILED_H directive will select the actual best sort method on next compile after profiling to PROVE which sort is best for the scale of the problem space, instead of guessing. Predicting what I want to do next? Yep, my brain even does that automatically me too. All I have to do is explain to the computer what I want to have happen, and it happens. IMO, the problem is the way mathematics is taught. A sigma is a for loop. The latter is more verbose, but if they'd have been taught for loop instead of sigma they'd be programmers; It's sort of ridiculous when you think about teaching kids the old way: "I'll never use this in real life", meanwhile they can utilize programming in say, javascript, to take better control of every damn device they own right now... Teachers just failed to tell them how.

    Seriousy, I've taught pre-teens how to code as a remedy for flunking out of mathematics; Instantly they're able to see the utility of the tool. Humans are tool using creatures, no wonder they have a hard time learning how to use tools that aren't immediately useful to them. The flunkers are actually being smarter than the teachers.

  10. One hell of a language by Celarent+Darii · · Score: 4, Informative

    Well, either he's created the mother of all LISP macros, or it's simply vaporware. Love to see it when they publish it. Code or it didn't happen.

    Here is the obligatory xkcd, panel two.

  11. Not a story by umafuckit · · Score: 2

    This isn't even a story. The linked-to blog post is marketing fluff, full of big hazy promises and substance. I read some of it and sounds like some sort of data-centric OO language (it makes me think of the R plotting system ggplot: http://ggplot2.org/), beyond that, however, who knows what the hell this is?

  12. Libraries And Documentation by smpoole7 · · Score: 4, Insightful

    I don't program for a living anymore, and I've always been more of a system-level, hardware driver kind of guy, so C/C++ work fine for me.

    But especially coming from that background, my need isn't for another programming language, it's for better documentation of available libraries. For any common task that I want to do, somebody has probably written a great library that I can just strap in and use.

    The problem is when I start trying to use it. The documentation has blank "TBD" pages, or really helpful comments like, "init_lib() -- initializes the library. You can specify the # of flickers per bleem ..."

    Or ... and this is my 2nd favorite ... the documentation is out of date. "Hey, I tried to do this the way your tutorial said and it didn't work?" "Oh, yeah, that tutorial is out of date; we've changed some stuff ..."

    My very most #1 favorite is automatically generated documentation that looks at (for example) a C++ class and then creates an HTML page. I might as well just look at the source code ... hoping, of course, that the people who wrote that source actually inserted more than a few, "does what it says" comments. Or that I don't have to play the Spaghetti Trace(tm) game, bouncing from one .c file to another .h file and back to a third .c (and this is after repeated greps in the "src" directory) to try to figure out what's happening to my poor variable while it's inside a function.

    Not criticizing FOSS, per se; I understand that it's written by volunteers (for whom I'm very grateful). But this, rather than needing a new way to "PRINT" or "SORT" in a programming language, is the far bigger problem, in my book.

    --
    Cogito, igitur comedam pizza.
  13. That's funny twice, considering... by alispguru · · Score: 3, Insightful

    1. Wolfram is a notorious Lisp disser, and Mathematica is arguably a shining example of Greenspun's tenth rule.

    2. Lisp has a long history of trying to help programmers, with mixed results. The term DWIM was coined by Warren Teitelman in 1966 as part of a project based on BBN Lisp, the main predecessor of Interlisp; this project of his sounds like DWIM writ large.

    --

    To a Lisp hacker, XML is S-expressions in drag.
  14. parable by Megane · · Score: 4, Insightful

    One day the student came to the master and said "There are too many programming languages! I am tired of having to learn thirty programming languages! I shall write a new programming language to replace them all!"

    The master smacked the student upside the head. "Idiot! Then we would all have to learn thirty-one programming languages!" The student was enlightened.

    Unfortunately, it was only the one student who was enlightened. Now we all have to learn fifty programming languages.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  15. Re: yet another programming language by jythie · · Score: 2

    Python is actually a good example of why adding new languages is not the answer. One of the big reasons that python has been so embraced in scientific computing are the libraries that were built on top of it that are well suited to those types of tasks. The python community did a reasonably good job of grafting domain specific functionality in via libraries that were fairly accessible to people who are not primarily programmers while still having the general purpose language behind it for people who are, allowing programmers and non-programmers to collaborate easily. Which is why I tend to get annoyed with the whole 'lets build a new language for this domain!' thing since all it really does is increase the barrier between fields and produces yet another custom language that needs to be learned and maintained.

  16. Re:yet another programming language by wickerprints · · Score: 4, Insightful

    Being primarily a mathematician and not a computer scientist or engineer, I have used Maple, Mathematica, and R. At one point I knew Pascal and C. I've dabbled in Python.

    Of all these programming languages, Mathematica was BY FAR the easiest language for me to learn to use. The way it does certain things makes so much more sense to me than the others--for example, how it handles functions and lists. Unlike C, it's a high-level language if you want it to be, although you aren't forced to use it in that way. Pattern matching is extremely powerful. And the syntax is totally unambiguous; brackets define functions, braces define lists, and parentheses are used only for algebraic grouping of terms.

    The major criticism I have of Mathematica is that it is comparatively slow, mainly because of its lack of assumptions regarding the nature of the inputs. Internally, it tries to preserve numerical precision, it works with arbitrary precision arithmetic, and it doesn't assume values are machine precision. All this comes at a cost. Also, reading other people's code can be remarkably difficult, even if it's commented. The tendency is to write functions that do a lot of complicated things in one command, so code can be remarkably dense.

    Most recently, I have had to learn how to use R, due to its abundance of statistical algorithms, many of which have not been implemented in Mathematica. There was a simple example where I tried to calculate a Bayes factor, and the expression was something like (1 - x)/(1 - y), where x and y were very small positive numbers, somewhere around the order of 10^-15. This calculation totally failed in R--the answer given was 1. Mathematica correctly calculated the ratio. Maybe I don't know enough about R to know how to preserve the necessary numerical precision, but it sort of shows that in Mathematica, such issues are handled automatically; moreover, if there is a potential problem, Mathematica warns you.

    Anyway, this is all just personal opinion, really. The takeaway for me is that I see a lot of evidence that Stephen Wolfram is pretty good at designing computer languages for specific purposes. Yes, he's totally egocentric, but there's no denying that he is brilliant. When Wolfram | Alpha debuted, I remember thinking how totally stupid it was. And now...every single high school and college math student knows about it. It is one of the most ingenious marketing ploys I have ever seen. And the scary thing is, it keeps improving. It's almost Star Trek-like in its ability to parse natural language input. And I think that's the eventual direction that computer programming will evolve towards. Programs will not be written in code, but instead, as broad sentences, parsed by an AI which automatically performs the high-level task.

  17. "Wolfram Language"? by DdJ · · Score: 4, Funny

    This fellow needs to work on his self-esteem.

  18. "cut out much of the nitpicking complexity" by NikeHerc · · Score: 2

    I'm not saying Wolfram can't pull this off, but I've been programming for a long, long time and mastering the pesky "nitpicking complexity" is one thing good programmers do very well.

    I wish him well, but I remain skeptical. I hope the result doesn't devolve into "click here and here and here."

    --
    Circle the wagons and fire inward. Entropy increases without bounds.
  19. Knowledge-based programming by T.E.D. · · Score: 2

    The most concrete detail I could find anywhere on his web about it was his repeated characterization of the language as "knowledge-based".

    Now, unless he has some whole new meaning in mind, that isn't a totally new concept in languages. We generally call such languages "AI languages" (or more technically, Inference Engines or Reasoning Engines or whatever.

    The general idea is that the programmer's job is to write rules. Then you feed the engine your rules and a set of facts (or an operating environment it can go get "facts" from), and it will follow what rules it needs to. The language/system of this kind that programmers here will probably be most familiar with is make

    It sounds cool, but I think a lot of folks here might find the concept of something like make being the answer to all their programming difficulties a case of the cure being worse than the disease.

  20. Automatic programming works, and redefines itself by ODBOL · · Score: 2

    Attempts have been made in the past to automate programming, it's never worked very well

    On the contrary. The first attempt to automate programming produced assembly language, which automated the assignment of addresses to variables and instructions. The second one produced FORTRAN, which automated the "programming" of formulae into sequences of individual operations. Every time we successfully automate some programming activity, the nature of programming changes.

    Mike O'Donnell

    --
    Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/
  21. All in a name by cyberchondriac · · Score: 2

    Personally, just for the coolness factor, I think he should name it, "Wolf", for maybe one of the following:

    * World Object Language Framework
    or
    * Wolfram Object Language Framework

    Im just barking at the moon.. I really have no idea what I'm talking about.

    --

    Look back up at my post, now look back down, you're on the Internet. Now look back up. I'm a signature.
  22. Automated programming succeeds, redefines itself by ODBOL · · Score: 2

    Attempts have been made in the past to automate programming, it's never worked very well

    On the contrary, automated programming has worked repeatedly, each time redefining "programming":

    1. Machine language automated the programming of patch boards.
    2. Assembly language automated programming in machine language, particularly the assignment of addresses.
    3. FORTRAN automated assembly language programming, particularly the programming of formulae into sequences of operations.

    Each time someone automated "programming," the word stopped referring to the automated part, and referred to the remaining part of algorithmic problem solving. After FORTRAN, the pieces of automation were less clearly ordered, and less likely to be referred to as "automated programming," but re-entrant procedures, recursive procedures, virtual memory, garbage collection, class instantiation, tail recursion removal, ... all automated activities that were formerly part of "programming." In all cases, whatever specification remained to be done by hand became the new "programming."

    --
    Mike O'Donnell http://people.cs.uchicago.edu/~odonnell/