Reputation: 32635
I'm a long-time C++ programmer developing on Windows, and have been using Visual Studio for developing unmanaged C++.
In the past 2-3 months, for the first time, I have been exposed to the world of C# and Java. Man, I'm astounded by the productivity gain!
In particular:
Having said all that, here's my real question: are C# and Java good technology to learn the most modern tools and libraries? Are these the two technologies that have the best tools available? I want to be exposed to new tools to broaden my perspective. This way I can learn from it, and try to find equivalent tools in C++.
Disclaimer: My intention is not to dis C++ as a language at all. After I have used the tools available for Java and C#, I just feel like the tools that I have available for C++ are quite limited (especially refactoring).
I use the following for my C++ dev:
Clarification When I asked for tools, I meant tools as in IDE, Unit testing tools, refactoring tools, and the likes. TestDriven.NET is probably the most perfect example. I just love the fact I can start coding my unit tests, and right click to run those tests inside my IDE! It's so sad that I cant have the same convenience in unmanaged C++!
Upvotes: 2
Views: 548
Reputation: 2761
I disagree. I had to develop desktop applications in Java, C++, and C#. And the best language depends on the software that you have to develop! If you need a fast software with real time and 3D problem to solve, the best choice is C++. If the application is more in Administration or Management field, you can choose between Java and C#. Moreover, you have already develop with C++/ Qt ?? this framework is now under LGPL license! KDE, TortoiseSVN, Skype, GoogleEarth.. some example of softs developed with Qt... With this framework you are as or more productive than with Java or C# AND your code is multi-platform, too!!!
Upvotes: 1
Reputation: 7777
The tools reflect the programming language.
C++ is a mature programming language with excellent tool support, but due to the way that the language is designed, those tools might not be as fast or offer as many options as the equivalent Java/C# tools.
Upvotes: 2
Reputation: 44215
I agree, too. No matter if it is C# or Java. Both are very modern languages and have a huge community contributing new Technologie implementation and Frameworks. Depending on the field you worked in with C++ moving to e.g. C# can be a big productivity boost. The choice of the language also depends on your field. Java is huge among Enterprise Webapplications and for a beginner the amount of different Frameworks, Shortcuts and Technologies seems to be bone crushing (and some indeed tend to overspecify and therefore oftentimes overcomplicate things). For Java Eclipse is probably the best IDE (I used Visual Studio for a while and maybe it is my lack of experience there, but I really missed some features there that Eclipse has especially when it comes to Code Generation).
C# on the other hand is very .NET Framework and - of course - Microsoft oriented. If you used to program in C++ for windows trying C# is probably really easy (because switching from C++ to C# is exactly what Microsoft wants C++ developers to do) and definitely the better choice for Desktop Applications (the Linux Ports of the .NET runtime environment are constantly getting better, too).
I had to work on a C++ compatibility project and I tried to adapt some of the technologies I was used to working with from Java e.g. the versatile Logging Frameworks or Test Driven development to C++ but it turned out to be way more complex and time consuming than I expected it to be. My personal conclusion was, that some Technologies are not adaptable to C++ (or just with disproportional effort) the way they fit in the languages mentioned above.
Upvotes: 4
Reputation: 188
My dad has a garage filled with tools, and a lot of them I've never seen him use. But they're all there for a purpose. I believe it a worthy endeavor to make my programming repertoire as robust. There will be times when I need the big guns of C++, but for many things, I've been having a good time with C#, Java, and Ruby or Python if I can get away with it. The more we know, the less we're at the mercy of a language.
Upvotes: 4
Reputation:
Well I think you answered your own question. Given your background in C++/Windows, there's no question that exposure to two of the richest languages/toolsets/communities on the market - .NET and Java - will be a win. And the cleanliness of managed language tools vis a vis their native counterparts really allows those tools to focus on problem solving rather than the minutiae of dealing with DLL exports and 7 flavors of native string types.
Upvotes: 1
Reputation: 39437
I'd say yes. C# is is used in many applications and can provide quite a powerful platform from everything to console applicaitons to game development (XNA). Java can be used on the web and is also fairly powerful.
Upvotes: 0