Why is .NET so popular? (Serious Question)
-
Assembly! Assembly? You youngsters today are spoiled. Machine Code is the way to go. :-D
Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.”
You looking for your punch card collection, Henry?
I wasn't, now I am, then I won't be anymore.
-
I have some limited experience with C# and VS 2008 and I don't understand why the .Net framework is so popular. It is a meta environment running on top of the operating system just like Java and the non-Windows implementations do not have all of the capabilities of the Windows version so it's not truly cross platform. I don't see why -- other than Microsoft's semi-forcing the issue -- someone would choose to use this. Shouldn't Win32/64 code run just as well, if not better, since there is no runtime between the code and the system? I can't help thinking of Java or even UCSD P-System Pascal when I look at this. I realize .Net has a large amount of built-in functionality but the same thing could be implemented in native code as well. What am I not seeing here?
b_dunphy wrote:
What am I not seeing here?
Commercials. You answer it yourself when you say:
b_dunphy wrote:
I realize .Net has a large amount of built-in functionality but the same thing could be implemented in native code as well
Yes you can create these items in your own framework, but the key things are that somebody else has already done this for you and this cuts things out of the development that you don't have to do for yourself. Couple this with the fact that you get the benefit of thousands of others testing the framework for you, then this serves to inspire a lot of confidence in the corporate suits. I used to write applications in Informix 4GL, and I could crank out database applications very, very quickly. Then I moved over to C and my productivity dropped. Moving on to C++ and Windows improved my productivity marginally, but not by a great deal - fortunately I was writing applications that required raw speed over cut development times. Compare that with the VB types who could crank out database applications for companies in a fraction of the time. With the move to the .NET framework, MS has provided a framework that provides the speed of development of the VB types with a much fuller featured framework. Now, others have mentioned ASP.NET which is a much more credible alternative to Java web applications, but nobody has mentioned WPF and Silverlight. WPF makes DirectX developed interfaces easy to develop; letting you go well beyond the standard look and feel of Windows applications - effectively commercial applications can be limited only by the creativity of your designer. With Silverlight applications, we have a credible alternative to Flash applications and this has opened up a new way of developing applications; potentially targeting other platforms.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
-
Of course it does. Bytecode and IL are basically equivalent concepts, and both get compiled just-in-time to whatever the CPU needs to execute them, i.e. native code. Unless you are using an interpreter on purpose. :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
b_dunphy wrote:
why the .Net framework is so popular.
Depends on whom you ask? How many*desktop* applications which you use on a day to day basis are written in .NET? Let' see:- 1. Internet Browsers - Chrome, IE, FF, Opera -> None of them are in .NET 2. Microsoft Office - Not .NET (though some add-ons can be .NET) 3. Windows Live Messenger, Yahoo messenger, Google Talk etc - Not .NET 4. Notepad, Paint, Calculator - Not .NET 5. Visual Studio - Mainly .NET 6. SQL Server - Not.NET but portions of Management studio/BI Studio are .NET 7. Task Manager - Not .NET I am just talking about Windows here. Mac and Linux users may survive even without knowing about .NET. The place where .NET is popular is in Websites developed for IIS (lot of intranet sites). ASP.NET is almost the de-facto choice. Now again, IIS is a very small percent of total websites out there. The only other place where .NET is popular is enterprise applications or custom developed enterprise apps.
Rama Krishna Vavilala wrote:
Depends on whom you ask
Indeed. Let's see: 1. My editor: C# 2. My IDE: C# 3. My system tools: C# 4. My cross-compilers: C# 5. My simulators: C# 6. My image processing: C# + native C 7. My automation stuff: C# 8. My chess utilities: C# 9. My model railroad: C (on Mac), to be ported to C# 10. My web site: PHP (unfortunately) 11. My embedded stuff: C I'll use a native DLL when it is the right choice that fits the requirements, however I can't remember when I last did a native EXE. :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
I love writing assembly, just can't find an excuse too. I really do believe assembly should be learned by all CS students very early on. It sheds a whole lot of light on what's really going on with the computer and makes you very jaded about claims of new technology (since you know that it's all just assembly in the end.)
Joe Woodbury wrote:
I really do believe assembly should be learned by all CS students very early on
Hear hear. I did 68000 assembly at Uni, and loved it. I still have a real fondness for it.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
-
you really think .NET is good for web??? do you mean the c# language or the .NET runtime? if you mean c# then sure it's a nice language and works well for many tasks including web if you mean, however, .NET is good for web then i would respectfully say you are talking from the wrong end of your body ... .NET is the antithesis of what the web is about and consequently sucks at it ... the web is not the desktop and should not be treated as such ... just because someone can write a desktop app does not mean they can write a web app ... completely different problem domain with different rules and constraints that need to be understood properly to write a good web app (website / service / etc) would you think it a great idea to use say php to write desktop apps? that a good javascript programmer would necessarily be a good c++ programmer for desktop environments? no the inverse is true as well /end_rant
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
l a u r e n wrote:
you really think .NET is good for web??? do you mean the c# language or the .NET runtime?
if we're going to be pedantic, then i mean .Net + C# + ASP.Net + IIS + every other thing that's required to accomplish what everyone means when they say something like "using .Net for web apps".
l a u r e n wrote:
.NET is the antithesis of what the web is about and consequently sucks at it
i encourage you to read what i actually wrote.
l a u r e n wrote:
would you think it a great idea to use say php to write desktop apps?
i have no idea what you're talking about, now.
-
I have some limited experience with C# and VS 2008 and I don't understand why the .Net framework is so popular. It is a meta environment running on top of the operating system just like Java and the non-Windows implementations do not have all of the capabilities of the Windows version so it's not truly cross platform. I don't see why -- other than Microsoft's semi-forcing the issue -- someone would choose to use this. Shouldn't Win32/64 code run just as well, if not better, since there is no runtime between the code and the system? I can't help thinking of Java or even UCSD P-System Pascal when I look at this. I realize .Net has a large amount of built-in functionality but the same thing could be implemented in native code as well. What am I not seeing here?
It's really not popular at all. The latest batch of relaesed wikileaks documents shows that it's a plot by the government to distract everyone while they conduct covert operations all over the world. Nobody is safe. NOBODY! Why did the farmer cross the road?
.45 ACP - because shooting twice is just silly
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001 -
It's really not popular at all. The latest batch of relaesed wikileaks documents shows that it's a plot by the government to distract everyone while they conduct covert operations all over the world. Nobody is safe. NOBODY! Why did the farmer cross the road?
.45 ACP - because shooting twice is just silly
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001John Simmons / outlaw programmer wrote:
Why did the farmer cross the road?
To get a better vantage point to line up the sites on the chicken.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
-
John Simmons / outlaw programmer wrote:
Why did the farmer cross the road?
To get a better vantage point to line up the sites on the chicken.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
Pete O'Hanlon wrote:
To get a better vantage point to line up the sites on the chicken.
You are not allowed to misspell the weapons parts when John is around!
There is only one Ashley Judd and Salma Hayek is her prophet! Advertise here – minimum three posts per day are guaranteed.
-
I have some limited experience with C# and VS 2008 and I don't understand why the .Net framework is so popular. It is a meta environment running on top of the operating system just like Java and the non-Windows implementations do not have all of the capabilities of the Windows version so it's not truly cross platform. I don't see why -- other than Microsoft's semi-forcing the issue -- someone would choose to use this. Shouldn't Win32/64 code run just as well, if not better, since there is no runtime between the code and the system? I can't help thinking of Java or even UCSD P-System Pascal when I look at this. I realize .Net has a large amount of built-in functionality but the same thing could be implemented in native code as well. What am I not seeing here?
On comparison, native memory management requires care, and MFC is a pain. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
It's really not popular at all. The latest batch of relaesed wikileaks documents shows that it's a plot by the government to distract everyone while they conduct covert operations all over the world. Nobody is safe. NOBODY! Why did the farmer cross the road?
.45 ACP - because shooting twice is just silly
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001He wants to discover why the hell the chicken did. :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.
-
It's really not popular at all. The latest batch of relaesed wikileaks documents shows that it's a plot by the government to distract everyone while they conduct covert operations all over the world. Nobody is safe. NOBODY! Why did the farmer cross the road?
.45 ACP - because shooting twice is just silly
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001John Simmons / outlaw programmer wrote:
Why did the farmer cross the road?
To milk the bull with bear hands and earn a man points.
There is only one Ashley Judd and Salma Hayek is her prophet! Advertise here – minimum three posts per day are guaranteed.
-
Pete O'Hanlon wrote:
To get a better vantage point to line up the sites on the chicken.
You are not allowed to misspell the weapons parts when John is around!
There is only one Ashley Judd and Salma Hayek is her prophet! Advertise here – minimum three posts per day are guaranteed.
He's American. Spelling is an optional extra.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
-
You looking for your punch card collection, Henry?
I wasn't, now I am, then I won't be anymore.
I remembered implementing mouse in DOS environment in Assembly language using interrupt signal and all but that was a fun project during college graduation. Cannot do it to earn my bread and butter ;P
Zen and the art of software maintenance : rm -rf * Math is like love : a simple idea but it can get complicated.
-
That's not really a helpful response. It is valid to ask "at what level of abstraction should I be working?" The answer to this question is not, as many people seem to assume, that we ought to work at the highest level of abstraction possible. Abstraction is not necessarily an absolute good. At the lowest level of abstraction, we have machine language (NOT assembly language, as anyone who's ever hand-assembled code can tell you), followed by assembly language, and then by languages like C and Pascal, and then by newfangled technologies like .NET and Java, and finally by "code free" quasi-development technologies. As one moves among these levels of abstraction, there are tradeoffs. Moving up in abstraction reduces the speed of the object application and (more subtly, but importantly) the speed of the development tools. It also reduces the depth with which the developer can claim to understand his or her code; again, this is a subtle and oft-overlooked drawback to abstraction, but it's real. At each level, the returns to greater abstraction diminish. Assembly is much easier than machine language, which doesn't correspond to even the most basic human expectations of what a "language" should be. C is significantly easier than assembly, although the difference is less dramatic. C++ and C# offer benefits compared to C, but, again, these are not as dramatic as the previous steps up the abstraction ladder. I would submit that C#, Java, etc. may reside at a level of abstraction that is too high for many projects. Garbage collection is, for me, an example of why this is so. Look at what good C++ programmers do with automatic smart pointer variables, and then ask yourself whether an non-deterministic, out-of-thread system is really necessary to reclaim heap objects. Such "magic" definitely abstracts away some troublesome details... but are we sure (given the neat alternatives) that this is a good thing...? I can imagine plausible arguments both ways. Finally, let me assure you that for someone with a good basic understanding of digital computers, working with assembly language is easy. Personally, I do not find it to be any harder than much of the .NET work I do. Sure, assembly requires me to know about things like how numbers are represented, how looping and decision structures are implemented, etc., but it will also never present me with one of those head-scratching, out-of-the-blue errors that make it so difficult to work with high-level frameworks, e.g. "Failed set trust point in ssl context" or "P
_beauw_ wrote:
it will also never present me with one of those head-scratching, out-of-the-blue errors that make it so difficult to work with high-level frameworks
The language and the framework are two different things. And you can use external code with assembly as well. Heck, you can make use of .Net DLL's using assembly. In which case you'd get that same "Failed set trust point in ssl context" error. The language itself is not really too much of an abstraction, but the amount it helps productivity is huge.
-
you really think .NET is good for web??? do you mean the c# language or the .NET runtime? if you mean c# then sure it's a nice language and works well for many tasks including web if you mean, however, .NET is good for web then i would respectfully say you are talking from the wrong end of your body ... .NET is the antithesis of what the web is about and consequently sucks at it ... the web is not the desktop and should not be treated as such ... just because someone can write a desktop app does not mean they can write a web app ... completely different problem domain with different rules and constraints that need to be understood properly to write a good web app (website / service / etc) would you think it a great idea to use say php to write desktop apps? that a good javascript programmer would necessarily be a good c++ programmer for desktop environments? no the inverse is true as well /end_rant
"mostly watching the human race is like watching dogs watch tv ... they see the pictures move but the meaning escapes them"
l a u r e n wrote:
would you think it a great idea to use say php to write desktop apps?
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
-
That's not really a helpful response. It is valid to ask "at what level of abstraction should I be working?" The answer to this question is not, as many people seem to assume, that we ought to work at the highest level of abstraction possible. Abstraction is not necessarily an absolute good. At the lowest level of abstraction, we have machine language (NOT assembly language, as anyone who's ever hand-assembled code can tell you), followed by assembly language, and then by languages like C and Pascal, and then by newfangled technologies like .NET and Java, and finally by "code free" quasi-development technologies. As one moves among these levels of abstraction, there are tradeoffs. Moving up in abstraction reduces the speed of the object application and (more subtly, but importantly) the speed of the development tools. It also reduces the depth with which the developer can claim to understand his or her code; again, this is a subtle and oft-overlooked drawback to abstraction, but it's real. At each level, the returns to greater abstraction diminish. Assembly is much easier than machine language, which doesn't correspond to even the most basic human expectations of what a "language" should be. C is significantly easier than assembly, although the difference is less dramatic. C++ and C# offer benefits compared to C, but, again, these are not as dramatic as the previous steps up the abstraction ladder. I would submit that C#, Java, etc. may reside at a level of abstraction that is too high for many projects. Garbage collection is, for me, an example of why this is so. Look at what good C++ programmers do with automatic smart pointer variables, and then ask yourself whether an non-deterministic, out-of-thread system is really necessary to reclaim heap objects. Such "magic" definitely abstracts away some troublesome details... but are we sure (given the neat alternatives) that this is a good thing...? I can imagine plausible arguments both ways. Finally, let me assure you that for someone with a good basic understanding of digital computers, working with assembly language is easy. Personally, I do not find it to be any harder than much of the .NET work I do. Sure, assembly requires me to know about things like how numbers are represented, how looping and decision structures are implemented, etc., but it will also never present me with one of those head-scratching, out-of-the-blue errors that make it so difficult to work with high-level frameworks, e.g. "Failed set trust point in ssl context" or "P
Well, I provoked him, that's all, I did not hint about which is better/worse. His question was what he was not seeing. If he draws parallels between C++ and assembly he might end up thinking about productivity versus low level power. Ok, now about memory management, one thing managed environments do is shuffle memory around when needed. So it's not just garbage collection, it's also "defragmenting" the memory. There can also be advantages in freeing up memory when absolutely needed/when there is CPU available. This way you can allocate a lot of memory when it is needed, and the garbage collector will worry about releasing it when the time is right. So in practice it's pretty hard to beat .NET's memory management in just about all business applications that don't have real time requirements. Agreed about the error messages, but those are more framework library related than related to C#.
Wout
-
You looking for your punch card collection, Henry?
I wasn't, now I am, then I won't be anymore.
I still have mine in a spare bedroom closet :thumbsup:
Steve _________________ I C(++) therefore I am
-
I have some limited experience with C# and VS 2008 and I don't understand why the .Net framework is so popular. It is a meta environment running on top of the operating system just like Java and the non-Windows implementations do not have all of the capabilities of the Windows version so it's not truly cross platform. I don't see why -- other than Microsoft's semi-forcing the issue -- someone would choose to use this. Shouldn't Win32/64 code run just as well, if not better, since there is no runtime between the code and the system? I can't help thinking of Java or even UCSD P-System Pascal when I look at this. I realize .Net has a large amount of built-in functionality but the same thing could be implemented in native code as well. What am I not seeing here?
b_dunphy wrote:
What am I not seeing here?
You must be new to programming, which is good, since I don't have to therefore manage the arduous task of deleting all the wrong pointers you've learned from other people. Something to reflect on. ;) Marc
modified on Wednesday, December 1, 2010 4:18 PM
-
I have some limited experience with C# and VS 2008 and I don't understand why the .Net framework is so popular. It is a meta environment running on top of the operating system just like Java and the non-Windows implementations do not have all of the capabilities of the Windows version so it's not truly cross platform. I don't see why -- other than Microsoft's semi-forcing the issue -- someone would choose to use this. Shouldn't Win32/64 code run just as well, if not better, since there is no runtime between the code and the system? I can't help thinking of Java or even UCSD P-System Pascal when I look at this. I realize .Net has a large amount of built-in functionality but the same thing could be implemented in native code as well. What am I not seeing here?
b_dunphy wrote:
. I don't see why -- other than Microsoft's semi-forcing the issue
Mainly that I think, and like you say, it can all be done in native code too! I'm not a particular fan of .NET either. If .NET was not effectively a VM then it wouldn't be as bad.
See if you can crack this: fb29a481781fe9b3fb8de57cda45fbef
The unofficial awesome history of Code Project's Bob! "People demand freedom of speech to make up for the freedom of thought which they avoid."