It is interesting they remark towards the end about age having a factor in innovation. I've noticed that as I've aged my ideas are better (at least for me, heh) but that I have less time or desire to implement them.
"Part of the problem, he says, is that language designers don’t always have practical objectives. “There’s a tendency in academics of trying to solve a problem when no one actually ever had that problem,” said Rabkin, who recently received his computer science PhD at Berkeley and is now at Princeton working on a post-doc. "
I was at Google when Go was birthing (not part of the project or team, just co-employed :-)) and asked the team "What problem does this solve?" I asked because I had been part of the original Java team at Sun. One of the things I had learned at Sun from James Gosling, who had previously done a language for window systems, NeWS, was that the only reason to have a new language is that it solved a problem you could not easily solve with the existing languages.
If you look at all of the durable languages, they share this heritage. BASIC solved the problem of what you had to learn before you could actually program problem. FORTRAN, solved the problem of converting Formulae into computation, which was later made into high art in Mathematica. COBOL which could express business process in code, and of course C which was a logical follow on to BLIS which was the minimal wrapping over assembly language so you could implement large systems and still read the code later and know what they were doing.
I didn't get any sort of coherent answer from the Go team at the time. Which for me was an indication they were a solution in search of a problem, and thus not likely to be much more than a niche language. But to be completely fair I've seen good languages like Rexx go nowhere even though they solved a huge problem (automating the integration of different programs).
A co-worker at Google suggested that we should start holding meetings in High Elvish, their reasoning was that it would keep people out of meetings who were at least motivated enough to learn elvish, and it sounded better when you swore. But applying a language change to solve a structural problem was never going to fly.
Circular :-) But more constructively, it helps if you can get a bit deeper in the analysis. So C has a memory management problem, solved or not solved? C has a concurrency problem, solved or not solved? C has a security problem, solved or not solved? I will be the first to admit that I've not kept up with it since I left so it is entirely possible it's found its voice, has it?
I do mean almost everything; C has many problems: The preprocessor, no modules, annoying to correctly and portably write even seemingly simple things like signed integer calculations, error handling, resource management, almost anything involving arrays is a pain. I could go on, if I were in a worse mood. Go solve all of those for me, keeping the same clean feeling of C, yet is actually clean and simpler.
Either you don't know Java or you don't know Go, because the way the two do things almost couldn't be more different. The JVM and the requirement that every non-primitive be a class that inherits from Object are not small differences.
I love Java but it did introduce us (which may have occurred naturally over time) to new subsets of problems, which may in the future as well be referred to as traits.
How do you explain Java's massive uptake. It can't be it that it solved some problem uniquely that no other language did (whatever that was in 1995). Without the massive marketing and development by Sun, IBM and Oracle who wanted to use it to undermine the windows platform I doubt Java would have taken off the manner it has.
Same thing with C and C++. Without AT&T's backing of Unix and C it is highly unlikely C would have ended up where it is right now. The initial backing of C++ by AT&T was certainly instrumental in pushing it forward.
Similar examples
Python -- interesting niche language until Google picked it up and started pushing it around 2004.
FORTRAN -- IBM's muscle
C# -- doesn't solve anything that Java or C++ couldn't do in 2000 except Microsoft wanted their own proprietary language.
It seems that solving some problem might be optional, but commerical backing and long term support is essential.
Java set out to solve two problems, one was portability of 'compiled' code, so OS/ISA independence, and the other was security issues. And Sun was actually in the process of flushing it down the toilet prior to the response it got in Darmdstadt and elsewhere. The big marketing push came when Sun saw it as a way to club Microsoft, that occurred only after people figured that 'life in the browser' didn't care what OS you ran on. And a lot of people wanted to get out from under Microsoft's thumb at the time.
"It seems that solving some problem might be optional, but commerical backing and long term support is essential."
It seems Forth might be a counter example here, what are your thoughts on its relative success?
The Java infrastructure one of its great strengths. I really do believe the way it evolved into something that System Admins and (to a lesser extent) DBAs could live with did it quite a lot of good in adoption. I really do believe it was independent of the actual language syntax.
these type of things: I put the war and the server and run some scripts. I deploy more app servers.
Having lived through it, the problem that Java uniquely solved in the '90s was that software companiesn had fallen in love with OO but C++ was too complicated for developers to use safely, with pointers vs. references problems, operator overloading (IIRC, the Zapp framework overloaded ++ to add items to a menu), and lack of garbage collection. Java was a breath of fresh air, a language sweet spot with most of C++'s power and few of its drawbacks.
It's an instance of market adoption of a product, being a solution to an urgent problem helps. Many programming languages are scripting languages of a platform, and it's the platform that solves the problem. In general it's subject to all the vagrancies of marketing, especially whether it gets publicized/promoted/pushed. If there are competing products, and both do the same job well, probably one will win (e.g. python is used for integration).
BTW: What problem did Java solve? It seemed to be intended for settop boxes; then for web applets; but serendipitously got traction in the enterprise. It sounds almost a counter-example (is it?)
See below, but specifically to your enterprise comment, by creating an OS independent abstraction environment Java code could cross boundaries of folks equipment and the security policies insured that offering up programmability didn't mean giving away the farm. That was a need the enterprise providers had had for a long time (and one that Rexx was also targeting btw)
Gee... you think? Programming languages are designed for humans - computers get by just fine with bits and bytes. And a programming language must not only communicate something to the computer, but also to any other humans who have anything to do with said system, if it's doing its job well.
So the problem is entirely social. I wrote something about it a while back:
This reminds me of an earlier piece, the one about VB. Merit of a given PL and its success/popularity are correlated, surely, but it's more complex than that. They can be orthogonal by varying degrees, I'd say.
What they really seem to be asking is why hasn't a language which has improved substantially on C received similar adoption. Possibly another qualifier is that the language mustn't be C-like. Or there's an implicit value judgment about Java in there. :)
This subject has been covered extensively, but rarely in the popular press. One correction: C wasn't "popularized" in 1977. It was available inside Bell Labs and in a few C.S. departments on early PDP-11 Unix versions, but it did not really become popular until the late 1980s, when it became a viable choice for development on MS-DOS and Windows (with some ugly extensions to handle 16-bit address segments).
26 comments
[ 3.0 ms ] story [ 68.4 ms ] thread"Part of the problem, he says, is that language designers don’t always have practical objectives. “There’s a tendency in academics of trying to solve a problem when no one actually ever had that problem,” said Rabkin, who recently received his computer science PhD at Berkeley and is now at Princeton working on a post-doc. "
I was at Google when Go was birthing (not part of the project or team, just co-employed :-)) and asked the team "What problem does this solve?" I asked because I had been part of the original Java team at Sun. One of the things I had learned at Sun from James Gosling, who had previously done a language for window systems, NeWS, was that the only reason to have a new language is that it solved a problem you could not easily solve with the existing languages.
If you look at all of the durable languages, they share this heritage. BASIC solved the problem of what you had to learn before you could actually program problem. FORTRAN, solved the problem of converting Formulae into computation, which was later made into high art in Mathematica. COBOL which could express business process in code, and of course C which was a logical follow on to BLIS which was the minimal wrapping over assembly language so you could implement large systems and still read the code later and know what they were doing.
I didn't get any sort of coherent answer from the Go team at the time. Which for me was an indication they were a solution in search of a problem, and thus not likely to be much more than a niche language. But to be completely fair I've seen good languages like Rexx go nowhere even though they solved a huge problem (automating the integration of different programs).
A co-worker at Google suggested that we should start holding meetings in High Elvish, their reasoning was that it would keep people out of meetings who were at least motivated enough to learn elvish, and it sounded better when you swore. But applying a language change to solve a structural problem was never going to fly.
Same thing with C and C++. Without AT&T's backing of Unix and C it is highly unlikely C would have ended up where it is right now. The initial backing of C++ by AT&T was certainly instrumental in pushing it forward.
Similar examples Python -- interesting niche language until Google picked it up and started pushing it around 2004.
FORTRAN -- IBM's muscle
C# -- doesn't solve anything that Java or C++ couldn't do in 2000 except Microsoft wanted their own proprietary language.
It seems that solving some problem might be optional, but commerical backing and long term support is essential.
"It seems that solving some problem might be optional, but commerical backing and long term support is essential."
It seems Forth might be a counter example here, what are your thoughts on its relative success?
But, I can think of one or two way more popular and significant counterexamples (although I don't disagree with his general sentiment): Perl and Ruby.
these type of things: I put the war and the server and run some scripts. I deploy more app servers.
BTW: What problem did Java solve? It seemed to be intended for settop boxes; then for web applets; but serendipitously got traction in the enterprise. It sounds almost a counter-example (is it?)
Gee... you think? Programming languages are designed for humans - computers get by just fine with bits and bytes. And a programming language must not only communicate something to the computer, but also to any other humans who have anything to do with said system, if it's doing its job well.
So the problem is entirely social. I wrote something about it a while back:
http://www.welton.it/articles/programming_language_economics
What they really seem to be asking is why hasn't a language which has improved substantially on C received similar adoption. Possibly another qualifier is that the language mustn't be C-like. Or there's an implicit value judgment about Java in there. :)