Switching from Java to C#

Started by
12 comments, last by Xai 10 years, 12 months ago
Going from Java or C# to C++ you will find yourself saying "I can't do what?!?!" A lot. The c++ standard libraries are shockingly limited. Hell, even a standard string class or dynamic array class are fairly new to the standard. Things like graphics, ui, sound, database, directory manipulation, networking, etc... Zip, zilch nada. Thankfully there are frameworks like Qt, but that's almost like learning a whole other language.
Advertisement

Well, that's a good point. Frameworks might weigh more heavy in deciding between C# or C++ than anything else, which really is a matter of preference.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

Going from Java or C# to C++ you will find yourself saying "I can't do what?!?!" A lot. The c++ standard libraries are shockingly limited. Hell, even a standard string class or dynamic array class are fairly new to the standard. Things like graphics, ui, sound, database, directory manipulation, networking, etc... Zip, zilch nada. Thankfully there are frameworks like Qt, but that's almost like learning a whole other language.

So I'll need to download additional libraries even for simple stuff? I mean, I'm open to learning, I just want to know what I'm getting into. (Referring to C++)

Going from Java or C# to C++ you will find yourself saying "I can't do what?!?!" A lot. The c++ standard libraries are shockingly limited. Hell, even a standard string class or dynamic array class are fairly new to the standard. Things like graphics, ui, sound, database, directory manipulation, networking, etc... Zip, zilch nada. Thankfully there are frameworks like Qt, but that's almost like learning a whole other language.

So I'll need to download additional libraries even for simple stuff? I mean, I'm open to learning, I just want to know what I'm getting into. (Referring to C++)

Yes, you will be using 3rd party libraries in C++ in ANY program beyond a 2 week school lab. In the other 2 platforms, you will be using 1 of many libraries as well, but the differences are:

1. The C++ Standard Library has about 20% as much core functionality in it (no DB access, no XML processing, no graphics, no sound, no threads, no web technogy, URI, no control libraries of any kind, no UI building, etc, etc.) - because the C++ standard library makes almost NO assumptions about platform. It works for writing programs with a graphical UI, a console interface, an embedded factory robot control board, etc. It is primarily intended to be only the set of things widely needed and NOT readily build-able with itself (in other words, if you could easily add the library piece by writing it using the existing library piece and nothing else, then it doesn't have to be in the standard, you can download it elsewhere - unless it is so common and needed that leaving it out would cause nearly everyone to need to add / download it).

2. The Java and .Net libraries gave a LOT of thought to trying to be complete platforms, such that many programs could be built without needing third party software. However, third party libraries are still better at many things (such as Log4J, Hibernate, etc). Its just that in Java and .NET they are trying to be better than something, rather than provide it in the first place.

3. Java and .Net were built from the ground up to provide a clean example and guideline for class and library writers to follow. They include not just specifications, but naming convention recommendations and examples of library organization and packaging. C++ was built in a world where C professionals already had multiple entrenched competing styles, and often big monolithic projects and C++ didn't try to force people to change - it is just a tool. So C++ libraries have been completely inconsistently named and organized from the beginning. Some of the best and cleanest code in the world is C or C++ - but a lot of it is completely unreadable by anyone at all.

4. The biggest issue with C++ libraries, is that, since the core is so spartan, almost every vendor there own copy of "basic" helpful classes, which means that when you have 3 3rd party libraries you have 3 different sets ... 1 inside each vendors code ... and each one is going to be different and not compatible across libraries. So for instance, logging of memory management or dependency injection are just going to be completely tied to each library.

This topic is closed to new replies.

Advertisement