Exetools  

Go Back   Exetools > General > General Discussion

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 01-06-2006, 00:58
dedificator dedificator is offline
Friend
 
Join Date: Oct 2002
Posts: 89
Rept. Given: 4
Rept. Rcvd 16 Times in 6 Posts
Thanks Given: 0
Thanks Rcvd at 4 Times in 4 Posts
dedificator Reputation: 17
But basically .NET is intended for user level application programming, therefore it hasn't integrated all WIN32 API access, only via P-invoke.
At last, there are very rare situations, when data processing or something like application needs to directly address OS low-level functions.
If one is coding not only for fun, but for money also, .NET with it's VS2005
greately reduces developing/debugging and projecting time, especially buiding user interface and database design (and as we know, time is money .......).

BTW, i'm mainly building data acquisition and remote/telemetry systems and even then i don't need in low-level resources access, excluding mobile devices itself, of course.
Factically, even system service, written on .NET, works with the same results and efficiency, that oldest one, based on MFC (W2003 server, some sort of gateway/proxy).

About efficiency - after switching to .NET we were increased minimum hardware requirements for database client workstations to Pentium 2, however even P166 with 64M works well. From user's point of view, installation and maintanence are much more easy, than MFC or VB runtime dll support. User intarface, built using .NET is much faster, than this same on Java base.

Self-contained executable is good thing, but in case, for example Delfi, this comes at some cost - dlls are linked into executable, greatly increasing it's size. And .NET runtime must be installed on computer only once. All other executables after that becomes like self contained.

So, i personally have nothing bad to say in VS2005/.NET address, if target system has enough CPU and RAM resources. But these are now not expensive parts. If i need to access some sort of unmanaged resources (for example LPT, USB ...), i'm using C++.
Reply With Quote
  #2  
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
  #3  
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
  #4  
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 23:24.


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