Slashdot Mirror


Was .NET All a Mistake?

mikejuk writes "The recent unsettling behavior at Microsoft concerning .NET makes it a good time to re-evaluate what the technology is all about. It may have been good technology, but with the systems guys building Windows preferring to stick with C++, the outcome was inevitable. Because they failed to support its way of doing things, .NET has always been a second-class Windows citizen unable to make direct use of the Windows APIs — especially the latest. .NET started out as Microsoft's best challenge to Java but now you have to ask: what has the excursion into managed code brought the Microsoft programmer, and indeed what good has it done Microsoft? From where we are now, it begins to look very much like an unnecessary forced detour, and Windows programmers are going to be living with the mess for years to come."

74 of 688 comments (clear)

  1. Was .NET all a mistake? by Anonymous Coward · · Score: 2, Funny

    Do you really need an entire article to give you the answer to that one?

    1. Re:Was .NET all a mistake? by TheRaven64 · · Score: 2

      The problem is, if you remove cross platform then there's little advantage to .NET. If you're writing a Windows application, then (as TFA says) you're going to get better integration with the host system if you use C++, because then you can use the underlying APIs directly, rather than via an abstraction layer. The only thing that .NET gives you is the ability to run the same binary on multiple architectures, but with Windows that means x86, x86-64, two Itanium boxes in a cupboard somewhere, and some ARM systems in a promised future. Meanwhile, Apple allowed developers to support PowerPC and x86 with native code. There's even a shim for Windows using a tiny .NET program as a loader to allow you to produce fat binaries, so it's relatively easy to create a native Windows app that supports multiple architecture, if you actually want it to.

      --
      I am TheRaven on Soylent News
    2. Re:Was .NET all a mistake? by Lord+Crc · · Score: 4, Interesting

      The problem is, if you remove cross platform then there's little advantage to .NET.

      Only if you ignore C# with all it's feaures and .NET's ability to effortlessly combine several languages (like C#, F# and IronPython) in the same program.

      As for tighter integration to the host system... A lot of applications doesn't actually need this, and is happy with the basics provided by the platform/library of choice, be it .NET or Qt.

    3. Re:Was .NET all a mistake? by rtfa-troll · · Score: 4, Insightful

      You'd think the world would have learned the lesson about investing in Microsoft-only technologies after IE6 and ActiveX. It seems a lot of people are in fact learning disabled.

      I think they have. The lesson the guys who decide which technology to use have learned is that if you invest in MS technologies and put them in your customers you'll have several good years. Then Microsoft will outdate those technologies soon and give you another round at the same consulting money.

      --
      =~ s,(.*),<sarcasm>$1</sarcasm>,g if any_point_you_wish();
    4. Re:Was .NET all a mistake? by Gerald · · Score: 3, Insightful

      I think they have. The lesson the guys who decide which technology to use have learned is that if you invest in MS technologies and put them in your customers you'll have several good years. Then Microsoft will outdate those technologies soon and give you another round at the same consulting money.

      The open source world is completely different. We stabilized on Perl^WPHP^WRuby^WNode^WEastAsia years ago and never looked back.

    5. Re:Was .NET all a mistake? by Rob+Y. · · Score: 5, Interesting

      You have a half a point, and that's exactly what Microsoft was counting on when they built .NET. That enough people would think 'cross-platform within the Windows family' was essentially the same thing as cross-platform. Those types would adopt .NET, and the threat of Java would be blunted. While they're at it, they took some good ideas from Java and added some of their own (yes, they are capable of coming up with good ideas), and made a somewhat improved Windows-only platform that has some minor cross-platform benefits (like support for ARM Windows).

      And that whole approach kind of flies if you assume the 'business desktop' of today.

      But with the popularity of iPads and the like, even the business community is beginning to understand the freedom that real cross-platform code (which today is most apparent in browser-based apps) enables. Nobody that's not locked into Windows desktop software would ever stake their business on that kind of stuff today. As awful as web apps can be (and they're getting less and less awful all the time), the advantage of server-based apps is obvious to anybody that's ever had to support desktop apps. Especially for database centered apps where the data can't live on the desktop and a network connection is required. So even the cross-platform dream of Java has been mostly superseded by web apps.
       
      .NET is a pretty good implementation of a dying paradigm. Won't be the first time. Meanwhile, the original promise of Java begins to shine when you look at the Android dev kit. To write iOS apps, you need a Mac. To write WinPhone apps, you need a Windows PC (arguably a lower hurdle). But you can write Android apps on a Mac, a PC or Linux, and the binaries work on ARM or X86 devices. Pretty neat. Maybe not as nice an implementation as Visual Studio, but again, the benefits of true cross-platform code become more and more obvious the more and more Comptuer != Windows PC.

      Still, the whole shebang will eventually become irrelevant next to the coming web-only paradigm (and yes, ChromeOS is a little ahead of the curve on this). Sure, some things will always want to be desktop-native - traditional cross-platform tools will have an advantage there. But the new standard's gonna be the web, and not even Microsoft can stop that.

      --
      Posted from my Android phone. Oh, I can change this? There, that's better...
    6. Re:Was .NET all a mistake? by billcopc · · Score: 4, Insightful

      We were combining multiple languages long before Windows even existed. Ever heard of a sneaky little program called a linker ?

      It was just as "effortless" as your beloved .NET. You simply wrote a makefile that called the various compilers for all your bits of code, then linked them all together to produce the binary. Even if you use only one language, the linker is still used to hook up with system-wide libraries, and generate proper signatures and stubs.

      And if you're about to say that makefiles are not effortless, well what do you think your shiny $1500 IDE does when you click "Build" ? Chances are, it produces a Makefile from all the metadata in your project and hands it to a hidden command-line build tool.

      --
      -Billco, Fnarg.com
    7. Re:Was .NET all a mistake? by Tetsujin · · Score: 2

      We were combining multiple languages long before Windows even existed. Ever heard of a sneaky little program called a linker ?

      1: Write an application using MS Visual Studio's compiler.
      2: Give it an extension library interface using STL classes (string, vector, etc.) as calling arguments and return arguments
      3: Write an extension library using another compiler (or even just a different version of the same compiler), probably with another implementation of STL.

      Such a library will compile happily and fail gloriously. It may not even make it to an STL failure if the two compilers have different calling conventions. This is one reason why, although you can do this sort of thing with an ordinary linker, it's not nearly as easy without a common framework like .NET's CLR.

      --
      Bow-ties are cool.
    8. Re:Was .NET all a mistake? by m50d · · Score: 3, Insightful

      We were combining multiple languages long before Windows even existed. Ever heard of a sneaky little program called a linker ?

      The problem is that the C ABI is really weak. As befits C, all it really speaks is small numbers and big numbers, there's no concept of objects. So you can't do type-safe function calls. You can't pass closures around. As C++ programmers have found to their cost, you can't throw an exception and catch it if there's C code between where you do this. You sure as hell can't take a class from one language and subclass it in another, because C doesn't even have a notion of classes. That's what .net gives you, a system ABI that understands some higher-level concepts.

      And if you're about to say that makefiles are not effortless, well what do you think your shiny $1500 IDE does when you click "Build" ? Chances are, it produces a Makefile from all the metadata in your project and hands it to a hidden command-line build tool.

      What's the point you're trying to make here? You know when you compile a programming language it actually just produces a bunch of assembly and hands it to a hidden assembler, so C takes just as much effort as writing your own assembly.

      (And my IDE at least uses something better than Makefiles).

      --
      I am trolling
  2. Was this article all a mistake? by Anonymous Coward · · Score: 4, Insightful

    And the answer to my question is yes.

    But the answer to your question is a big fat no. And I have an entire functioning, blossoming eco-system to back that answer up.

    Oh, and while we're at it... Why post a question when you've already made your mind up? And posed the question in a biased way based on your pre-decided conclusion.

    XcepticZP

    1. Re:Was this article all a mistake? by FranTaylor · · Score: 2, Insightful

      Can you bundle your app into a single file, and run it by double-clicking it, on any one of a dozen platforms?

      Are your runtime requirements available on ALL of the commonly available platforms, so people don't have to change their platform to run your code?

      So you have the audacity to tell someone that they need to buy a new computer to run your code? Really I have to go out and spend hundreds of dollars to even try out your program, just because your taste in platforms is different from mine?

    2. Re:Was this article all a mistake? by FranTaylor · · Score: 2

      And I suppose you were really really careful and you made sure your code actually runs on all of them.

    3. Re:Was this article all a mistake? by CaseCrash · · Score: 3, Insightful

      You CAN'T take your "functioning, blossoming eco-system" and share it with anyone that isn't running the same version of Windows as you. THAT is the loss.

      I know, it sucks, I can only run .Net apps on any Windows system from the past 10 years! I can't run it on Windows 95, or Linux, or my iPhone. I'm also pissed off that I can't run this new iPhone app I got on my Commodore 64 or my blender! WTF? It should be able to run anywhere, just like those linux programs you wrote run everywhere.

      (</sarcasm> if you're too dumb to get it, which I think you might be based on your post)

      --
      No, that link you posted to a web comic we've all seen a hundred times is not "obligatory."
    4. Re:Was this article all a mistake? by SpryGuy · · Score: 5, Insightful

      Who cares? ALL my customers are on Windows. The tiny fragment of a market that can't run windows software is irrelevant to most people, especially those in the business of making money.

      Even the largest of those tiny minorities (Mac users) can run .Net using bootcamp or parallels or some such.

      And for the rest, there's Mono, which will run a subset of .Net stuff.

      Really, this notion that EVERY program must be able to run on EVERY platform is just ridiculous B.S. It never has been true and never will be true.

      And really, anyone that has to "buy new hardware" to run a .Net application has some pretty alien hardware to begin with. XP, Vista, and Win7 run on most things out there, and Win8 will add to the supported processors and form factors.

      Your post is a lot of hot smoke and arrogant ignorance. There's a huge ecosystem around .Net, and it's a lucrative framework in which to develop. That's a simple fact that no amount of foot-stamping will erase.

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    5. Re:Was this article all a mistake? by PCM2 · · Score: 2

      .NET was never meant to replace VB. That would be C#.

      I think you misunderstand. The last version of regular Visual Basic was Visual Basic 6. Visual Basic 7 wasn't called that; it was called Visual Basic .Net. Microsoft ended all support for Visual Basic 6 in 2008. So if you were a Visual Basic programmer, you were indeed forced to use .Net, and for all intents and purposes, .Net replaced Visual Basic.

      --
      Breakfast served all day!
    6. Re:Was this article all a mistake? by liquiddark · · Score: 2

      What does any of that have to do with running different versions of Windows? I don't need to bundle it, Microsoft's updater includes the .NET framework as a recommended update that most people go ahead and put on their computer because they're not a total idiot. I don't need to have runtimes on every platform, because Windows is my platform of choice. I don't need someone to buy a new computer, because if they're encountering my .NET code they're usually on Windows. And I don't care about your platform choice, because I made mine when I chose .NET. Not to say Mono is nothing, of course, but I would bet it wasn't a core part of the ecosystem being referenced. There is more than enough .NET software in the original environment to keep anyone happy.

    7. Re:Was this article all a mistake? by afidel · · Score: 3, Insightful

      That's the point of the CRL, you don't need to verify your code runs on those platforms unlike with the morass of DLL's that you need to verify with native code. I've never had a .Net program fail to run as long as the version of .Net on the machine was equal to the minimum version required by the application, and you can update .Net without a reboot.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    8. Re:Was this article all a mistake? by ThePiMan2003 · · Score: 3, Funny

      Thank god. VB 6 is horrid. I am still trying to rehabilitate people who spent to many years programming in it.

    9. Re:Was this article all a mistake? by RingDev · · Score: 3, Insightful

      You're on more crack than the author. You can run .Net apps on any machine with the same version of the .Net client installed, XP, 2k3, Vista, 2k8, 7, even Apple, and although it lags a little behind Mono gets us running on Linux.

      Sure, it's not quite as "runs on anything" as Java, but have you ever compared any of the Java IDEs with VS? Lets face it, if MS hosed up every other thing its ever done, Visual Studio is bar none the best coding IDE. .Net, like Java, are high level object orriented managed code languages. Yeah, if you try to write an OS in them, it would be rediculous. If you are trying to push the latest greatest graphics systems through them, you'll be disipointed. But if you're trying to develop desktop apps, web services, rapid software prototypes, etc... they are both great languages.

      Use the right tool for the job. .Net and Java are not the right tool for every job. But for those that they are designed to fulfill, they work wonderfully.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    10. Re:Was this article all a mistake? by VGPowerlord · · Score: 2

      Can you bundle your app into a single file, and run it by double-clicking it, on any one of a dozen platforms?

      No, and nothing like this exists anywhere else either. Technically, the closest thing to what you're describing that exists would be the OSX Universal binary, which runs on x86 and PowerPC.

      With everything else, there's going to be a native executable involved somewhere, be it a Java JVM or web browser, which you appear to realize as per your next point:

      Are your runtime requirements available on ALL of the commonly available platforms, so people don't have to change their platform to run your code?

      I've never really tried Mono, but I understand it has very good .NET support these days:

      The easiest way to describe what Mono currently supports is:
      Everything in .NET 4.0 except WPF, EntityFramework and WF, limited WCF.

      Mono runs on OSX, Linux, and the BSDs. And even on Windows.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    11. Re:Was this article all a mistake? by sourcerror · · Score: 3, Interesting

      "Sure, it's not quite as "runs on anything" as Java, but have you ever compared any of the Java IDEs with VS? Lets face it, if MS hosed up every other thing its ever done, Visual Studio is bar none the best coding IDE."

      That's a matter of taste. I always preferred Eclipse to VS even for C++ coding. (Let's just say I hate horizontal scrolling.)

    12. Re:Was this article all a mistake? by Gutboy · · Score: 3, Informative

      Really? I guess you can't read pie charts http://www.humblebundle.com/

    13. Re:Was this article all a mistake? by GooberToo · · Score: 2

      I looked repeatedly. The only trolling I've found if your post. And at that, I can't even understand what it is you're trying to say.

      The simple fact is, Python is commonly used as a glue language. With not so much work you can have very fast python (mixed language) applications. It does have its own VM. PyPy is the next logical evolution of it. Both manage memory. So I'm honestly not sure what you're trolling on about.

    14. Re:Was this article all a mistake? by Rockoon · · Score: 3, Insightful

      Windows isn't a real-time OS, so not using .NET but continuing with C++ on Windows is still horribly contradictory to your claims of real-time applications.

      You would need to target an OS like VxWorks or the RTLinux distribution (nearly all Linux distributions are NOT real-time OS's) .. until you are doing that, you simply are not designing real-time applications.

      Do you even know what a real-time application actually is?

      --
      "His name was James Damore."
    15. Re:Was this article all a mistake? by Plombo · · Score: 2

      I've never really tried Mono, but I understand it has very good .NET support these days:

      The easiest way to describe what Mono currently supports is: Everything in .NET 4.0 except WPF, EntityFramework and WF, limited WCF.

      Mono runs on OSX, Linux, and the BSDs. And even on Windows.

      You should actually try it, especially on non-Windows. I've never seen an application written for .NET that works out of the box with Mono on Linux.

    16. Re:Was this article all a mistake? by exomondo · · Score: 4, Insightful

      I was with a shop that whose main money comes from real-time industrial applications, which is a huge market, one you're completely unaware of, I think.

      why would he be unaware of that? I think - given your post - it's actually you who are unaware of it since you're discussing realtime applications in the context of a Windows discussion. So either the point about realtime applications is completely irrelevant and has no bearing on the discussion, or you didn't know Windows isn't a realtime OS.

      The company spent a ton of cash sending us to a place to train for it, and more cash re-tooling for the change. We were going to be a .NET shop. Then there was a shake up and we got a new manager of engineering and all that time and money went down the drain as we stayed with C++ for that software. Just sayin'.

      Sounds like your point is that your company is being run by idiots, not a failing of .Net at all but a failing of your company's management.

    17. Re:Was this article all a mistake? by gweihir · · Score: 2

      You are doing real-time industrial stuff on Windows? That must count as gross negligence.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  3. No? by bhcompy · · Score: 5, Insightful

    Works fine for what it is. It's not meant to build OS's with. It's meant for the applications within, and certain applications at that. Works pretty damn well for that.

    1. Re:No? by KnightOwlSC · · Score: 2

      Agreed completely. I would much rather be writing LOB applications using .Net (C# specifically) then VB7 or C++ any day. The author of the original article is someone who spends a lot of time doing things that require C++ to do. And that's perfectly fine but that is a smaller and smaller % of development work. Heh.. can anyone really imagine writing a web site in C++?

    2. Re:No? by exhilaration · · Score: 3, Insightful

      Agreed, it's a perfectly fine language for plenty of things like business applications. If you want to build operating systems or first person shooters, you won't be using .Net or Java, that's just not what they're for.

    3. Re:No? by NJRoadfan · · Score: 3, Informative

      FWIW, I have seen Java applications require a specific version of the JRE to run properly. I've had stuff break if they were, for example, running on JRE1.5.0_06 instead of JRE1.5.0_05. .NET is no exception, plenty of stuff out there demands the .NET 1.1 runtime be installed even though 2.0 is present in the system.

    4. Re:No? by Anonymous Coward · · Score: 2, Funny

      No, but secure website programming in C fucking well is.

    5. Re:No? by DragonWriter · · Score: 2

      It could be a decent language if it wasn't locked to a specific OS.

      .NET isn't a languages, and the languages for it (C#, VB.NET, IronRuby, IronPython, etc.) aren't tied to a specific OS or even OS vendor.

      Some of the libraries are locked to a particular OS (or, more commonly, a family of OSs from a particular vendor).

    6. Re:No? by sjames · · Score: 2

      So where is the variety of Apps in .Net running on all sorts of different OSes? I haven't seen much beyond proof of concept demos.

      It certainly doesn't seem that MS ever intended the Apps to work elsewhere.

      It's true that there is more than one language for .Net, but they all seem to be either brand new invented to run MS apps on MS OSes by MS or someone else's efforts.

      Java (for all it's many pitfalls) ran on multiple platforms right out of the box. .Net only came into existence when MS's efforts to pervert Java into an MS only variant was squashed by Sun.

    7. Re:No? by styrotech · · Score: 4, Insightful

      .NET is a great platform, and C# is a great language. All of this .NET hate from anti-Microsoft types with no knowledge of the platform is just about as useful as all of the patent fear-mongering associated with Mono. Anything Microsoft invents, these people are going to try to tear down, whether it's a good innovation or a bad one.

      Yeah .NET and MS strategy has always had a bunch of hate from non MS types. But the last few months has seen a change where a lot of the criticism is coming from people inside the .NET world rather than outside it.

      Previously the .NET world seemed to be one of the most contented development communities that were happy to lap up whatever new framework MS dropped on them without much complaint.

      MS needs to be careful in how it addresses the growing threat of the mobile world (ie iOS and Andriod) without alienating its core developers.

      If they screw it up, they could be the next Oracle. ie still a massive profitable business, but a legacy one unlikely to attract new generations of devoted developers and passionate supporters any more.

    8. Re:No? by tftp · · Score: 3, Insightful

      So where is the variety of Apps in .Net running on all sorts of different OSes?

      Most computer users are pragmatists. When they need a function they buy a program that does what they want, and a computer that runs that program. It just happens that Windows runs about 100% of all programs that anyone would be interested in[1], so the choice of the OS is quite obvious here.

      Of course MS is not going to port their libraries to other OSes. Not only it is not good for Windows, it is also not good for any ISV who would have such an idea. The market for .NET applications on Linux (or even Mac) is not very large, and it's hard to make a business case for that.

      But libraries, being defined by their interfaces, can be rewritten from scratch - and that's what Mono is doing, as I understand, beyond the C# itself. It's a lot of effort - especially when you dive into WPF which is a very complex programming framework.

      Java (for all it's many pitfalls) ran on multiple platforms right out of the box.

      Java was also unusable on all of them. .NET is really implemented only on Windows, but it works great. Java appears to be in a better shape now, but still I can't readily recall a major, large program that is written in Java. All Java applications that I ever came across come with their own JRE, talk about compatibility... However it's easy to find examples in .NET world - like Paint.Net - and they run on whatever is installed on your box. Java in interests of portability supports only the lowest common denominator; .NET supports the latest and greatest. Guess which one is more appealing to a new developer?

      By now we should know two facts about MS:

      1. MS never releases a quality product in rev. 1
      2. MS always releases a quality product in rev. 3

      Today main MS cash cows - Windows, Office, .NET, Visial Studio etc. - are in good shape. It would be unwise to summarily ignore thousands of man-years that went into their development.

      [1] Of course that shouldn't be taken literally. I sorely need Squid 3.1 for my IPv4 to IPv6 proxy at home. IPv6 is supported only in the latest rev. 3.1. But Squid on Windows is dead as a doornail, with major pieces missing. I guess I need to splurge on another Ubuntu box, since nothing that I have can take another VM...

    9. Re:No? by SplashMyBandit · · Score: 3, Insightful

      You are talking about desktop apps as if that was the only programs out there. Many apps have moved to the Web, and a very large number of them are built in Java. Just because you can't see Java (because you have your eyes closed) doesn't mean you don't use it whenever you use the Web (same thing with Linux, which handles almost all the external-going mail you'll ever send, but this is also invisible to you because it works so damn well).

  4. Messy by flaming+error · · Score: 4, Funny

    > Windows programmers are going to be living with the
    > mess for years to come.

    It's a dirty job, and every other Friday I cry all the way to the bank.

  5. Not For My Company by cosm · · Score: 2

    We're a ~100 person .NET shop and we do about 10 million a year with small businesses. It's worked great for us!

    --
    'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
    1. Re:Not For My Company by Psychotria · · Score: 3, Funny

      cosm didn't specify it was 10 million DOLLARS a year; perhaps it's 10 million new applications a year, although I do think that would be a heavy workload

  6. What?! On the contrary: .NET is becoming relevant! by Kensai7 · · Score: 4, Informative

    According to an Ars Technica article, .NET will be first-class citizen in Windows 8.

    --
    "Sum Ergo Cogito"
  7. What has .NET brought to the programmer? by roc97007 · · Score: 2, Interesting

    What .NET has brought to the Microsoft programmer is a decade of lucrative employment. That's not a bad thing. The trick now is to convert back to C++ and ... I'm tempted to say "go out and get real jobs" but that would be unfair.

    --
    Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
    1. Re:What has .NET brought to the programmer? by bloodhawk · · Score: 2

      Why would they want to convert back to C++, With .NET getting massive investment and becoming an even better target in Windows 8 there is less and less reason to go the C++ route. sure C++ is better for writing the OS etc, but .NET or Java remains the platforms of choice for fast application development. The article is basically some clueless idiot that doesn't understand what .NET and Java are for and mistakes Microsoft's lack of use for writing there OS with it as some sort of move away from .NET, nothing could be further from the truth.

  8. A mistake? by Brummund · · Score: 4, Funny

    Yeah, look at the flop that is asp.net, or how hard doing protocol agnostic services with WCF is. *sigh* .NET is a huge success in the corporate world, and hopefully c# will be one of the last nails in VB's coffin.

    If you measured Java's success based on the non-proliferation of applets, it too is a flop.

    (And if you are a Java programmer, I hope you get something similar to Linq soon :-)

  9. controls backfire by roman_mir · · Score: 2, Insightful

    Any attempt at controlling technology, people, businesses via artificial mean backfire, so this is no different.

    IF .NET is just a managed environment that makes it easier to develop for Windows platforms, then it's not a wrong thing to do, but if it marketed as a VM for the sake of being a VM while being boxed into Windows only, then it loses purpose.

    What's the purpose of this VM that can only be used in Windows? Is it just to provide a managed environment for the developers? Because if that's all it is, it can have a niche use, but it cannot compete with VMs that can run the same code on multiple platforms. In any case, I always saw it as a trap and not the kind I'd walk into, because my applications run on real operating systems and not on desktop toys.

  10. Re:Signs point to by Anonymous Coward · · Score: 5, Insightful

    Ditto. .NET drove me away from developing windows apps altogether... it killed visual studio for me.

    When it first launched, nobody had .NET framework installed, so you were screwed on that end. Then it started shipping with the OS, but it was never up to date it seemed like. The number of times I just wanted to download an app and have it run, only to be foiled by an out of date version of the .NET framework... which was also freaking HUGE!

    It was basically in theory the same idea as java, except with even more restrictions, limits, and headaches. On top of all that, it was force-fed down all of our throats by Microsoft for years, and still even up to this date.

    In short, it's like java, but a 10x bigger disaster.

  11. Of course it was a mistake... by Excelcia · · Score: 2, Insightful

    Of course .NET was a mistake. It had all the drawbacks of an interpreted system with none of the benefits. Inherent cross-platform run-anywhere ability which was Java's purpose from the beginning was never intended for .net. Cross-platform is the only consideration that makes interpreted code worth the cost in resources. .NET was a needless (read useless) distraction, and the only "benefit" I can perceive is an across-the-board requirement for people to purchase more powerful hardware to accomplish the same goals.

    1. Re:Of course it was a mistake... by BasharTeg · · Score: 4, Interesting

      How exactly is .NET interpreted? CIL (formerly MSIL) is JIT compiled, just like Java is. The JIT compiles of assemblies are cached in the GAC, so it only happens once. After that it's native code for the platform you're running on, whether that's 32bit Intel, 64bit Intel, or Itanium. Or you can choose a specific platform in Visual Studio and compile directly to that platform and avoid the intermediate language altogether. From your description of .NET it seems like you have no knowledge of the platform.

      Insightful? Come on mods, do better.

    2. Re:Of course it was a mistake... by pxpt · · Score: 5, Interesting

      I strongly disagree that .NET in general and C# in particular has all the drawbacks of an interpreted system with none of the benefits. I don't care whether it runs everywhere or not (although that would be nice). What I do care is the intelligent garbage collection that is only possible with this type of architecture. What I do care about is the enormous library available to me for offloading common programming tasks. What I do care about are generics, strong typing and collections. What I do care about is the easy database accessing. What I do care about is the intelligence available in Visual Studio that can work out refactoring for me. What I do care about is getting complex business apps out the door and being able to support the business with ever more complicated requirements. Sure I could do that with C++ but never in the same time frame. C# and the .NET Framework are my big programming lever.

    3. Re:Of course it was a mistake... by Edmund+Blackadder · · Score: 2

      A "just in time" compiler is a type of interpreter. I know it sounds confusing but that is the way it is.

    4. Re:Of course it was a mistake... by 10101001+10101001 · · Score: 2

      Well, according to here, the JIT compiler is just a JIT compiler with the persistence at most to the life of a process. If you want something more persistent, you can use NGen which can store native code in the NGen cache. Having said that, NGen code seems to have some caveats that make it worse than native code (either less ability to share pages between processes or a potentially longer startup time). So, yes, there's an option for native code, but it doesn't sound like a default except for the .NET framework itself.

      --
      Eurohacker European paranoia, gun rights, and h
    5. Re:Of course it was a mistake... by benjymouse · · Score: 2

      Heh... A JIT does not typically keep all the translations cached... It redoes a LOT of them from time to time. It's a virtualized machine. If it does NOT produce a final native code result that's kept and used directly time and time again, there's SOME interpretation that gets done each time the code is executed.

      The context is .NET which indeed does cache all translations for the application domain. It doesn't redo "a LOT" of them as you claim. It compiles an assembly/method only once per process.

      .NET does indeed also allow on-installation or ahead-of-time compilation through the ngen.exe tool. It will, as was claimed above, compile to *native* code and store it in the GAC. When such an assembly is used by other .NET code *no* compilation will take place.

      --
      Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
  12. But I said all that years ago by erroneus · · Score: 3, Insightful

    ... and people here told me I was an idiot and didn't know what I was talking about and on and on and on. Good to know, at least, I'm not the only one.

    But I do see .NET for what it could have been -- the application programming API for the migration to the next Windows OS which isn't Win32/64 compatible. Microsoft still doesn't have the balls to shift to a brand new OS the way Apple did. But they should have done that a long, long time ago.

    1. Re:But I said all that years ago by the+linux+geek · · Score: 2

      Why should Microsoft kill Windows, exactly? In pretty much all respects, it's a reasonably modern, secure, and stable operating system.

  13. Just a bigger and better framework by cdrguru · · Score: 4, Insightful

    What MFC was all about was hiding the nasty parts of writing applications for Windows inside of a framework that was supposed to make everything nice and orthogonal. For the most part, it failed in this task because you had to understand the underlying SDK-level API in order to make effective use of MFC.

    ActiveX was the next round of this and ATL was again supposed to hide things from the developer. It didn't do this, although it did make COM much simpler for a lot of the world. And Microsoft seemed to want to make COM into the "new" API for Windows without having it support any of the nasty parts.

    C# and VB.NET were the mostly the next round of this with COM as the primary path to getting anything done at all. If you like COM (or are forced into it), then C# and VB.NET make a lot of sense because now COM isn't some add-on to C or a template library that is 90% implemented - it is 100% there. But again, if you don't understand how Windows is doing things for you through the COM API functionality you will never understand why things are working the way they are.

    Yes, they added an entirely new GUI definition package and a whole lot of things as new COM interfaces to things that didn't have them before. The idea was clearly to make it possible to write applications completely in the COM world without ever having to touch the "native" API. And for the most part this succeeded because finally enough effort was put into the framework that a large number of application developers could get along with only the interfaces supplied.

    The problem with building an application framework ontop of a native API is that you can easily find yourself with a never-ending task if the native API keeps growing and changing, which it certainly has. Microsoft doesn't do well with never-ending tasks - priorities shift and where there were once hundreds of people working on something there might only be a few later on. Again, we have the MFC dilemma where you can write 90% of the application with MFC but that last 10% has to be done by someone familiar with both MFC and the native API. C# and VB.NET are mostly still better than that, but when you fall into a hole in the framework it takes someone familiar with three or four API levels, not just two as it was before.

    Is the idea of a processor-independent CLR a good one? Maybe. If the idea of Windows on multiple processor families (like MIPS and PPC, for example) ever amounted to anything it would be very useful. With 99.9999 of the hardware out there being x86 and x64 (x86 compatible) there is little point to it today. Those directions are very difficult to see and I suspect Microsoft was committed to the CLR approach long before the decision was made to abandon MIPS and PPC, as well as nearly every other hardware architecture other than x86/x64. This might change again in the future, but without huge memory and processor availability it is unlikely that much cross-platform application compatibility will really exist. It makes no sense to have a cross-platform application that relies on so much memory that it won't run on handheld devices when the choices are x86 desktops and other handheld devices only. The future of a non-x86 compatible desktop at this point is very much in question, probably to the point of it taking another 10 or 20 years before there is a real change there.

    Back in the 1970s IBM mainframe customers pretty much made certain that nothing that wasn't compatible with the 370 instruction set would sell, and we are living with that legacy today, still, 30+ years later. Somewhere around 1995 or so it was pretty plain that the market for non-x86 compatible hardware in the PC world was limited and perhaps non-existant. Alpha was still produced and Windows NT came out with MIPS, Alpha and PPC support. But the number of real applications that were ever ported to non-x86 platforms was exceedingly small. Not saying it couldn't possibly happen, but at this point the need to break away from x86/x64 is vanishingly small and betting

    1. Re:Just a bigger and better framework by pcause · · Score: 4, Informative

      The key is that Microsoft is porting Windows to ARM. if you built you app with .Net and MS doesn't screw things up you should have an app that works on the ARM version of Windows 8. If that happens, then for MS and developers the entire .Net experience has been a HUGE win. MS will have a Win 8 ARM with a huge supply of apps and developers and developers will have access to the tablet market without having to do much new.

  14. What happens? by FranTaylor · · Score: 4, Insightful

    What happens when your vendor decides to move on, just like they have done many times before? Your application is now a ticking time bomb, set to explode at the support cutoff date.

    Hello did you learn the lesson from the mainframe era? Don't code to vendor specific APIs. Stay platform-neutral and you give yourself a much wider range of platforms for your application. It gives you much more leverage in your hardware purchasing, if you are free to choose any platform.

    The folks in the trucking industry figured this stuff out a long time ago. It is shocking to me to see people, today, intentionally choosing vendor lock-in.

    1. Re:What happens? by aztracker1 · · Score: 4, Insightful

      Sheesh, what a FUD trip this is.. there are non-MS implementations of .Net that are open-source and support cross platform migration as easily as any other managed runtime. As to TFS regarding not being able to access the system API, the author doesn't know WTF they are talking about. The ability to interact with system libraries is far easier in.Net than any other managed platform, even in a platform agnostic way.

      --
      Michael J. Ryan - tracker1.info
    2. Re:What happens? by bhcompy · · Score: 2

      It gets emulated, just like everything else. Emulated PICK, emulated AS400, etc. Code doesn't stop working because support is gone or the OS manufacturer went out of business. I have customers that run Win2k server VMs for particular software. Optimal? No, but platform independence just means more problems on the design side. The average business app designer doesn't have the time or the resources to ensure that his/her program is compatible/compilable in OSs that they don't even use or haven't been invented.

      Specific APIs mean better performance within that environment. There is a reason OpenGL was ditched by everyone in favor of D3d

    3. Re:What happens? by SplashMyBandit · · Score: 4, Insightful

      Yes, there are alternatives for the language implementation, but check the libraries out. With .NET you are locked into the libraries (unless you can afford to re-write your app in exotic [for Windows] Gnome technologies). Actually I found Java's JNA easier than .NET in working with system libraries, no matter what platform. Shame you don't know about it.

  15. Re:Recent unsettling behavior? by The+Moof · · Score: 2

    The only rumblings (which were covered here) are about MS dropping Silverlight and going with HTML5/JavaScript for web. Somehow, the article took that and misconstrued it as MS abandoning .NET.

  16. Stop trolling the end of .NET by MobyDisk · · Score: 2, Insightful

    The i-programmer.info site has been trolling several articles about the end of .NET. Wake me when they have something other than speculation.

    with the systems guys building Windows preferring to stick with C++ the outcome was inevitable.

    .NET is not a systems language. It never will be. Neither is Perl, Ruby, Python, Java, or HTML5. This does not mean those languages are mistakes or that they are going away.

    .NET has always been a second class Windows citizen unable to make direct use of the Windows APIs — especially the latest.

    Actually, the opposite is true. Microsoft has been adding new functionality to Windows that is only available to .NET, not to C++ code. WPF is the biggest example of this. They are actually deprecating Windows APIs with each new release of the OS.

    The author does not seem to realize that that Microsoft is working on a C# 5.0, and that much of Microsoft's new development is in .NET: Office, Visual Studio, and Sharepoint. All of this trolling stemmed from one demo where they showed some mobile HTML5 apps, and someone just leapt to the conclusion that .NET was dying.

  17. Re:I actually like it by Excelcia · · Score: 2

    Delphi, C++ Builder, and the free cousin Lazarus are great tools for this. Lazarus is making some great cross-platform strides too. As a bonus, when you're done, you have real code. :)

  18. I definitely agree by msobkow · · Score: 4, Insightful

    The C#/.Net world is very well suited to front-end applications in the business world. You wouldn't want to write a video game or OS tools with it, but for it's target market, it's very effective. I particularly like how clean the class libraries are compared to the old Win32 SDK APIs.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:I definitely agree by FredFredrickson · · Score: 4, Informative

      With vs .net 2010, and the XNA game studio, a lot of game devs are writing both windows and xbox games .. in C#. I think you might rethink that.

      --
      Belief? Hope? Preference?The Existential Vortex
  19. Re:I looked at .NET briefly by The+MAZZTer · · Score: 2, Interesting

    This won't happen anymore (ideally). Pretty much the whole point is to eliminate (as much as possible) buffer overflows, invalid memory accesses, memory leaks, and other low-level bugs that easily pop up in C++ programs. .NET abstracts away dealing with low-level pointers, everything is "managed" by the framework so it is freed when no longer used (it is still possible to leak memory by keeping references to things you don't use anymore, but the framework can only do so much for you), and various attempts to attack your program with buffer overflows etc to run shellcode wouldn't work because your high-level program doesn't deal with pointers, and .NET internals will stop buffers from overflowing (etc). Oddly enough I have seen my own programs I build crash on launch after a while of not working on them, but a recompile always fixes it. Otherwise I have never seen a .NET program crash unless I did something dumb with unmanaged code.

    You largely don't have to worry about that sort of low-level stuff and you can just go build your program (the exception being .Disposing some objects helps with garbage collection). Plus you have a ton of useful libraries already included. Want to pull a file from the web? No problem, create an object to represent your request, a callback to handle the response object, then send it out. Want to parse XML? One function call and you're left with a tree of XMLNode objects to walk. Maybe you can find amazing libraries for C++ but you're starting from scratch (well you had to at one point, at least) and have to check licenses on them all, etc. With .NET you start off with a good base of libraries you can use in your apps for free.

    I also love the Window Designer tool in VS, though various Window toolkits for C++ offer similar things IIRC, I just like how I can pull together a skeleton class for my form and begin coding basic functionality immediately.

  20. Purpose of .NET by Sloppy · · Score: 4, Insightful

    I thought the purpose of .NET was to lure developers away from writing portable apps in Java. As long as the apps stay unportable, those developers' customers remain stuck with Windows.

    (Whether Java was a credible threat at the time (pre-Android) we'll never know, but what's done is done and .NET happened.)

    Assuming that's what the purpose was, it pretty much did its job for the better part of a decade and can hardly be called a mistake. Let's see you try to prevent the spread of technology at the beginning of the 21st century, and then we'll talk about who makes "mistakes" and who is the meta-luddite genius.

    "Gentlemen," [All raise their drink glasses] "To Evil!" [Wild cheering]

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  21. Re:What?! On the contrary: .NET is becoming releva by idontgno · · Score: 4, Funny

    I'm looking forward to the Year of the .Net Desktop.

    That, Strong AI, and flying cars.

    --
    Welcome to the Panopticon. Used to be a prison, now it's your home.
  22. Re:Signs point to by Rary · · Score: 2

    In short, it's like java, but a 10x bigger disaster.

    And, incidentally, both it and Java are the two primary development platforms in the corporate world today, and still going strong. Pick either one, and you'll find work with little effort. Familiarize yourself with both, and companies will fight over you.

    Sure, it's not for everyone. Apparently it doesn't suit your purposes. But it's the right tool for certain jobs— and there are lots of those jobs.

    --

    "You cannot simultaneously prevent and prepare for war." -- Albert Einstein

  23. Several mistakes... by gstrickler · · Score: 4, Insightful

    And the big one was thinking that a dominant OS vendor could/would create anything that was truly cross platform. From the beginning it was clear that .NET was a Windows first system, anyone else would be on their own. No matter how good the design and concept of .NET may be, while it's under MS control, it is fundamentally subjugated to keeping people on Windows. And while that may have sounded good to the executives at MS, it's a terrible way to address any threat they felt from Java. There is also the pressure from MS to have .NET support all the latest/greatest things in Windows, which is a backwards model. If they really wanted a sustainable and/or cross platform development/runtime, the Windows developers should bring their latest/greatest to .NET, if there are comparable capabilities on other platforms, then the .NET team might extend it in a way that supports portability. If not, but the Windows features are compelling enough, then developers would use them with the knowledge that such things are platform specific.

    In short, the .NET team being part of MS put them in the position of having to support two masters, and that's always a no win scenario. They needed to be a separate entity with separate decision making authority and separate accounting, even if MS owned the majority of that entity.

    --
    make imaginary.friends COUNT=100 VISIBLE=false
  24. Re:Huh? by Z00L00K · · Score: 2

    Microsoft has been trolling all the time since MS-Dos, so there is nothing new or surprising here.

    The only result we get is a bigger and bigger backpack hanging on programmers containing contradicting technologies from Microsoft.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  25. Re:Not a mistake, just badly executed by jader3rd · · Score: 2

    Exchange and IIS are .Net. I know SQL server has a lot of .Net in it. The Visual Studio shell is WPF, and there's plenty of .Net in other places in VS.

  26. Re:I looked at .NET briefly by josath · · Score: 2

    You've never seen a .NET program crash in managed code? You must not run very many of them then...I've seen it all the time. It's perfectly possible to crash a program with unhandled errors etc, without having to touch unmanaged code at all.

    --
    sig? uhh, umm, ok
  27. Re:I looked at .NET briefly by FrootLoops · · Score: 2

    I was guessing the GP was just ignoring unhandled exceptions in managed code, since it's obvious that a program can crash from a basic runtime error.