Why .NET?
-
norm.net wrote:
Wow! There goes your pay cheque
For mission critical I would never considder windows, would you? Nunc est bibendum
-
It's a tool, not a religion. Use the tool you feel appropriate for the job, but know how to use all the tools in your toolchest. Marc Pensieve Functional Entanglement vs. Code Entanglement Static Classes Make For Rigid Architectures
Exactly what I think. ;) ___________________________________ Tozzi is right: Gaia is getting rid of us. My Blog [ITA]
-
fat_boy wrote:
.Net is good for web based swervices. PERIOD. Just like J2EE. Client side it has no benefit over C++ and one draw back. It is damn slow.
I think you're a little wrong. .NET is good for many other things, anyway it's not that slow, IMHO.
fat_boy wrote:
BTW, C++ for drivers is a bad idea. It can be done, but there are so maany pitfalls that C is the officially suppported language.
Never developed a driver... so I take your statement as correct. :)
fat_boy wrote:
What embedded devices support .Net?
No one, I think. In fact the device I'm working on supports only C/C++ and Assembler (Atmel Diopsis 740, ARM RISC processor + DSP). I use .NET only to "simulate" the IO ports on the PC: on the PC the Input will be a Wave file and the Output a MP3 file, but on the device the Input is an array of bytes from 2 ADC and the Output is a stream of bytes (containing mp3 frames) sent to the USB port output buffer. ___________________________________ Tozzi is right: Gaia is getting rid of us. My Blog [ITA]
Dario Solera wrote:
I think you're a little wrong. .NET is good for many other things, anyway it's not that slow, IMHO
They probably have improved, added support for things like DBs etc, so I conceede there could be some benefit over MFC. I am generalising. Regarding Embedded, I was wondering if you were running NT or XP embedded on a device. Nunc est bibendum
-
fat_boy wrote:
Client side it has no benefit over C++ and one draw back. It is damn slow.
You really need to look into declarative programming. C# is a perfect language for that. The .NET class libraries for XML handling, Databinding, ADO.NET are also far superior to anything in the MFC/C++/WTL world. I've written a lot of desktop business apps that use C#. And I'm far more productive with it, than I ever was in MFC. Michael CP Blog [^] Development Blog [^]
-
Simon Hofverberg wrote:
and to be honest I must admit that I really prefer non-VM code.
but why do you prefer it? Michael CP Blog [^] Development Blog [^]
Michael P Butler wrote:
but why do you prefer it?
I guess the short answer is flexibility and control. Sure: for ultimate flexibility and control you should always use assembler :-D There's always a trade-off between flexibility + control on the one hand and ease-of-use on the other hand. But come to think of it, what I don't like about .NET (and Java) is not that it's a VM (after all, the Win32 API is kind-of a VM too, it's only the kernel that isn't). What I don't like is the garbage collection. It's the flexibility and control of pointers that make me reluctant to use .NET. /Simon This is not a signature.
-
OK, I suppose improovements have been made over MFC support for those, but it is still alot slower than native code. And a lot bigger too. Nunc est bibendum
fat_boy wrote:
but it is still alot slower than native code.
I notice a small speed decrease, but non of my users have.
fat_boy wrote:
And a lot bigger too.
Once the framework is installed, the actual .EXE and dll's are a lot smaller. Michael CP Blog [^] Development Blog [^]
-
I posted this in the General discussion forum, but it didn't quite stir up the flame war I expected. After seeing Vista and .NET and Microsoft's Response to Vista and .NET I figured this is the place to go. So ... I use MFC (though I don't particularly like it) and VC++ 6.0 (which I like very very much). I've spent a lot of time trying to figure out why Microsoft (and a whole lot of people affiliated or not affiliated with them) think that everyone should switch from native Win32 C++ development to .NET Framework-based development ... and I just can't figure out why. Things I know: Yes - the .NET framework has a load of nifty classes that I would have access to. Yes - it's quite possible to write native code mixed with .NET code in various ways. Yes - .NET code is/will be portable to other platforms. Yes - I understand fully that .NET is the way to go for a large range of applications (if I hear "web" or "business" bells start ringing). Things I don't know: But - why must Microsoft push it as the future for ALL applications? But - why should everyone be writing VM (Virtual Machine) code? It's quite possible to write a very good framework (platform independent even) that doesn't use a VM. Why doesn't Microsoft do that? And: And - I'm aware of the benefits of VMs. It's just that I'm also aware of the benefits of non-VM code - and to be honest I must admit that I really prefer non-VM code. /Simon This is not a signature.
Reasons to use .NET
- Increased security (both in applications having less chance to cause havoc, and malicous users having less chance of effecting buffer overflow attacks) since it's built into the framework
- reduced bugs and increased reliability through a managed environment
- higher productivity through a better architected language, better tools (reflection allows better intellisense, debugging etc), and a single Base Class Library for all languages
- Inter-language operabililty and a common programming model
- A wicked-cool component model
- No more DLL hell
- XCopy deployment (sometimes)
- The inevitable march towards XAML and the convergence of Web and desktop development
That's off the top of my head. I'm sure I've missed a couple. However, there's no valid argument (yet) to say everyone should move from Win32 to .NET. .NET simply isn't suitable for all tasks (OS development, drivers, high-perf applications). As always, choose the right tool for the job. cheers, Chris Maunder
CodeProject.com : C++ MVP
-
It's a tool, not a religion. Use the tool you feel appropriate for the job, but know how to use all the tools in your toolchest. Marc Pensieve Functional Entanglement vs. Code Entanglement Static Classes Make For Rigid Architectures
Marc Clifton wrote:
It's a tool, not a religion.
Couldn't agree more.
Marc Clifton wrote:
Use the tool you feel appropriate for the job, but know how to use all the tools in your toolchest.
I completely agree on that one as well. But ... why can't I have the cake and eat it too? Why can't MS continue to improve their native tools as well? It sure isn't for lack of resources - indeed it would cost them very little to get something like the .NET framework (the classes of it) running in native C++. /Simon This is not a signature.
-
Michael P Butler wrote:
but why do you prefer it?
I guess the short answer is flexibility and control. Sure: for ultimate flexibility and control you should always use assembler :-D There's always a trade-off between flexibility + control on the one hand and ease-of-use on the other hand. But come to think of it, what I don't like about .NET (and Java) is not that it's a VM (after all, the Win32 API is kind-of a VM too, it's only the kernel that isn't). What I don't like is the garbage collection. It's the flexibility and control of pointers that make me reluctant to use .NET. /Simon This is not a signature.
Agreed, it does take some getting used too. Have had some nasty problems caused by my ignorance of the GC when I first stare developing in .NET. You can of course use garbage collection in C++ if you wish.. It's not like controlling memory allocation is a big problem in C++ if you use smart pointers and whatnot. Reflection and attributes are a big plus in .NET though, only way to get close to that kind of power in C++ is to use template metaprogramming, which can get pretty damn hairy. Ryan
"Michael Moore and Mel Gibson are the same person, except for a few sit-ups. Moore thought his cheesy political blooper reel was going to tell people how to vote. Mel thought that his little gay SM movie about his imaginary friend was going to help him get to heaven." - Penn Jillette
-
Reasons to use .NET
- Increased security (both in applications having less chance to cause havoc, and malicous users having less chance of effecting buffer overflow attacks) since it's built into the framework
- reduced bugs and increased reliability through a managed environment
- higher productivity through a better architected language, better tools (reflection allows better intellisense, debugging etc), and a single Base Class Library for all languages
- Inter-language operabililty and a common programming model
- A wicked-cool component model
- No more DLL hell
- XCopy deployment (sometimes)
- The inevitable march towards XAML and the convergence of Web and desktop development
That's off the top of my head. I'm sure I've missed a couple. However, there's no valid argument (yet) to say everyone should move from Win32 to .NET. .NET simply isn't suitable for all tasks (OS development, drivers, high-perf applications). As always, choose the right tool for the job. cheers, Chris Maunder
CodeProject.com : C++ MVP
Chris Maunder wrote:
As always, choose the right tool for the job.
Oh yes. ... but ... I just can't see why we aren't allowed to eat the cake and have it too? There aren't any points on your list that couldn't be solved in a top-class native C++ framework. That would give us all those points plus the extra flexibility, control and speed (in some cases) of native code. And it wouldn't take too much MS muscle power to accomplish that. Put twenty guys in a room for a year with all the resources they need and voilĂ . /Simon This is not a signature.
-
I wrote:
Why doesn't Microsoft do that? [Why don't they create a really good framework in native code?]
Ryan Binns wrote:
What language would you do it for? Whichever one they chose, they would have developers in the other languages screaming for blood. The way they have done it, they make the framework available to everyone.
Well:
Ryan Binns wrote:
They know that there are classes of applications that will see no (or little) benefit from moving to a .NET platform.
What languages are those classes of applications written in? My guess is 98% C++ (and 80% of those use MFC). Ergo: the language would be C++. Why not give us something like MFC but 1000% better. I'd say all other languages are much easier to replace with the .NET framework. But being a C++ developer I don't know for sure (oh I'm so humble :rolleyes:). /Simon This is not a signature.
Simon Hofverberg wrote:
What languages are those classes of applications written in? My guess is 98% C++ (and 80% of those use MFC).
VB has the biggest number of developers. C++ is IMO not necessary for typical business apps. Also, the focus of .NET is largely web and web services development, judging by the job ads. C++ is just too complex and unproductive for such scenarios.
Simon Hofverberg wrote:
Why not give us something like MFC but 1000% better.
There's WTL. I've not used it but many at cp think it's a lot better. You can also use things like wxWidgets and Qt. But why do so many C++ developers tend to think that everything should be done in C++? Kevin
-
Simon Hofverberg wrote:
What languages are those classes of applications written in? My guess is 98% C++ (and 80% of those use MFC).
VB has the biggest number of developers. C++ is IMO not necessary for typical business apps. Also, the focus of .NET is largely web and web services development, judging by the job ads. C++ is just too complex and unproductive for such scenarios.
Simon Hofverberg wrote:
Why not give us something like MFC but 1000% better.
There's WTL. I've not used it but many at cp think it's a lot better. You can also use things like wxWidgets and Qt. But why do so many C++ developers tend to think that everything should be done in C++? Kevin
Kevin McFarlane wrote:
But why do so many C++ developers tend to think that everything should be done in C++?
Oh, that's an old one. If you have a hammer, everything looks like a nail. And if you have a hammer that can accomplish anything then you are very tempted to use it at everything, even though there might be better tools for it. /Simon This is not a signature.
-
Agreed, it does take some getting used too. Have had some nasty problems caused by my ignorance of the GC when I first stare developing in .NET. You can of course use garbage collection in C++ if you wish.. It's not like controlling memory allocation is a big problem in C++ if you use smart pointers and whatnot. Reflection and attributes are a big plus in .NET though, only way to get close to that kind of power in C++ is to use template metaprogramming, which can get pretty damn hairy. Ryan
"Michael Moore and Mel Gibson are the same person, except for a few sit-ups. Moore thought his cheesy political blooper reel was going to tell people how to vote. Mel thought that his little gay SM movie about his imaginary friend was going to help him get to heaven." - Penn Jillette
Ryan Roberts wrote:
Reflection and attributes are a big plus in .NET though, only way to get close to that kind of power in C++ is to use template metaprogramming, which can get pretty damn hairy.
Template metaprogramming is a pain in the ass. :mad: This reflection thing sounds really, really nice. That's the first thing I've heard about .NET that've really made me want to start using it. But still - why not get that into C++? That would be really cool. /Simon This is not a signature.
-
Marc Clifton wrote:
It's a tool, not a religion.
Couldn't agree more.
Marc Clifton wrote:
Use the tool you feel appropriate for the job, but know how to use all the tools in your toolchest.
I completely agree on that one as well. But ... why can't I have the cake and eat it too? Why can't MS continue to improve their native tools as well? It sure isn't for lack of resources - indeed it would cost them very little to get something like the .NET framework (the classes of it) running in native C++. /Simon This is not a signature.
Simon Hofverberg wrote:
why can't I have the cake and eat it too?
Ah, well, that involves a complicated discussion of the big picture. The premise is, Windows sells not only because of the Office and server products that it makes, but because of the thousands of ISV's out there. C++ is a language that the average programmer can get into a lot of trouble with. MFC is clunky and buggy. All the cool graphics stuff requires Avalon, and the graphic "language" to share those cool vector graphics with, XAML, uses (not requires, per se, but heavily relies on) reflection. Couple that with ISV's wanting to write more secure software. So, there's several things going on at once: C# makes development easier because it's an easier language that C++. Build in locking, no pointer management, managed arrays, etc. Designers. Look at the designer support in .NET, leveraging the metadata attributes of the language. Not that I love designers, not that I'm enamoured with entangling my code with all the crap needed to support the visual designers, but it is much more flexible than C++/MFC. Metadata, type converters, so on. C# is managed, supposedly making it less vulnerable to those buffer overrun problems plaguing unmanaged code. Bitmapped controls are going to be a thing of the past, even though I personally couldn't care how sexy the button looks. If it works, it works. But alas, a blocky button doesn't sell anymore. Are you going to use C++ and MFC to render those VG controls? Nope. So the third prong in this is the entire UI experience, which, if you want to take advantage of, you'll probably be using C# or VB.NET, rather than C++. It's possible to use C++, but it still doesn't address the "easier to write in" and "managed" advantages of C#. So, that's my 2c on why you can't have your cake and eat it too. To understand the motivation, I think you have to look at many issues at once, and not just from the programmer's perspective. Marc Pensieve Functional Entanglement vs. Code Entanglement Static Classes Make For Rigid Architectures
-
norm.net wrote:
Wow! There goes your pay cheque
For mission critical I would never considder windows, would you? Nunc est bibendum
fat_boy wrote:
For mission critical I would never considder windows, would you?
Yes, I would, and would even use .NET or Java for the job but it depends on what one considers "mission critical". What about the airport crews? They have to know which planes to service, where they are, what service they require, etc. It doesn't seem "mission critical" but what if they get the wrong information and put too little fuel on a plane that's going to do an intercontinental flight? Or even something simpler, like not delivering the right meals and drinks to the right plane? Or providing the correct information in real-time with all the constant and unforseen changes to passengers? Maybe we'd end up with 200 annoyed people instead of 200 dead people when things do go wrong but it's still important, for them at least. Quidquid latine dictum sit, altum viditur.
-
It's a tool, not a religion. Use the tool you feel appropriate for the job, but know how to use all the tools in your toolchest. Marc Pensieve Functional Entanglement vs. Code Entanglement Static Classes Make For Rigid Architectures
Yes. Language wars are good fun but a waste of time really. Kevin
-
I posted this in the General discussion forum, but it didn't quite stir up the flame war I expected. After seeing Vista and .NET and Microsoft's Response to Vista and .NET I figured this is the place to go. So ... I use MFC (though I don't particularly like it) and VC++ 6.0 (which I like very very much). I've spent a lot of time trying to figure out why Microsoft (and a whole lot of people affiliated or not affiliated with them) think that everyone should switch from native Win32 C++ development to .NET Framework-based development ... and I just can't figure out why. Things I know: Yes - the .NET framework has a load of nifty classes that I would have access to. Yes - it's quite possible to write native code mixed with .NET code in various ways. Yes - .NET code is/will be portable to other platforms. Yes - I understand fully that .NET is the way to go for a large range of applications (if I hear "web" or "business" bells start ringing). Things I don't know: But - why must Microsoft push it as the future for ALL applications? But - why should everyone be writing VM (Virtual Machine) code? It's quite possible to write a very good framework (platform independent even) that doesn't use a VM. Why doesn't Microsoft do that? And: And - I'm aware of the benefits of VMs. It's just that I'm also aware of the benefits of non-VM code - and to be honest I must admit that I really prefer non-VM code. /Simon This is not a signature.
Simon Hofverberg wrote:
VC++ 6.0 (which I like very very much).
VC++6 is utter crap. Totally non standards compliant, given the choice, I would never look at it again.
Simon Hofverberg wrote:
think that everyone should switch from native Win32 C++ development to .NET Framework-based development
I don't think this is true. What makes you say it ? I think that MFC sells itself now, and that Microsoft is pushing C# far more than C++ in general. I don't see any push for C++/CLI, or against Win32. The Express edition only supports CLI, but it's *free*, of course it's knobbled. Christian Graus - Microsoft MVP - C++
-
Chris Maunder wrote:
As always, choose the right tool for the job.
Oh yes. ... but ... I just can't see why we aren't allowed to eat the cake and have it too? There aren't any points on your list that couldn't be solved in a top-class native C++ framework. That would give us all those points plus the extra flexibility, control and speed (in some cases) of native code. And it wouldn't take too much MS muscle power to accomplish that. Put twenty guys in a room for a year with all the resources they need and voilĂ . /Simon This is not a signature.
Simon Hofverberg wrote:
There aren't any points on your list that couldn't be solved in a top-class native C++ framework.
And what about people who want to use languages other than C++? Or are you saying they should have done .NET plus implement all of the same stuff in native code just for C++ developers? Incidentally, managed code can have impressive performance in many cases. It's a matter of design. I know a very experienced C++ developer, now writing and selling his own framework in Java, incorporating object persistence and agile development. His framework outperforms and outscales Oracle. However, few developers believe him, so he just sells directly to small companies - though he's started to get interest from more high-tech quarters. Another example: Eiffel is a "managed" environment with .NET-like features but compiles to C. Consequently performance is comparable. And there is at least one case study where an app. was rewritten from C to Eiffel and was 10 times faster as a result. I've had a couple of .NET interviews in which the interviewers had rewritten C++ apps. in C# and got performance increases. Kevin
-
Ryan Roberts wrote:
Reflection and attributes are a big plus in .NET though, only way to get close to that kind of power in C++ is to use template metaprogramming, which can get pretty damn hairy.
Template metaprogramming is a pain in the ass. :mad: This reflection thing sounds really, really nice. That's the first thing I've heard about .NET that've really made me want to start using it. But still - why not get that into C++? That would be really cool. /Simon This is not a signature.
But still - why not get that into C++? That would be really cool. Big runtime overhead at a guess :). RTTI is being left as is (i.e bloody useless) in the proposed next version of C++. Ryan
"Michael Moore and Mel Gibson are the same person, except for a few sit-ups. Moore thought his cheesy political blooper reel was going to tell people how to vote. Mel thought that his little gay SM movie about his imaginary friend was going to help him get to heaven." - Penn Jillette
-- modified at 8:31 Thursday 16th March, 2006