To view parent comment, click here.
To read all comments associated with this story, please click here.
Well, Google might be one of the few company where having a one percent performance increase might lead to multi-million savings. That's due to the scale of their product.
I'm not really convinced about reflection in large-scale systems. It usually seems like a good idea at first, but when you actually come back some year later and try to understand what's happening, it just adds another layer of complexity.
Almost all the other components of software engineering you mention - Maintainability, reliability - are fully achievable with C++ if you have competent programmers and some guidelines (like avoid pointer arithmetic and all the horrible things you can do). It might take a bit more work than with Java, but it's certainly doable and once again, if you're at Google-scale, taking 20% more development time to develop something 2% faster might be worth it.
What two-level compilation scheme are you talking about?
Maintainability, reliability and all that stuff and out of topic for the article's document: It just talks about performance and, though C++ is not as clean or simple as Java, it is (together with C) dominating the industrial software development.
ebasconp,
<offtopic>
"What two-level compilation scheme are you talking about?"
I think he's referring to include files and the C preprocessor. If so, I agree with him that it's a regrettable mess.
"though C++ is not as clean or simple as Java, it is (together with C) dominating the industrial software development."
C/C++ are often the defacto languages of choice for embedded and systems development.
I like the C logic syntax alot (more than ada/pascal languages). But both C and C++ have usability issues which would have been handled differently if they were designed today. I'm not sure if any new language can get enough momentum to take over from C in systems development?
</offtopic>




Member since:
2011-06-10
I agree, C++ looks accident compared to new languages. Reflection, for example, is a great way to implement runtime evolable systems. I have seen software systems, where people tried to build reflection by hacking g++. What an overhead...
Besides that its two-level compilation scheme and user extensible syntax really complicates things like syntax highlighted editors and aspect oriented development. Aspects are proven to reduce development for certain tasks. And we know what an editor like eclipse can do with development time.
Besides this, as an academician I can say this paper is direct reject. But certainly, it is good to see companies coming to conferences. We will learn something from them, and maybe they will take home our ideas and implement something usable.
However, if my PhD brought this paper to me (a asst. prof of software engineering) or to my prof, our reply would be rewrite and think more. In software engineering, you have other problems than simple performance. Maintainability, evolvability , reliability... The language of choice depends on most of these requirements. Oww and also, on some occasions multi-language (multi-paradigm) programing is really helpful. Some problems simply don't fit into OO.