Exetools  

Go Back   Exetools > General > General Discussion

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 01-06-2006, 22:28
ssb ssb is offline
Friend
 
Join Date: Jul 2004
Location: Europe
Posts: 16
Rept. Given: 0
Rept. Rcvd 0 Times in 0 Posts
Thanks Given: 0
Thanks Rcvd at 0 Times in 0 Posts
ssb Reputation: 0
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.
Reply With Quote
  #2  
Old 01-07-2006, 04:14
theCaller theCaller is offline
Friend
 
Join Date: Feb 2002
Posts: 53
Rept. Given: 3
Rept. Rcvd 1 Time in 1 Post
Thanks Given: 0
Thanks Rcvd at 1 Time in 1 Post
theCaller Reputation: 1
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
Reply With Quote
  #3  
Old 02-04-2006, 04:12
ravendug
 
Posts: n/a
Quote:
Originally Posted by ssb
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.
Personally I don't see the advantage you thought you would gain by going to the trouble of porting your existing code. Of course the .NET equivalents would be unlikely to match the same performance you had before.

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.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



All times are GMT +8. The time now is 16:54.


Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX, chessgod101
( Since 1998 )