Why is .NET so popular? (Serious Question)
-
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?
As an owner of a business application software shop who switched our commercial apps from native to managed many years ago I can tell you exactly what you're not seeing: Vastly reduced time to market, vastly reduced support footprint, vastly reduced distribution file size, vastly reduced overall tech support commitment and it's far safer to make changes to the code without fear of everything blowing up horribly so we're more apt to make changes and improvements and implement new suggestions` to already proven and released code bases. That's why we use it and for no other reason. Now if you're a hobbyist or a huge shop, say in a private company making in house software with an unlimited budget and manpower by all means choose to do native development but doing new business and general app development in a non managed environment is just plain archaic in this day and age.
“If you want to build a ship, don't drum up people together to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea” - Antoine de Saint-Exupery
-
Pete O'Hanlon wrote:
A cogent, lucid and superlative argument delivered, as usual, with aplomb. I couldn't have put it better myself.
Just trying to increase the wisdom units! Marc
Ah. I tried the wisdom thing a while back. It didn't work for me. Now, I just go for the sneering, superior attitude.
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
-
b_dunphy wrote:
What am I not seeing here?
You are not seeing that a popularity of a technology has little to do with its technical qualities. Why is PHP popular? Why is C popular? Why is Java popular? Why is Scheme not popular? Why is Haskell not popular?
Nemanja Trifunovic wrote:
Why is Scheme not popular?
Because of Leppie? :rolleyes:
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] -
Ah. I tried the wisdom thing a while back. It didn't work for me. Now, I just go for the sneering, superior attitude.
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:
I tried the wisdom thing a while back. It didn't work for me. Now, I just go for the sneering, superior attitude.
LOL. I tried the sneering superior attitude for years, then wised up. :) Marc
-
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:
and the non-Windows implementations do not have all of the capabilities of the Windows version so it's not truly cross platform
There's first a distinction between web-applications that run on a server and desktop applications. Whatever language you choose, there will hardly be any language providing a seamless move between those two architectures. You can host a web-server, or run desktop-applications on different platforms if you'd like. Or console-applications. Or services :) I'm running Suse Linux, using MonoDevelop (.NET 4 by now). Not for web-applications, but for desktop-applications. No, not using the GTK# binding, but using WinForms. Why? Well, it's supported under Mono, and Linux hardly requires any resources.
I are Troll :suss:
-
b_dunphy wrote:
What I am is self taught so my grasp of programming theory is iffy at best and I know it, that is why I asked.
Well, it really doesn't have much to do with programming theory. Microsoft wanted a language that would appeal to the Java developers, so put together something that had garbage collection so the programmer didn't have to think about it (usually), a better implementation of reflection, and was ultimately extensible into language features like lambda expressions (and LINQ), which was a nod at the functional programmers and then of course turned into a full fledged bridging functional language, F#. But also, behind the scenes, is a very useful concept, that of compiling to intermediate language (IL), also known 50 years ago as p-code (show me one thing Microsoft has actually invented that is original) that allows a pretty seemless integration of different .NET languages (VB, F#, IronPython, C#, etc), and, at runtime, can then actually emit assembly code that is tuned to the processor and system on which it's running (which can cause no end of trouble when working with Oracle's data provider.) But they also ended up with a language they truly owned (please, let's not delude ourselves that C# is anything other than what Microsoft wants it to be) which gives them tremendous long term leverage in a variety of markets. You can now write C# code instead of PL/SQL in SQL Server, if you look at the metadata that DevExpress's XtraReports generates, it's actually C# code, and so forth. The .NET framework is very flexible, even for its drawbacks (which I don't encounter too often), and provides a real solid foundation on which to build even higher level frameworks, which unfortunately Microsoft is mired in at the moment (WCF, WPF, multitasking, etc) without what I think is a comprehensive, in depth understanding of the problem domain. But that's me. :) And management falls into the trap that .NET is a better environment because, since it does memory management, programmers will make less bugs, since C# is like Java they don't have to do a lot of "retooling of their resources" (as in, spend money training people with new skills), and since .NET supports VB, they hire programmers on the cheap here and in India, and worse, they can even do some of the programming themselves. The road to hell is paved with good intentions. In Microsoft's case, they pave the road to hell. But actually, C#, F#, and .NET are really cool. I d
Yes, thank you. I was thinking about half of this but didn't know how to phrase it. What I was thinking was .Net looked like a souped-up VM with a really extensive bundled framework yet some people attack Java because of its VM and praise .Net which is really just Microsoft's answer to the same problem. I was unaware IL was compiled to ML before execution. I had heard "JIT compiler" before but the compiler part didn't quite click. The reason I was asking is I find myself in need of a program that can run on Win and OS X and share data files between them (my comp is a boot camped 2007 iMac running OS X 10.6 and Vista HP) and was trying to decide whether to use C# or C++ for the Win version. Mac is Obj-C cause XCode is free and came on the OS DVD. I got VS 2008 Standard on the discounted "fire sale" pricing just before 2010's release after originally trying to code the app in REALBasic and spending more of my time working around their bugs and semi-implemented features (for example the Speech command works in Mac and Win but not Linux; REALSQLDatabase has bugs in the OS X implementation but the same code works correctly in Win and Linux.)
-
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
Pete O'Hanlon wrote:
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 meant Microsoft could have just as easily provided all of it as native code, as could anyone else in theory. Why do people tolerate a VM rather than just demanding Microsoft provide it as native code? It is just for the Garbage Collection or what?
-
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.”
Agh! Reality! My Archnemesis![^]
| FoldWithUs! | sighist | WhoIncludes - Analyzing C++ include file hierarchy -
Hardware Binary Editor :thumbsup: (aka toggle switches)
Steve _________________ I C(++) therefore I am
BTDTGTTS! On an Elliott 903...
-
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?
The question is wrong. It should be "Why is the old stuff so unpopular". If you have ever hunted down memory bugs in C++ or done COM+ or uh(!) oh(!) try to do useful things with hosted IEControls....or the ATL/MFC mess ......shudddering when I think back.... Try parse a XML document in native code (what ever level of "native" you mean with that) In .Net you code a lot faster. => Mo Money, Bro !!!
-
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?
- There is lots of resources available on the net. 2) Windows is the most popular OS. .NET hooks in perfectly with Windows. 3) Its well structured and has a great IDE. 4) Its easy to use. 5) Syntax wise it supports 80% of the languages out there, making it even easier to use. 6) It gives the user a choise of language and you pay only one price. 7) Its free, ;-)... the express version that is. 8) Its cutting edge. 9) Its Microsoft, ;P 10) Can go on for the whole day!
"Program testing can be used to show the presence of bugs, but never to show their absence." << please vote!! >>
-
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?
.net = productivity. Productivity = results. Period. For hundreds of millions of Windows machines, vb.net and c# are simply more productive than anything else so far. Script kiddies and native code usually means there are no deadlines and someone else is paying the bills. .net puts a roof over your head and food on the table. Seriously.
Dwayne J. Baldwin
-
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.)
To be precise: Let them solder together a little 8 bit machine first and then program it with the dip switches or hex keyboard. After that they know enough to try out a fancy compiler.
A while ago he asked me what he should have printed on my business cards. I said 'Wizard'. I read books which nobody else understand. Then I do something which nobody understands. After that the computer does something which nobody understands. When asked, I say things about the results which nobody understand. But everybody expects miracles from me on a regular basis. Looks to me like the classical definition of a wizard.
-
Don't have to look for them. I know exactly where they are. They are in the storage box along with my 5.25inch disks, the DOS 6.22 and MASM 4.?? installation disks. Trouble is I don't remember where the box is. :laugh:
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.”
-
I still have mine in a spare bedroom closet :thumbsup:
Steve _________________ I C(++) therefore I am
I ditched mine when I moved to a different appartment and found the rubberbands I had used to hold them programs together had either disintegrated or somehow molded right into the top and bottom cards, making them problematic to handle by the punch card reader. Also one of the rubber bands chose to disintegrate right when I picked up a program, and I didn't feel like sortig the jumbled heap of punch cards into their correct order again. Oh well, off they went to the bin...
-
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?
-
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?
-
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?
I too come from a back-ground that started out with machine code, assembler, C, etc. i.e. I'm an old git. Efficient code was the over-whelming goal, providing it worked. The emphasis has changed dramatically. Today, memory and disk space are both dirt cheap, cpu's are much quicker. The goal has changed to production - kinda like "never mind the quality, feel the width". There's also an obsession that code is "readable". I once worked with a brilliant guy who would remove all/any comments he found in code files because he felt anyone worth their salt should be able to figure what was going on from looking at the code. Generally speaking we had to have a fairly good understanding about what's going on under the hood. That's no longer the case. It's now more a matter of knowing which pieces to plug together. .Net is good example of this. The tools it provides and amount of work and effort it does for developers is astonishing compared to programming with C on a PDP-11. The cost is bloated exe's. Rather like the results of cobol compilers. No one cares about efficient code, or how things work; it's all just get it out there.
-
Because ASP.NET is so much better than any alternative. Due to having .NET developers and the mistaken belief that .NET is good for anything, it gets used for everything. For internal one off tools, .NET can be very useful, though I have enough experience with C++ and MFC that that usefulness is marginal (and I have a few tools which I was able to write much faster in C++; I know because to entertain myself, I wrote them in both.) Almost all my production code that ships to customers is in C++. It comes down to experience. I'm continually surprised at the number of veteran developers who really don't know the Windows API all that well. I've also run across too many developers who aren't very good programmers and jump to any new technology claiming it's better in an attempt, I believe, to mask their overall incompetence. With .NET, for example, the could give a good presentation and sound like they knew what they were talking about, but actually wrote worse C# code than C++ mostly because they got so damn lazy.
Because ASP.NET is so much better than any alternative. That kind of ignores 80% of .NET functionality. I believe the alternatives to .NET require a higher degree of capability. Witness the support of C++ by people here. (Yes, C++ can be used in .NET too, but I think they are referring to the non-net version.) Also witness the huge problems C++ has with memory leaks.
-
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?