Rob Pike frustrated by Java, C++ complexity
pcworld.idg.com.au
pcworld.idg.com.au
People wouldn't be super surprised to find out one of the members of the UNIX team, a designer of Plan 9 and the author of editors like sam and acme dislikes aspects of Java and C++. Oh well, I guess "google executive" gets hits.
not sure if Go programs would still read like "quiet conversations between a well-spoken research worker and a well-studied mechanical colleague" in a decade or so of some real world usage. a fine line to walk between increased sophistication & noise...
More info: http://golang.org/doc/effective_go.html#interfaces_and_types
Add to this Go's garbage collection and clean built-in concurrency model, and you've eliminated much of what bugs me in day-to-day C++. Go could still blow it with a poor treatment of generics, but I think it stands a good chance of doing Java and C++'s jobs in a much more concise, 'quiet' style.
This article mentions Java and C++ as languages that have become too complex, but without actually stating what this complexity is. Maybe it's just the summary-like nature of the article, but it talks as if we're all meant to just agree with it.
I do agree on the merits of Go (especially relating multi-core processors), but there's surely a better way of expressing these merits than bagging out Java & C++. Just seems a little tacky to me.
(Sorry for the tone of my comment.)
"Google executive"... Come on...
Thanks for that brilliant bit of journalism there.
a. Javascript is less than 10 years old
b. It was developed in response to the growing complexity of Java/C++
I think programmers, in general, aren't comfortable creating their own DSLs or language-level abstractions to problems, and this often leads less than ideal workarounds.
Aren't there Javascript implementations for serverside that run on the JVM?
I still find it hard to believe they built the whole thing in JS. If it really is so, well... that's actually really, really cool.
Ignoring the inaccuracy regarding Javascript, what is so surprising about writing code "by hand"? Am I missing something?
And I really don't think that they use JS on the backend for GMail. I figured it was Python or Java.
So new languages with different abstractions come along and things are simpler to do in it. That simplicity is then used to build even more complex things, which then expose how the abstractions doesn't work in the formerly new language.
Repeat ad nausum.
This is true for mathematics, but not in the same way for computer languages, because we haven't unlimited computing power and memory space.
Yes, with a more abstract language you can solve a problem easier on the implementation, source code side.
But with every abstraction you're loosing flexibility, because to get an abstraction you're putting the lower parts in a concrete combination. Thus every abstraction has it's costs.
Yes, you could use two computing languages, one for the performace/memory critical part, and one for the other parts of the programm. But in practise it's not that easy to combine the two.
There's a reason why people are still using C/C++.
I don't think this is true. You might lose some, you might get some, in a different place, with greatly lowered brainload.
Or are you going to argue that lisps are less flexible than C?
That's my point. Abstractions are great, I love Lisp and Haskell. The problem of more complexity isn't completely solved by using better abstractions, because you still need to look at the performance and memory usage, as long we have a limit there.
You can have different abstractions compared to what C has and still retain the granularity of control you want.
That doesn't makes sense. What should be a different abstraction of C? If you've an other syntax for the C pointer arithmetic it's still the same abstraction.
If you can do still the same things, then it's still the same abstraction. You can only combine multiple abstractions in one language, but I think that's not a good idea.
"You can have different abstractions compared to what C has and still retain the granularity of control you want."
I don't think so, because you would add the complexity of both, the higher abstraction parts and the C parts. You would generate a language which is harder to master than their component parts.
In this discussion on Java in 2004 http://groups.google.com/group/comp.os.plan9/browse_thread/t...
object-oriented design is the roman numerals of computing.
-rob
Or this one from the same year on manual pages !
http://groups.google.com/group/comp.os.plan9/browse_thread/t...;
when ken and i described the new features we were proposing for plan 9 C, including inherited structure elements, to bjarne stroustrup, he said, "if you want C++ you know where to find it." and stormed from the room.
i don't think he understood exactly why we were proposing these features.
That is every big house has a horse in the language race.