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:
- C# and Java have so many cool tools (TestDriven.NET, NetBeans IDE). Personally, the tools feel much more modern than the C++ tools that I've been using.
- All the libraries are there for me to use right away, without me having to download extras (Boost, Qt, etc)
- Blazingly-fast compile time. C# compilation is super fast. Each time I make changes to Java code on my Netbeans IDE, I never have to wait for the usual compile/link. It's just done right there. No waiting! (People who have used Boost probably agree with me on the slow compile time such as Asio library)
- Simple deployment scheme. I really like the fact that I can just write the code once and it can be run on different machines (OS) without me having to recompile it.
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:
- VS.NET 08
- Visual Assist X
- Intel Parallel Studio (profiler)
- TeamCity
- I plan to use Bullseye and PC-Lint + Visual Lint for code checking
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++!