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."
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.
I'll stick with C
Spent All My Mod Points
that you will have to pay a lot of money to use it?
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
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.
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
"The Wolfram Language does things automatically whenever you want it to"
Did that make anyone else think of Zombo.com?
First a new kind of SCIENCE, now a new kind of PROGRAMMING.
Can't wait for a new kind of LOVE.
Stephen Wolfram is the George Lucas of scientific computing.
He won't publish it under a free software license...
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.
So you can do anything you want with Wolfram language? The only limit is your imagination?
Will the first project be the long-awaited 1.0 version of Zombo.com?
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.
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?
soylentnews.org
Or, for that matter, on search.
Good at PR, though.
... so you don't actually have to do any coding at all?
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.
Then why does it use the engineer's 'j' for complex numbers instead of maths' and physics' 'i'?
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.
Guido is also an extremely competent C programmer (see recent Slashdot article) and he did not design Python for scientists, but rather for programmers.
It is dangerous to be right when the government is wrong.
That is a rather creative idea. I would love to see more practical examples of what you do with it, such as the Sigma example.
It is dangerous to be right when the government is wrong.
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; }
He should just name it Language.
Close. A sigma is one type of a for loop that automatically adds each number in the sequence to a sum.
Seriously, C is that awesome.
If C doesn't work, import python.
..don't panic
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.
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.
That is very true, however they still require one to express his problem in terms of lists, sets, dicts, strings, ints, floats, and complex numbers. Not all scientific concepts can be massaged into one of those datatypes.
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.
The counter argument is that each individual domain needs its own programming language in the same sense that each individual domain needs its own jargon. Each domain has its own unique intricacies, problems, methods, and context. The tools used should reflect that.
It is dangerous to be right when the government is wrong.
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.
This fellow needs to work on his self-esteem.
Both did work wioth cellular autmata 50 years apart
Jargon is a good parallel, though I feel that it is an example of why each domain doesn't need its own language. In the case of jargon, one is still using the same language as people in other domains with the addition of some extra shorthand. I would argue that such shorthand is closest to use of libraries.. still the same language plus domain specific functionality/sugar.
agreed. It sounds like we need a programming language where you don't have to think logically. Then those duds could really get something done.
imo, problem definition comes before problem solution.
"Microsoft also announced today they are developing a new language. Though largely unspecified, it will be called W# and will do everything you want in a way that makes you dependent on Windows'."
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
Then why does it use the engineer's 'j' for complex numbers instead of maths' and physics' 'i'?
because i is for index I imagine.
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.
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.
That is kinda how I would think of it.. You make a request. The computer AI does its best to pick a starting point given what you described and starts running it. Then you explain to the computer what the AI is doing wrong in comparison to the running program. It tries again. Rinse and repeat until it has something that does everything you want it to.
From a programming point of view it is like starting with a similar project and using natural language to modify the existing program little by little.
This certainly wouldn't make the most efficient code, but it might be good for people who just want to do a variation on an existing theme.
Obviously this wouldn't be programming from the classical point of view, but it could be extrapolated to handle an enormous variety of things that an average person would want.... Then once there is a prototype they could hand it to a software engineer for the parts that need optimization for final tweaking.
Hmm, the humour and sarcasm seem to have been be lost on you.
... 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 ...
Isn't that what fortran does?
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.
Libraries only provide new functions and types. Go look at mathlab or (shudder) labview for some examples of domain-specific datatypes (not simply classes built on the common primitives) and paradigms.
Surely you are not suggesting that the field of particle physics should be using the same tools as the field of psychiatry? That materials engineers should be using the same tools as palaeontologists?
It is dangerous to be right when the government is wrong.
If Dylan isn't good enough for you, your problem isn't non-S-expression syntax.
To a Lisp hacker, XML is S-expressions in drag.
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/
Part of the problem is that much of math education is based on rote memorization rather than problem solving, and writing a program to do your homework for you is frowned upon and often considered cheating. If writing programs to solve your math homework was generally accepted as legitimate, we would have both fewer kids flunk out of math and more kids going into programming, as those kids would be actually learning how both math and programming are used in the real world.
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.
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":
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/
I'm sure I misread that ;-)
Being primarily a mathematician and not a computer scientist or engineer I've used Maple, Mathematica, Matlab, Magma and R. I've also programmed in Python, Perl, C, and Java and dabbled in things like Lisp and Haskell.
All the "math" programs on that list are terrible programming languages; they work great as interactive environments for doing (potentially symbolic) computation, but writing code in them? Ugh. If I actually have to write scientific computing code it's going to be in Python using numpy and sympy, or C if I need performance.
All the different math programs all have their strengths and weaknesses: Matlab kicks the crap out of the other for anything numerical or linear algebra related, both for ease of expression and performance; R has far more capabilities statistically than any of the others -- data frames as a fundamental data type make that clear; Magma is incomparable for the breadth and power of its algebra, none of the other come remotely close; Mathematica and Maple are ... well, sort of a poor jack of all trades that do most things but none of it very well.
Craft Beer Programming T-shirts
Like Virgin and Trump, Wolfram is such as egomaniac that he probably has his named stamped on his toilet paper.
Of course Mathematica's handling of functions and lists is good, it's nearly Lisp over again.
| 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.
Is this a failure, or that 1 is the best approximation. Did you want (1-x)/(1-y) - 1 instead ? Then
Mathematica is not good for numerical computations---in practice people often use Matlab or R or Python as prototypes for software which eventually ends up being programmed in C++ or Fortran (or Java, occasionally). Getting good answers with finite-precision floating point is valuable.
"social-science abomination like R with a screwball syntax."
R is a clone of the S+ language, which was invented at Bell Labs. SPSS is the social-science 'abomination'.
As I implied in my previous response, the answer was not supposed to be 1. I also probably didn't remember the example correctly, but my point is that I could not get the correct value in R, but Mathematica did get it.
For me, having confidence that numerical results shown are correct to within the precision displayed is more important than speed of calculation. I totally get that such things have a speed penalty. Python might be able to do it better and faster, but as I noted, my experience with that program is limited.
Stephen Wolfram is a brilliant businessman who has made a fortune charging what the market will bear for Mathematica and Alpha. Will that model break-down with the Wolfram programming language? I think it will. PARCplace tried to sell Smalltalk for awhile and the language stagnated until Alan Kay was able to get Squeak going. I can't imagine anything becoming as popular as Python or C++ if it costs thousands of dollars to get into the game.
Perhaps Wolfram will patent some of his ideas and then they will catch on 20 years later.
Well, to be truthful, even from a programmer's point of view they are all lacking.
I want a language with a built-in B+Tree (stored to a file), where structs are directly accessed, where classes are handles to the heap, where there is built-in support for sorted arrays AND for hash tables, where it's serialization of stucts that don't contain pointers is trivial (i.e., I want such things to be able to be the data items of the B+Tree without additional work), etc.
And I want object, struct, and array persistence to be a built-in run-time option. Analogous to the way Java has you inherit serializeable, but instead of "able to be serialized" I want to it say "Serialize this type".
Yes, these things are available as library add-ons in lots of languages. And the syntax for using them is always exceedingly ugly. (Not as bad as SQL, but still very bad.)
And the abyssmal thing is that many of these things have been available in isolated instances in the past. E.g., Pick Basic had a built-in B+Tree.
Well, it's also true that every single feature I've mentioned (bar, possibly, SQL) is available in Squeak, a Smalltalk dialect. But it won't handle large persistent memory images. Whoops! And it also has the reputation for being slow.
OTOH, if Wolfram's language can even just automate parallel execution, it would be a tremendous blessing.
I think we've pushed this "anyone can grow up to be president" thing too far.
I think the point here is that, at some point, somebody's got to translate these human-level concepts into some formal system. I think that sort of translation is AI-complete (meaning that we can't automate it without strong AI). I don't think Wolfram's going to do it.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
In theory if a node-based graphical programming editor is created right, it should be able to output code in a syntax for any programming language you choose. Diagram what you want, and click the button for C++/Javascript/Python/Etc., and then you get the desired source saved out for use in your compiler or interpreter of choice. So it really wouldn't have to be a language, but more like a meta-language.
Some people seem to be confused by the idea that whatever meta-language a program is written becomes the primary source code. If you write a UML diagram and generate code from it, the UML diagram is the actual source code, not the .c++ and .h files it spits out. It also makes developers uncomfortable when there are blocks of C++ code they must never touch. (Microsoft understands this, and so they carefully try to make their visual editors work both ways, where they parse the C# code to alter the values on the forms. But it still causes friction.)
As long as it accepts what I do as the source for a repeatable process that ends in the desired results, it can be classified as a language. The language of a code generator is still a computer language.
Ivar Jacobsen developed an absolutely brilliant UML programming environment about a decade ago that's pretty close to this idea. It would allow the developer to create the classes, sequence diagrams, activity diagrams, state diagrams, etc., and then click "build". He said that it would auto-generate 90-95% of the java code needed for an app, and that the human developer could quickly fill in the rest. Unfortunately, the licensing was something like 5 or 6 figures per seat, and the developers didn't quite understand where its limits were, so most people were unwilling to try it. That, and very few developers are willing to build an entire app in a UML code generator - they would rather "code", and "everybody knows that boilerplate generated code is inefficient."[1] I would have loved to bring in a tool like that. (Ivar's now backed away from it and is making his money coaching Agile instead. Oh, how the mighty have fallen.)
Even ArgoUML can quickly spit out a ton of boilerplate code from UML, and it's completely open source!
The drawbacks to both of those tools is that they're UML, not English. And they still require the developer to understand and manage dependencies.
Ultimately, I'm not looking for C+++, or C##, (+ 1 LISP), or even UML to rise up and become the One True Language. I think we need to get to the really usable computers from Star Trek, where they interpret and understand the user's intent contextually, they understands their own resources and their dependencies, and they produce the desired results in an appropriate manner. (It's funny how often they were unable to interpret the crew's commands when they needed a plot device for the crew to solve.) And we are finally starting to see such things emerge in real-world (but still limited) domains today. Siri is a good example of a context aware interpreter, even though it still can't create a significant repeatable process. At least it can sometimes set state that other repeating processes may respect.
Anyway, if this stuff were easy, we'd be doing it already.
[1] This is a common point of misunderstanding. Efficiency is all about cost, and the costs are simply not on the side of most handwritten code. The cost of a software developer's time is greater than the cost of most application inefficiencies they might produce. Code generators spit out pre-tested code that doesn't incur the cost of additional testing. The cost of a single bug reaching production is far greater than the cost of almost every inefficiency (real or feared). A really good compiler optimizer will yield efficient code regardless of the source. And servers can be scaled up cheaper than qualified programmers can be hired. Yet for some reason, developers still insist on worrying about the nuanced differences between QuickSort and HeapSort.
John
I have a friend who invented something called "The Wolfram Scale" It measures your arrogance on a scale of 0 to 1. Wolfram himself is 1.0 by definition. Most people measure a few milliwolframs. Steve Jobs measured maybe 100 milliwolframs. Gandhi would measure 0 milliwolframs.
W-hy doesn't he use the element Tungsten for the name of the language? After all, his name was the original name of the element, and a new programming language for Mathematics is likely to be HARD, like the metal. This would follow in the tradition of naming software after substances and elements in nature, Carbon, Chromium, Ruby.
I think you really nailed it. Would upvote you if had modpoints today.
Check out my cross-platform apps
Then once there is a prototype they could hand it to a software engineer for the parts that need optimization for final tweaking.
To use an analogy, would you cut your custom suit from an old plastic tarp using rusty garden shears and then hand it to your tailor for "final tweaking"? No? Then you'd best leave the programming to the experts who frankly don't need your "help".
When people are trying to create a low-cost, open source, ubiquitous computer, what they really need is an proprietary resource hog of a language on it that will require them to buy an expensive license to continue to use what they learned later!
Do yourself a favor and use Python or something similar instead.
You're right: I don't want to have to think about the problem I'm trying to solve. If a one-line backtracking Prolog program or five line brute force C program solves the problem for me, I don't want to think about the problem or try to understand its intricacies; I can spend my time solving some other, more important problem. Laziness is the cause of progress.