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?
I believe that Microsoft has actually addressed the productivity issue head on, where Oracle with it's Java platform have not. Since cost of development is currently the foremost concern of management, it makes it almost a no brainer to choose the .Net platform. It's unfortunate that Java has not progressed the same way to provide a head on competition to Microsoft as I believe that would have furthered both platforms. I have extensive experience in both platforms and have to admit that for me, the winner is hands down Microsoft. They did their homework and continually improve the product based on what the customers are seeking. Sounds like a win-win situation to me.
mvarey
-
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?
If this question is truly "serious"...as I do see all the fun responses. Pure and simple...abstraction. Look at the evolution of software languages. We as developers need to continue to work faster, more efficiently and more effectively to implement business solutions with time-to-market in mind. I've view it as an evolution of development...where I don't need to write code to interact with the network stack, input/output of any kind, or other basic operations...since .NET provides this. In addition, there are a multitude of libraries to assist in tasks that could take a long while to implement. Sure, you could argue C++ and libraries...or any other language, such as Java, which was stated...yet...it's about making it easier for developers to build a business-centric solution faster and easier to maintain (hopefully if you designed it well). So, in short...abstraction from the system. As others joked...toggle switches to machine language to binary....to.... .NET. :D
-
Hehe, it depends.. Here is my C++ code for parsing some simple XML with obstacle information for the map:
bool ObstacleXMLLoader::LoadFromFile(std::string file, std::vector &data)
{
this->m_data_out = &data;
m_data_out->clear();struct XmlStateMachineScriptCommand script \[\] = { XML\_NODE("@TOP"), XML\_NODE("@obstacles", XP\_SKIP\_UNKNOWN), // skip the tags like coordinate\_system and bounding\_box XML\_TRAN("@TOP", ELEMENT, "obstacles", "@obstacles"), XML\_TRAN("@obstacles", ELEMENT, "point", "@in\_obstacle", boost::bind(&ObstacleXMLLoader::\_StartObstacle, this, ObstacleXMLLoader::POINT)), XML\_TRAN("@obstacles", ELEMENT, "line", "@in\_obstacle", boost::bind(&ObstacleXMLLoader::\_StartObstacle, this, ObstacleXMLLoader::LINE)), XML\_TRAN("@in\_obstacle", ATTRIBUTE, "height", "", boost::bind(&XMLAttributeParser, "height", \_1, &m\_to\_be\_filled.height)), XML\_TRAN("@in\_obstacle", ELEMENT, "coordinate", "@in\_coor"), XML\_TRAN("@in\_coor", ATTRIBUTE, "lat", "", boost::bind(&XMLAttributeParser, "lat", \_1, &m\_current\_coordinate.y)), XML\_TRAN("@in\_coor", ATTRIBUTE, "lon", "", boost::bind(&XMLAttributeParser, "lon", \_1, &m\_current\_coordinate.x)), XML\_NEND("@in\_coor", boost::bind(&ObstacleXMLLoader::\_PushCoordinate, this)), XML\_NEND("@in\_obstacle", boost::bind(&ObstacleXMLLoader::\_FinishObstacle, this)) }; return BaseXMLLoader::LoadFromFile(file, s\_machine\_name, sizeof(script)/sizeof(script\[0\]), script);
}
Note this is SAX parser being able to process 25Mb XML in 4 seconds three-year old machine.
Oh God that code is hard to look at. I've been doing quite a bit of C/C++ in the last few months for embedded and Windows programming, and it really hurts after working with C# almost exclusively for a few years. I suppose it's kind of "fun," but it takes so much longer to do everything that I just feel unproductive.
-
Actually, MSN is .NET/WPF now, has been for a while. edit: er, I mean Windows Live Messenger ;P
No, it is not! When I first saw it I thought it was WPF too. Then I researched a little more using Spy++ and Visual Studio. It turns out that it is not WPF or .NET.
-
No, it is not! When I first saw it I thought it was WPF too. Then I researched a little more using Spy++ and Visual Studio. It turns out that it is not WPF or .NET.
What makes you think it isn't? The only way Messenger can take up 40mb in task manager is if it is loading the .NET runtime, there is no way it's running native code with that memory usage.
-
What makes you think it isn't? The only way Messenger can take up 40mb in task manager is if it is loading the .NET runtime, there is no way it's running native code with that memory usage.
Mike Marynowski wrote:
The only way Messenger can take up 40mb in task manager is if it is loading the .NET runtime
LOL:) Easiest way to find that is through Spy++. If an application is written in WPF (or has .NET) you see specific window classes. Also, when you attach a debugger you will find that there is no CLR loaded into the Live Messenger process.
-
DIP switch !!! DIP switch!!!! that's for you little ones just out of diapers Paddle switches are what you need I don't want to get out my bifocals magnifying glass just to move a switch with a toothpick. Real men use big beefy paddle switches for input (directly into memory) in octal, cause hex is for sissies.
-
Mike Marynowski wrote:
The only way Messenger can take up 40mb in task manager is if it is loading the .NET runtime
LOL:) Easiest way to find that is through Spy++. If an application is written in WPF (or has .NET) you see specific window classes. Also, when you attach a debugger you will find that there is no CLR loaded into the Live Messenger process.
Hmmm, it appears as though you are correct. I read something about the new MSN having a revamped UI with WPF a while ago, and when I saw the new UI, it looked pretty WPFish. How odd.
-
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:
The only other place where .NET is popular is enterprise applications or custom developed enterprise apps.
The "only other place"? That's a fairly substantial chunk of the market.
-
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 can't speak for why businesses choose their platforms, but as a programmer, starting with Visual Studio 2005 -- I finally feel like I'm in the proper development environment after programming for 35 years. 1) There's true integration -- if I need to create a class (and I have full OOP, not the sorta OOP you get in PHP) I can create a class, basically on-the-fly, and it will be immediately available to code that is calling it. Any mods are immediately available, with no gyrations or extra mechanics to link things up. It is an extremely productive environment. 2) There are so many well-built ready-made classes available, I can concentrate on the application without getting side-tracked building a software library. Starting with FORTRAN, I've built these types of libraries with each new platform, but in VS in most cases I don't need to. (How many times have I programmed a Shell Sort over the last 3 decades?) Many of these classes are quite sophisticated btw, a lot more than sorts. My specialty is systems analysis (mostly business systems) and applications -- I can stick to that instead of spending days researching other specialties. 3) Debugging is pretty amazing -- stepping into or around calls etc -- plus if I want to try out some code I can exercise pretty much any code I want at a breakpoint. It's just so simple! That's the thing -- it's simple. I just write code now. I don't see programmers using VB to write a generic app like Office, but for business apps it's great.
-
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.
Kenneth Ede wrote:
The cost is bloated exe's.
Actually, I'd beg to differ on that point. The size of executables is something I'm intimately and very concerned with as we make business software distributed only online. We started out years ago with MFC / C++ and a slew of third party stuff like Crystal Reports etc. By comparison our .net version of that same app with at least triple the features it used to have but all the same functionality is a tiny fraction of the size it used to be. .Net apps have a tiny footprint thanks to the vast built in functionality of the clr.
Let not your mind run on what you lack as much as on what you have already. - Marcus Aurelius
-
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've asked myself that several times. Java used to be my favorite programming language before I switched to .Net. The first draw for me was how easy putting together a GUI (win app) was. In Java this took significantly longer 5 years ago, although Java does have nice layout containers that .Net does not out of the box. I think other draws are other language features. Getters / Setters, Delegates, LINQ (big for a lot of people now). I like the Asp .Net model over any other web framework, and its nice that the code behinds are in a .Net language. WPF is also a very powerful framework that uses .Net as well as Silverlight. I'd be interested to hear why others are drawn to .Net over say Java or another language.
-
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?
Here's a summary of some of C#'s cooler features.
-
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 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 is. .Net is a library/framework, and it's popular because it works and has the kinds of flexbility developers need. It also easier to learn and use than MSs previous GUI frameworks. C# is a language. Near as I can tell, its popular because Microsoft, wanting to out-compete Java, told us developers to like it. Its slow and a bit buggy with some half thought out features built right into the language and others designed into the Visual Studio IDE. If it weren't for the .Net library, I'd have no interest in learning and using it. Of course, as things stand now, whatever the reasons, it has become a resume prerequisite.
patbob
-
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?
Does anyone ever give serious answers to these questions, or is this the humor page? And how would I know if an answer to this question that made me laugh was a serious answer? .NET is designed NOT to be cross platform. It is designed to create lock-in to microsoft OS products. That said, it is a very extensive, very complete library on microsoft products. People like it because it is effective, once you buy into the OS lock-in. It's more efficient at run-time than many Java things, partly because it's a thin wrapper over windows C libraries. C# does have some language features that Java doesn't have, if you care about such arcana. And the microsoft IDE is rich, fast, and stable. What's not to like, except for the lock-in?
-
.Net is much more friendly to new programmers than something like MFC. .Net is a far more comprehensive library than MFC (or any other framework i've ever seen). also, .Net provides a far better way to do web programming than C++. (and i say this as a die-hard C++ programmer) and this "meta environment" you speak of is a bit exaggerated. .Net languages are compiled to native code, at run time. there isn't really any huge "runtime" between the code and the OS. there's an environment and a standard librar, just as there is with any other language. but it's not like .Net is interpreted or anything.
Comparing .NET to MFC is like comparing apples to poisoned gruel with bits of glass splinters and rusty nails in it. The time I worked with MFC is what I consider my 'dark age of programming'. If you've read The Pillars of the Earth by Ken Follet, the pains Follet's characters go through does not seem that dissimilar to my pain when programming with MFC. Or maybe I should say against MFC. ... Although, when I think about it, OLE was even worse! :cool:
-
John 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.
wouldn't that be 'bear paws'? ;P
-
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 noticed that on average the time it takes to develop a Win32 app using .Net is about half of what it is with other technologies. The simple answer is I can get more done faster. In the rare case where .Net performance isn't up to the task, I can write specialized functions in C and put them in a Dll and use P/Invoke to execute them. It is very similar to Java, but Java is built to run on every platform and because of this doesn't perform as well.
-
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?
Boy, this thread, started to answer a simple question, is starting to look all too familiar. Look. people will always use the language that they like most and/or best suits their situation people will use the languages they know best people will always find ways of telling people that their choice of language/architecture/hair tonic is better than yours and that you are stupid/lazy/bald people will always come to threads like these to vindicate themselves and rationalize the use of their own preferred language, or just to bash the other side. people will always take a side and selectively listen to only the arguments that support their choice, blocking out all the others with ridicule and high-fallutin talk People will always be mac vs. pc (i'm not talking about actually liking one over the other, just the mindset. Red vs. blue, left vs. right, its all the same). It's human nature guys, lets all work together and make the world a better place, rather than split ourselves up and hate each other for what makes us great, our ability to think for ourselves.