Dear mecheil.edwar,
I once had a dream too. I started developing a C# tekla like application. And many parts of it actually work like: 3d snap, OpenGL, extrusion, tessellation, volume boolean operations, section library, undo redo (this was the most difficult part), lots of 3D math..., save, open.
Let's say main differences between C# and C++ are garbage collector, portability, application speed, programming speed.
Programming speed:
- application done in 1 week/month in C++ or 1 day in C#. After 1 year of development in C++ of the above app. I would be still be reading NeHe's tutorials, and trying to create a window.
- very unpredictable/unexpected behavior in C++, very friendly debugging in C#.
Application speed:
- some say C++ is about 10% faster in pure computing like games or structure analysis. IF AND ONLY IF C++ CODE IS OPTIMIZED AS MUCH AS IT CAN BE.
- to get more speed some pros use assembler and C++. I raise my hat to them.
- short/long unpredictable speed in C# because of JIT compilation and garbage collector.
Portability:
- C# will work on whatever processor and it will hopefully use the "best" instructions
- C++ application will work or won't work it depends on compiler
- C# will work on all windows, maybe even Linux (Mono)
Garbage collector:
- there are some implementations/solutions/models for C++
- in C# you just don't care about memory
End of Comparison
I can say one thing each programming language has it's advantages and disadvantages and most important purpose/range of applicability.
e.g. most FEA software uses Fortran for solver and whatever language for interface.
most BIM (autodesk, tekla, advance) software uses C++ and a huge crew of programmers, debuggers, architects, designers and whatever other IT specialists.
I can say that behind a commercial software there's an army of lawyers, marketing staff, testers, economists, public relations, and few programmers.
I can say that a commercial application requires licensing system, piracy protection, selling system, subscription system, patents and copyrights protection, financing.
I find it almost impossible for a single person to create and "publicly" sell a "general" commercial application.
Now for few customers all above are not required especially for a dedicated application. Instead programming speed and portability are required which can be easily achieved with C# or VB.NET or VB 6.0 or Python or Java or.... whatever language fits the job.
My C# dream is in standby since 3 years ago. All I've learned has been used in small applications that are finished and even work as expected in XP, Vista, 7, x86 and x64.
The feeling when a piece of your own code works it's fantastic but so is the outside world, outside of a thought, a computer screen, a programming language. And a dream doesn't feed the stomach.
I would prefer a C# Parallel.For instead of ..... in c++. Also I would prefer to wait 1 min. out of 10 instead of still writing that C++ app. And I would prefer a stupid friendly language instead of a smart unfriendly language. As being said there's a lot to discover around instead of how pointers actually work
.
.Net vs C++ or C#+OpenGL wrappers vs C++ comparison can be found on so many forums to mention.
It must be said that software speed depends on compiler but most important on algorithm. Stupid algorithm will run slow no matter what language you use.
At the end please take all this as an advice from an engineer with programming skills who once dreamed he is a programmer with engineering knowledge.
Good luck in learning C++. In my opinion C++ vs .Net is like Ansys vs SAP2000.