Is increased programming efficiency in Java or C# a myth? [closed]
A big advantage of Java or C# in increasing productivity of development is that you're supposed to lose less time with complicated language features, especially those related to memory management. But is it just an impression?
I think that the learning curve for C++ is definitely more steep, but for a proficient C++ programmer, and given a set of coding standards for C++, isn't the difference between Java and C++ fading away?
for a proficient C++ programmer
This is the problem. In my experience, most programmers are NOT proficient. Java allows mindless assembly line workers to be productive in a way that C++ does not.
Proficient developers will be productive no matter what language they write with.
Higher level languages mean you have to do (and worry about) less crud which definitely does speed up development time for some applications (GUIs, web apps etc.). If you're writing lower level stuff though like device drivers I've found I waste as much time trying to go into and out of managed / unmanaged code (in the case of C++ / CLI) as I would probably have saved.
If anything, I would suggest higher level languages like C# and Java are becoming better for stuff which was traditionally only the realm of C++ as more and more libraries and wrappers for low-level control are written, developed and optomised.
So my advice; if you're doing higher level development, use a higher level language. If you need more control, use a lower level language (or find a high level one with some nice wrappers for your low-level tasks).
In my opinion no. Java and C# are simpler and safer and therefore faster to write. Of course if a C++ programmer has a certain level of skill, it is possible that there is no difference. But I think that's one of the reasons Java and C# can offer better productivity overall. You don't have to be a especially skilled programmer to be productive. And there are a lot more average programmers around than skilled ones.
Wouldn't that logic apply to any language? I think idea (whether true or not) is that the time from novice to proficient is less on average with Java or C# than with C++.
Also, I would tend to agree, on the surface. However, there are so many details on both sides of the debate that I promise you it won't be settled via a SO thread.
Well, of course, but exactly that learning curve is the heart of the discussion.
The discussion is not about comparing two proficient developers, one in C++ and one in Java. Given that situation, a C++ developer has much less boilerplate to write, and might be even more productive.
When referring to managed platforms such as Java and .NET, it is very clear that a novice programmer can much more easily dive into things, and produce a working application in less time than it would take in C++.
Keep in mind that most of the programmers in the world are not proficient ones. They most likely are under-educated, have not gone through significant training, and have a deadline to meet.
Given that scenario - would you choose to hire 5 novice C++ programmers, or 5 Java/C# programmers - to get the job done?
精彩评论