![]() |
|
|
|
#1
|
|||
|
|||
|
I agree that developing using .NET is a much faster and easier task than playing with C++ pointers and manual memory management. But that comes at a cost. I've ported some of my projects from C++ to C#, but I've noticed a huge performance hit, even with Ngen'ed .NET executables.
CLR as a library is a nice OO framework but I hate the VM/JIT idea. Consider how nice would be if CLR was a statically linked lib similar to MFC and C# a true native compiler able to compile and link true Win32/64 PE executables. |
|
#2
|
|||
|
|||
|
Everything comes at a cost.
Native code is faster. That is true indeed. COM was the Microsoft try of introducing the "bridge" between software components through their interfaces. That was done in a binary form. COM componets were compatibles each others for they were binary compatible. COM specification granted that compatibility through strict stack morphology rules. .NET's come to simplify this scenario. contracts between components are now well defined and made thorugh metainfo specification (say a human readable form that is standardized, embedded in each sw component) The .NET runtime grants this infos to be used and applied. So no matter if you're using VB, C++, C# , Logo, COBOL whatever .. as far as contracts between the sw components you deploy are well defined and under standard protocol, sw components will be easily communicating each other: no matter the underlying physical layer, that is abstracted by the runtime. This comes at a cost, right. But it's a good compromise. Native code will not die. It's the core of the system. No one will obscure the tools to make pure native code apps... As far as CPU will not interpret directly bytecode ... ... maybe we will be in charge of changing the way we've always seen the world ... but until then ... Best regards, theCaller |
|
#3
|
|||
|
|||
|
Quote:
Sure there is an argument to be made that under certain limited circumstances a JIT compiler can make more optimized decisions because it makes them based on information during runtime but overall we know it doesn't really compare to unmanged code at the moment. Sure go ahead and start your new projects with it. That may add some gain through increased productivity. Port your old code? I just cant see the advantage to that unless you plan on still supporting the code 8-10 years down the line. Do I personally hate .NET? Hell no. Personally I'm more of a Java/C++ programmer by expertise than a .NET one. However, barring a few niggly bits I don't like about C#, I still tend to prefer it for some jobs. Try program any business application with it. I bet you I could do it to a much shorter time specification with very acceptable performance that still makes the customer pleased at the same time. At the end of the day, the old cliche, 'time is money' still holds and the needs of your customer/user are the most important thing. Most of your users are not going to notice that your ListBox loads 100ms slower than an C++ implementation, they just accept it for what it does. However, they are going to notice it when you deliver it in half the time your competitors promised it. Programming a game or real-time system? Well yes then a different principle applies.... The right tool for the right job is what holds true. As programmer just ensure that your are well versed in a few different languages and continually keep yourself up to date. That is essentially what you are paid for. Anyone can learn 'a language'. Yet not as many of them bother to learn a few more on top of that. Its not that hard since most of the same paradigms tend to cross over several languages. Heck sometimes I find even a little Python amazingly usefull to whip up something really clever in a really short space of time. Essentially what I'm saying from all this is that its a bit of a moot argument....it all depends on what you are trying to achieve.
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|