I think Microsoft's biggest mistake was waiting way too long to bundle the .NET framework with Windows. They waited until Vista to do this, and since Vista was so poorly received, even now you can't be 100% sure. Making things worse is that if you do run a .NET app without the framework, you get a cryptic error message that offers no help whatsoever. This poor out-of-the-box behavior made a lot of people wait to develop .NET apps, IMO.
Lion's "you need to download Java to run this, would you like me to do that for you?" method is way better. But, 20/20 hindsight.
Other than that, it's a fantastic platform and I love developing in it. I don't think it's going anywhere.
They didn't wait. .NET arrived after Windows XP, and it would have been a poor business move to delay XP by a year so they could include .NET. Microsoft bundled it with the next Windows release.
It might have been a smart move to roll it into the first service pack as a required part of the update, but people would have screamed "anti-trust" if they did.
Actually some of the comments mention that they have been using .NET at their companies.
But yeah, /. has been going downhill for years (not surprising, considering that they where the original IT discussion forum back when the bubble was still going).
Slashdot, and especially the comments, are ridiculously hard to suffer through. I unsubscribed in GReader last week after reading uninformed rants that were more offensive than even this piece.
.NET has included many mistakes (WCF, Silverlight, etc) - but overall ASP.NET, C#, and especially ASP.NET MVC are solid languages and frameworks and thousands of companies have been able to churn out useful LOB applications on this platform. It has sold a ton of Windows server and SQL Server licenses over the years - which make it a huge success for MS.
I am hoping you don't include ASP.net webforms inside your statement ASP.net. Sure it makes tons of money but it is a awful web technology for so many reasons.
Yeah,Silverlight seems more and more to be a dead end for "rich internet applications" but it has been pretty good for LOB apps. I can take the logic out of winforms apps and I no longer have to roll application updates to thousands of desktops.
Funny how I was thinking about .NET in today's world. It seems like the trend is in creating native apps that work with the internet (the cloud or whatever you want to call it) but it still makes sense to invest in some web app, even if just for quick reference when a native app is not available on your machine (because you don't have your iPhone with you or any other reason, I can think of dozens).
With this perspective in mind, one could hope for the easiest way to develop for both platforms (native & web) and, guess what?, .NET does both and it's really easy to use (I'd say it's the easiest thing to work with even if it can be more painful to do something truly unique).
It's too bad it focused so heavily on the enterprise market, there could be a horde of startups using .NET nowadays if it wasn't so expensive to get a Windows Server running back in the old days (and besides BizSpark it still isn't as cheap as the *nix alternatives).
Disclaimer: for personal stuff I never use .NET but it's what pays the bills for quite some time now. And I like it.
The mistake wasn't in offering .NET. The mistake was in letting C++ rot for 10 years. They are suffering now because of the lack of an efficient and modern native code development tool.
I agree with your conclusion (suffering for lack of modern native code development) but disagree with your solution.
C# still has the potential to be vastly superior to C++ for "native" development. The problem is that they spent the last 10 years working exclusively on neat features like LINQ instead of something that they promised back in 2002. I wish I had a link to the article, but back in 2002 I read an article from one of the C# leads stating that, unlike C++, the CLR would be able to do processor specific optimizations at code generation time. It also talked about inline functions, and that it didnt matter that C# didnt have an inline keyword because of course the JITter would do that automatically.
Roll on 2011, and my lovely Matrix44.Multiply(Vector4[] foo) neither inlines the internal Matrix44.Multiply(Vector4 bar) nor does it SIMD any of it even if I inline it myself. Ditto for Matrix34.Multiply(ArrayOfStructs baz).
Then there are the kind of performance guided global optimizations that you could do with a language like C#, using data-driven compilers, or manual-driven attributes. Memory management, for example, could be class/struct specific giving those classes performance as good as any C++ custom memory management (e.g. pools), while allowing initial development to proceed rapidly.
Sadly, none of this came to pass. If anyone wanted to hire me to work at a games company it would be on the condition that the first thing I got to do was write a C# toolset that did exactly this. (Funnily enough, nobody has hired me, but the idea of scrabbling in the just-post-punch-card shit that is C++ is enough to discourage me from dropping the requirement).
.NET is doing alright in corporate server development, but the deeper problem is that Microsoft let third-party Windows application developers twist in the wind for years. The Windows and Office teams tend to keep their UI code and controls private, so that third-party devs have to choose between making due with old libraries and controls, or spinning their own.
When does the Windows team keep their controls private? It seems like most of the stuff that makes sense as a public control (e.g. not the Start Menu) gets a public API.
The Office team is a different issue. They seem to do a lot of non-standard stuff, and I'm not sure 3rd parties should be trying to follow their lead. The effort a lot of teams spent emulating Office 2003 was obsoleted when 2007 arrived.
.NET exists largely because Sun didn't want Microsoft to create an incompatible version of Java. As such, .NET should really be compared with Java rather than native code. In that context, it's been pretty reaonably successful. Arguably, it's earned Microsoft more money than Java ever earned for Sun.
Win Forms was always just a clunky wrapper around the aged Win32 APIs, and while WPF is extremely impressive, its performance still appears to be an issue for large-scale desktop applications.
I've been away from the Windows world for going on 6 years now, so my question is: what the heck are people using to write Windows apps these days? I'm sure there is still a mountain of .NET developers writing a mountain of crappy WinForm apps for the enterprise, but what about consumer software? Is it still Win32 and GDI?
I've really never felt that WinForms was "clunky". Compared to Win32, it's amazingly consistent and intuitive - you can learn 75% of it just with the form designer and IntelliSense. Doing anything in Win32, by comparison, almost always requires a trip to Google and a paragraph of code.
I don't know why anyone would willingly write a Win32 or MFC app over .NET unless they were simply unfamiliar with it, or overly worried about performance, framework availability, or code security.
Depends on the type of app. With UI heavier apps that are new WPF is very popular. Sony Vegas, VS 2010, Expression Blend, HP Touchsmart shell, are some examples of apps that use WPF.
If you're writing a new app, and you can deal with the WPF restrictions (can't run too far downstream or on underpowered computers) then its hard to go with anything else. With that said, I do wish it had better perf.
Based on personal enterprise consulting experience, Enterprise Windows apps are still widely developed using WinForms, VB6, Delphi still exists more than what's comfortable, and if you're lucky enough to work with a cutting edge enterprise, there's some WPF, Expression Blend, or Silverlight sprinkled in there.
I don't have stats but I presume Win32/MFC/GDI dominates the consumer software world, judging by how many Windows apps I've installed over the years that didn't require the prerequisite .net framework installation.
The only mistake was not going full-Open from the start. Even with Mono today there are enough proprietary libraries on top of C# that make it still effectively windows-only for a lot of things. They can't ever be a JVM killer if they don't run on everything smoothly, and by now with all these JVM languages to use instead of Java I don't think they'll get that chance again.
[+] [-] phillco|14 years ago|reply
Lion's "you need to download Java to run this, would you like me to do that for you?" method is way better. But, 20/20 hindsight.
Other than that, it's a fantastic platform and I love developing in it. I don't think it's going anywhere.
[+] [-] dpark|14 years ago|reply
It might have been a smart move to roll it into the first service pack as a required part of the update, but people would have screamed "anti-trust" if they did.
[+] [-] hvs|14 years ago|reply
Oh wait, it's Slashdot. They haven't.
[+] [-] tomjen3|14 years ago|reply
But yeah, /. has been going downhill for years (not surprising, considering that they where the original IT discussion forum back when the bubble was still going).
[+] [-] drivebyacct2|14 years ago|reply
[+] [-] javery|14 years ago|reply
[+] [-] peregrine|14 years ago|reply
[+] [-] Hominem|14 years ago|reply
[+] [-] iaskwhy|14 years ago|reply
With this perspective in mind, one could hope for the easiest way to develop for both platforms (native & web) and, guess what?, .NET does both and it's really easy to use (I'd say it's the easiest thing to work with even if it can be more painful to do something truly unique).
It's too bad it focused so heavily on the enterprise market, there could be a horde of startups using .NET nowadays if it wasn't so expensive to get a Windows Server running back in the old days (and besides BizSpark it still isn't as cheap as the *nix alternatives).
Disclaimer: for personal stuff I never use .NET but it's what pays the bills for quite some time now. And I like it.
[+] [-] forgotAgain|14 years ago|reply
[+] [-] hvs|14 years ago|reply
Visual Studio is still the best development environment available, bar none. How is it not "efficient" or "modern"?
[+] [-] ldar15|14 years ago|reply
C# still has the potential to be vastly superior to C++ for "native" development. The problem is that they spent the last 10 years working exclusively on neat features like LINQ instead of something that they promised back in 2002. I wish I had a link to the article, but back in 2002 I read an article from one of the C# leads stating that, unlike C++, the CLR would be able to do processor specific optimizations at code generation time. It also talked about inline functions, and that it didnt matter that C# didnt have an inline keyword because of course the JITter would do that automatically.
Roll on 2011, and my lovely Matrix44.Multiply(Vector4[] foo) neither inlines the internal Matrix44.Multiply(Vector4 bar) nor does it SIMD any of it even if I inline it myself. Ditto for Matrix34.Multiply(ArrayOfStructs baz).
Then there are the kind of performance guided global optimizations that you could do with a language like C#, using data-driven compilers, or manual-driven attributes. Memory management, for example, could be class/struct specific giving those classes performance as good as any C++ custom memory management (e.g. pools), while allowing initial development to proceed rapidly.
Sadly, none of this came to pass. If anyone wanted to hire me to work at a games company it would be on the condition that the first thing I got to do was write a C# toolset that did exactly this. (Funnily enough, nobody has hired me, but the idea of scrabbling in the just-post-punch-card shit that is C++ is enough to discourage me from dropping the requirement).
[+] [-] gamble|14 years ago|reply
[+] [-] dpark|14 years ago|reply
The Office team is a different issue. They seem to do a lot of non-standard stuff, and I'm not sure 3rd parties should be trying to follow their lead. The effort a lot of teams spent emulating Office 2003 was obsoleted when 2007 arrived.
[+] [-] klagan|14 years ago|reply
[+] [-] CurtHagenlocher|14 years ago|reply
[+] [-] thought_alarm|14 years ago|reply
I've been away from the Windows world for going on 6 years now, so my question is: what the heck are people using to write Windows apps these days? I'm sure there is still a mountain of .NET developers writing a mountain of crappy WinForm apps for the enterprise, but what about consumer software? Is it still Win32 and GDI?
[+] [-] phillco|14 years ago|reply
I don't know why anyone would willingly write a Win32 or MFC app over .NET unless they were simply unfamiliar with it, or overly worried about performance, framework availability, or code security.
[+] [-] kenjackson|14 years ago|reply
If you're writing a new app, and you can deal with the WPF restrictions (can't run too far downstream or on underpowered computers) then its hard to go with anything else. With that said, I do wish it had better perf.
[+] [-] gigantor|14 years ago|reply
I don't have stats but I presume Win32/MFC/GDI dominates the consumer software world, judging by how many Windows apps I've installed over the years that didn't require the prerequisite .net framework installation.
[+] [-] ww520|14 years ago|reply
[+] [-] hvs|14 years ago|reply
[+] [-] jasonkostempski|14 years ago|reply
[+] [-] unknown|14 years ago|reply
[deleted]
[+] [-] Jach|14 years ago|reply
Things like http://www.netmf.com/gadgeteer/ are nice though.
[+] [-] malkia|14 years ago|reply