Slashdot Mirror


How Microsoft Dropped the Ball With Developers

cremou writes "As part of an Ars Technica series on how one developer migrated from Windows to OS X (and why), this second article concentrates on how Microsoft bungled the transition from XP to Vista. The author looks at some unfortunate decisions Microsoft made that have made Windows an unpleasant development platform. 'So Windows is just a disaster to write programs for. It's miserable. It's quite nice if you want to use the same techniques you learned 15 years ago and not bother to change how you do, well, anything, but for anyone else it's all pain... And it's not just third parties who suffer. It causes trouble for Microsoft, too. The code isn't just inconsistent and ugly on the outside; it's that way on the inside, too. There's a lot of software for Windows, a lot of business-critical software, that's not maintained any more. And that software is usually buggy. It passes bad parameters to API calls, uses memory that it has released, assumes that files live in particular hard-coded locations, all sorts of things that it shouldn't do.'"

814 comments

  1. Long Answer? by Jeremiah+Cornelius · · Score: 3, Funny

    Read the article.

    Short answer?

    Windows!

    --
    "Flyin' in just a sweet place,
    Never been known to fail..."
    1. Re:Long Answer? by denzacar · · Score: 5, Funny

      Actually it is more like:

      I hate Windows. It robs me of my creative juices.
      Because I am creative, you know... man?
      So I "Switched".
      Now, I code for OS X and every day is a beautiful rainbow for me.

      --
      Mit der Dummheit kämpfen Götter selbst vergebens
    2. Re:Long Answer? by Jeremiah+Cornelius · · Score: 2, Insightful

      You gotta admit, he has a point and illustrates it pretty well.

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    3. Re:Long Answer? by 644bd346996 · · Score: 4, Funny

      Exactly. He illustrates it well. That's coming awfully close to being, you know, creative. And creativity is one of the well-known risk factors for becoming a Mac fanboy.

    4. Re:Long Answer? by RiotingPacifist · · Score: 3, Insightful

      Does he have a point though?
      I think the giveaway is when he says a screen shot is worth a thousand words, then his screen shot is of vista with the taskbar at the top, Im not saying nobody has the taskbar at the top but its just one of many signs that hes a fan of apple.

      Im no programmer but the article seams short on facts & details and high on ms bashing & skimming.
      Is the article right or is it just well presented trolling?

      --
      IranAir Flight 655 never forget!
    5. Re:Long Answer? by Winckle · · Score: 4, Insightful

      I have my taskbar at the top, because it effectively reverses the order of the start menu. This makes shutdown the bottom option, which is where it should be, as i use it precisely once per session.

    6. Re:Long Answer? by ldhertert · · Score: 5, Interesting

      This was modded as funny, but, as a .NET developer, I find it to be exceedingly true. I just made the switch to OSX, because I was unhappy with the stagnancy of windows. But, as we speak, I have windows running in a virtual machine almost solely for the purpose of running visual studio. I find the articles critiques very hard to swallow. The argument that .NET is limited by the attempt to be simplistic is asinine. Just like java, there are high level "simple" functions that may or may not suit your needs. If they don't you have the capability to dig down into much lower level functions to do what you need to do. He states several problems with the UI capabilities of .NET. Before I even get into the technical components of his argument, if he's trying to say that Java is better in this area, then he needs to get his eyes checked. Every single java app I've ever used is ugly as sin, and I've seen a lot. Sure, it's portable across environments, but that's not what .NET development is being used for. Aside from that...not happy with with the windows UI standards? Everyone else seems to be. You can write .NET apps that follow very closely to the common windows UI design standards. Not happy with the limitations on the UI? Write/use another UI implementation like GTK. And how do we not even mention that the UI layer has been completely overhauled with the advent of WCF? I can say with experience that .NET is very powerful and can be very pleasant to work with. The ability to move from desktop apps to web apps to mobile development with very little effort has been great for me and my career. I'm sure that Java does a lot of things right, but as someone who has seen a lot of the terrible things microsoft has done, I honestly think that .NET is a crowning achievement of theirs.

    7. Re:Long Answer? by murdocj · · Score: 5, Insightful

      He has an axe to grind, but I'm not sure he has a point. For example, he talks about how .Net was supposed to insulate you from the vagaries of the Win32 interface,but failed. Then he talks about how the Win32 API returns the length of a file as two 32 values that have to be combined, instead of a 64 bit value. The part he leaves out is that .Net's system.IO.FileInfo does exactly what he wants... it returns the file length as a long 64 bit value. So why bring up the old 32 bit interface when you don't have to deal with it anymore? If that's the best he can do, his argument is in trouble.

    8. Re:Long Answer? by MightyYar · · Score: 1

      I'm a big Apple fan and have my Windows taskbar at the bottom :)

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    9. Re:Long Answer? by lgw · · Score: 3, Funny

      .NET is the first thing MS has done in 15 years that's not tied to Win32 backwards compatibility. It's a fresh attempt to do things well. It's certainly cleaner than Win32, but neither that nor OSX (however wonderful it may be) will mater to me: Win32 is my profession now.

      I heartily encourage everyone else, especially all developers in low-income areas of the world, to Make the Switch ASAP. The less labor supply for these horrible, inconsistant Win32 APIs (really, it's like programming while your face is on fire), the better!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    10. Re:Long Answer? by Anonymous Coward · · Score: 5, Funny

      Short answer?

      Windows is bad for developers.

      Long answer?

      Windows is bad for developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers! Developers!

      (The lameness filter complains about my Ballmer joke -- it must be detecting residual Microsoft lameness.)

    11. Re:Long Answer? by Merusdraconis · · Score: 2, Insightful

      FTA:

      "Regular updates to the OS keep developers on the upgrade treadmill; they work to make their applications fit in with the latest and greatest release, leveraging whatever new bells and whistles it provides, further improving the software ecosystem."

      As we see from the Windows and Mac OS (pre-X) ecosystems, this is completely false. Developers are loathe to change custom-written code that they know works in order to implement some kind of link to the OS; and in many cases they'll let old versions of their program stop working when a new version comes out and replaces it.

      Microsoft knew what they were getting into with Vista's backwards incompatibilities, and oh lordie how people complained. Consumers (and, it seems, developers, who should know better) often blame Microsoft when their new product breaks backwards compatibility, even if it's the program's fault for doing it the wrong way. For the most part, Windows developers are pragmatic, which is why they're working on Windows (the biggest install base), so whatever works is more or less good enough.

      I will delight at what happens if Linux ever manages to get majority market share and it starts getting some of the less-skilled pragmatic developers.

    12. Re:Long Answer? by Anonymous Coward · · Score: 3, Funny

      Screenshots are "creative"? Wow, I'm a potential Mac fanboy and didn't even know it. Now I just need to blog about how harrowing and exhilarating it is to give birth to my amazing screenshots.

    13. Re:Long Answer? by Anonymous Coward · · Score: 5, Insightful

      Then he talks about how the Win32 API returns the length of a file as two 32 values that have to be combined, instead of a 64 bit value. The part he leaves out is that .Net's system.IO.FileInfo does exactly what he wants This was a complaint about Win64. He had different specific complaints about .NET.

      If that's the best he can do, his argument is in trouble. If you can't even read his argument without getting mixed up, then your future is in trouble. (OTOH you have a bright future as a Slashdot poster. Not reading TFA is henceforth passé; reading it and getting it entirely wrong is the new standard.)
    14. Re:Long Answer? by niko9 · · Score: 5, Funny

      Yup. But there's still one thing you can't do elegantly when programming for OSX

    15. Re:Long Answer? by strabes · · Score: 1

      Three of my closest friends are CS majors and all disdain programming in windows. They all use ubuntu full time, but especially for programming. This is from someone who knows nothing about programming.

      --
      Its = possessive. It's = "it is"
    16. Re:Long Answer? by dcam · · Score: 4, Insightful

      Everything I have read and heard about Microsoft suggests that they are cowboys.

      Code first, design later. For example, I note with interest the amount of pain involved in trying to provide server protocol documentation for the EU. Some of the foot dragging is deliberate but some of it is that they don't have quality internal documentation.

      There is a severe lack of direction and leadership at Microsoft. They are just not forward planning. As a result they are tearing themselves to pieces, doing the same work again and again.

      --
      meh
    17. Re:Long Answer? by xazos79 · · Score: 5, Funny

      You use the start menu to shutdown? That's so '95.

    18. Re:Long Answer? by thetoadwarrior · · Score: 5, Insightful

      Im no programmer but the article seams short on facts & details and high on ms bashing & skimming. Is the article right or is it just well presented trolling? How can you say it seems to lack info when you're not even a programmer. For anyone who has done programming between good languages and MS languages will know he's spot on and it's been well documented that MS went back on their word to build a .Net based OS that started fresh.

      The problem is they know a lot of people aren't happy with Windows but it runs all their programs. Once the scrap that backwards compatibility and build something solid, despite the fact it may be their best OS ever, it's on a level playing field with the rest which means people have to find an alternative to their old programs and they might just pick something that isn't Windows and MS isn't having that.
    19. Re:Long Answer? by Handover+Phist · · Score: 1

      I have my taskbar at the top and have only used Mac hardware for the purpose of installing Linux on it. I can count on one hand the number of times I've used a Mac, but having it at the top just works.

      Should I have capitalized that?

      To be honest, I have one at the bottom too, but that's for the multiple desktop switching thing. Screenshot on request.

    20. Re:Long Answer? by CodeBuster · · Score: 4, Insightful

      The argument that .NET is limited by the attempt to be simplistic is asinine I agree. It sounds to me like this guy used .NET for a year or so around 2002 when it was brand new and then left and hasn't looked again for the last six (6) years. He is the first person that I have heard accuse .NET of being "too simplistic". The .NET class library (and Java class library as well) is the definition of everything and the kitchen sink. These are extremly powerful languages and libraries that are if anything too complex.

      Before I even get into the technical components of his argument, if he's trying to say that Java is better in this area, then he needs to get his eyes checked. Again, I totally agree. The .NET Framework class libraries and the C# language are the definition of "The Right Way" to organize and structure code. They are technically sophisticated, architecturally beautiful, and make use of all of the best ideas at the culmination of nearly three (3) decades of object oriented programming theory and software engineering. If he is going to criticize .NET for its "lack of capability" then he is basically saying that Java is crap too, because .NET borrowed heavily from Java which in turn borrowed heavily from C++, smalltalk, and all the way back through C to Algol 60.

      portable across environments, but that's not what .NET development is being used for It is supported and in the future it will become more and more common. The great innovation on the part of .NET was the common runtime type description language and metadata in addition to the common language assembly. This is what allows different programming languages to fully share types across libraries compiled from different source languages (including cross langague debugging). This was the feature that Java was missing and this is a major reason why .NET is so popular, it has the potential to end the "my programming language is better than yours" debate because the common types and assembly make the argument irrelevant. Use C# or use VB.NET or use Eiffel or whatever other language you want.

      I can say with experience that .NET is very powerful and can be very pleasant to work with. I have been using .NET for six (6) years now and I can honestly say that it has fulfilled all of my expectations with very few dissapointments and it is improving substantially with each subsequent version. I know that I sound like a hopeless fanboy, but .NET really is a pleasure to work with, especially given the breadth and depth of the libraries and languages with a tool for every job and every job done with the right tool.

      I honestly think that .NET is a crowning achievement of theirs. Although it probably doesn't hold much water with the Slashdot crowd, I think that it is fair to say that .NET is the best thing ever to come out of Microsoft, even though it wasn't a completely original idea (but how many completely original ideas have there been in computer science anyway? Everyone benefits from the work of predecessors and ones who have come before us).
    21. Re:Long Answer? by try_anything · · Score: 2, Insightful

      He states several problems with the UI capabilities of .NET. Before I even get into the technical components of his argument, if he's trying to say that Java is better in this area He's not. He said that Java provides a better-designed API based on simpler, cleaner concepts that are easier to learn, whereas there's a bunch of .NET functionality that has funny exceptions because of Win32. Swing isn't pretty to look at, but he is correct that it has a clean conceptual foundation, even despite being built on top of an earlier, abortive attempt at a GUI API, AWT. As a Swing programmer, you don't have to deal with redundant Swing and AWT functionality. (It's there, but you can ignore it at no cost to your understanding.) The parts of AWT that are required for Swing are simple, easy to understand, and not redundant with Swing functionality.

      not happy with with the windows UI standards? Everyone else seems to be. "Happy with" and "stuck with" are two different things. Microsoft is screwing itself with the lack of uniformity in Windows. Microsoft's second-best asset (after developers, developers, developers) is the tendency of first-generation computer users to shit their pants when presented with minor look and feel variations. After Microsoft conditions users to expect a different look and feel for every new application they learn, normal users will be capable of switching between platforms without any problem. Then it will be a lot easier for businesses to use open-source operating systems to save money or to take advantage of an application that isn't available on Windows.
    22. Re:Long Answer? by Jeremiah+Cornelius · · Score: 1

      The proof - as they say - is in the pudding.

      "Vista".

      'nuff said.

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    23. Re:Long Answer? by LaskoVortex · · Score: 2, Insightful

      Yup.

      Your link is all the more profound when one realizes that 90% of the posts on this thread are from defensive windows programmers. So, my question is, whence the hostility, man? When mac users/programmers say "Our platform is great!", windows users/programmers don't say "Ours is too!", but rather insist on "No, you suck!". Its always the same story. Just thought I'd point it out. Here is what I say: "Get a friggin' life! If your OS is so great, then there is no reason to say how every one else sucks because they think theirs is too." Or do you have some deeper issues with your OS that we don't know about and this is the source of your hostility? Perhaps if you talk it through you will be happier. Or maybe you could switch to a good OS. Just a suggestion. No need to get defensive about it.

      --
      Just callin' it like I see it.
    24. Re:Long Answer? by dcam · · Score: 2, Insightful

      Yeah, I think that Vista really demonstrates the Microsoft of today. They have a number of problems:
      1. They aren't attracting the kind of people they once were, and many of the very good people have left. This exacerbates their other problems.
      2. They are still trying to develop the same way they used to (cowboy), but are now finding that it does not scale well for the size of projects.
      3. There seems to be a lack of long term direction, planning and vision. And by long term I mean as short as 3 years from now. This might be a result of 1.

      --
      meh
    25. Re:Long Answer? by Metasquares · · Score: 4, Interesting

      Couldn't they even keep backwards compatibility via virtualization? They can have all the new apps run natively, and run the old ones on a virtual OS. It would give new apps a nice degree of isolation from some of the old badness.

    26. Re:Long Answer? by Anonymous Coward · · Score: 0

      Or you could, you know, use Launchy and learn that Win, U, [U if XP Home, else Enter]is the sequence to shut down.

      And then you'd only touch the start menu in desperation.

    27. Re:Long Answer? by KutuluWare · · Score: 4, Insightful

      You must have had access to the sooper sekrit article with all the illustrations in it. The Ars article I read a blatent Mac fanboy bragging about Cocoa, with an extra two tacked-on pages of hyperbole and baseless accusations about how much .NET sucks, backed up with exactly 1 concrete example: that you have to know which Windows Forms operations are thread-safe (hint: none of them). He even finishes that thought by pointing out that most other GUI frameworks have exactly the same problem. I can probably rattle two dozen cases from memory in the old Win32 API where MS made obviously retarded design choices, but he can't even come up with a single actual .NET class method that he doesn't like when he's writing an article about it?

      I am in that third group of developers this article was supposedly written for. I absolutely abhor poorly written code, cheap workarounds, etc. And I make a living off .NET and I love it. I usually find that the Framework already does anything I'd expect a base class library to do and a bunch more. The code I write against it is way more elegant than what I typically see from, say, your random GTK app. Is that because .NET is inherently better than gtk, glib, glibc, etc? No, I don't sit around whining about how Microsoft "blew it with developers" because they didn't write all my code for me... I spend my time writing good code.

    28. Re:Long Answer? by drew · · Score: 1

      Aside from that...not happy with with the windows UI standards? Everyone else seems to be.


      Everyone but Microsoft, apparently...
      --
      If I don't put anything here, will anyone recognize me anymore?
    29. Re:Long Answer? by Anonymous Coward · · Score: 5, Funny

      Must not be Vista. Otherwise you would only use the shutdown button roughly 50% of the time, with the other 50% being the reset button. :)

    30. Re:Long Answer? by Anonymous Coward · · Score: 0

      Yea, and I just love all the black box programming that has gone into .NET which as a programmer I have no control over... awesome just awesome - NOT!!!

    31. Re:Long Answer? by drew · · Score: 2, Interesting

      While I mostly agree with you, I have to say that not everything is sunshine and roses in .NET land. Certainly, I think that the class libraries and the C# language itself are exceptionally well done, and the CLR will do wonders for the field. But coming from more of a web development background than a desktop app background, Wow did Microsoft mess up ASP.NET. After all the thought that went into the language, and the runtime, sitting down with WebForms feels about like getting stabbed in the eye. I don't have much experience with Windows Forms, but to the extent that WebForms was based off of it, I really have no interest in even trying. (It's rather outside my field anyway, so it's not that I am actively avoiding it.) For all the appreciation that I have for the .NET runtime as a whole, my impression of ASP.NET in particular was excellently summed up by Douglas Adams: "it is easy to be blinded to the essential uselessness of them by the sense of achievement you get from getting them to work at all. In other words... their fundamental design flaws are completely hidden by their superficial design flaws."

      For as much as I like programming in C#, I just can't see myself using it very often, as it is just not very well suited to the kinds of work that I do most, particularly web development, where I use mostly JavaScript and whatever server side language happens to be convenient, and low level server architecture, which I mostly do in C and occasionally C++. (I have some hope for the latter at least - the biggest thing holding me back is the lack of high performance networking API's to work with in .NET. If they can add something along the lines of Java's NIO, I might be able to start doing at least some of that work in C#.)

      --
      If I don't put anything here, will anyone recognize me anymore?
    32. Re:Long Answer? by Doctor+Faustus · · Score: 4, Interesting

      For anyone who has done programming between good languages and MS languages will know he's spot on
      Well, sort-of. He concentrates way too much on the Win32 API, which not too many people are using directly. His big complaint about Windows Forms was threading, which doesn't seem like a big issue (you may have multiple threads once-in-a-while, but will you have more than one working with the UI?) -- otherwise he just kinda says it sucks without suggesting anything better (SWT might be a possible candidate. Swing is not.).

      And the .Net libraries are far from perfect. There are weird versions of a lot of things left over for the VB6-VB.Net porting wizard to use. The selection of functions on the String class has some very strange ommissions (.Right(n) would be nice). The IO libraries need a smooth system to switch between strings and structured objects when dealing with paths and filenames. FTP is still way too difficult. If you don't want to deal with those infernal visual designers, ADO.Net seemed to take several of the bad parts of JDBC without the huge positive that Type 4 drivers let you avoid any local installations. The settings system they push doesn't work with multi-project solutions. Etc. But he lost any credibility trying to hold up Java as a better example.

    33. Re:Long Answer? by Doctor+Faustus · · Score: 1

      I think that it is fair to say that .NET is the best thing ever to come out of Microsoft, even though it wasn't a completely original idea
      After a couple years working with Oracle, I'm getting pretty fond of SQL Server. But then, I'm a bit of a Relational Weenie.

    34. Re:Long Answer? by mike_diack · · Score: 1

      Speaking as a Windows developer, have .Net users not realised they are still "under the hood" indirectly calling Win32?
      What do they think .Net's framework is calling?

      --
      Linux fan and Win32 developer
    35. Re:Long Answer? by IntlHarvester · · Score: 1

      Weird part is that the author has written numerous forum posts describing his issues with the .NET API (particularly the collections). But rather than summarizing the technical nitty-gritty for his editorials, instead he chose to devote space to how dumb VB developers are and then leapt right to his conclusions.

      --
      Business. Numbers. Money. People. Computer World.
    36. Re:Long Answer? by JebusIsLord · · Score: 2, Interesting

      My experience thus far has been with Java (fine unless you try to do some GUI work, then blech!) and .NET (much nicer, IMO - .NET 3.x and WPF go a long way to resolving Windows Forms issues like scaling, portability, and allows for easier implementation of the MVC design pattern.) Interop with win32 IS a pain, but you don't have to do it too often. If you consider modern Windows development as .NET development, I don't really see the big issue here. I do with win32 would go away for good, though.

      --
      Jeremy
    37. Re:Long Answer? by JebusIsLord · · Score: 1

      "scaling, portability" was probably the wrong thing to say. I really meant "scaling (as in resolution-independent scaling), and portability (as in internationalization).

      --
      Jeremy
    38. Re:Long Answer? by VGPowerlord · · Score: 3, Interesting

      Or you could, you know, press the power button.

      Unless you set Windows to do something other than shut down when you press the power button that is.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    39. Re:Long Answer? by JoshHeitzman · · Score: 1

      This was the feature that Java was missing and this is a major reason why .NET is so popular, it has the potential to end the "my programming language is better than yours" debate because the common types and assembly make the argument irrelevant. Use C# or use VB.NET or use Eiffel or whatever other language you want.

      It's not even close to ending the programming language debate because its common assembly isn't common enough so it places to many restriction on language features. Want to create an easily re-usable interface implementation? Tough no multiple inheritance for you. Want to make use of policy based design? Tough generics aren't even in the same ball park as C++ templates. Want to make use of deterministic RIAA? Well it was tough luck in earlier versions, but I can't remember if they finally put in deterministic destructors that will get automatically get called when an instance goes out of scope in the latest version.

      --
      Software Inventor
    40. Re:Long Answer? by Anonymous Coward · · Score: 1, Interesting

      I will delight at what happens if Linux ever manages to get majority market share and it starts getting some of the less-skilled pragmatic developers. The difference is -- and this is crucial -- Linux power users are accustomed to being able to demand the source code for malfunctioning applications and fix them (or pay someone else to fix them) if necessary.

      If open-source software ever does make deep inroads into the market for casual users, I think it will be very interesting to see those "less-skilled pragmatic developers" learn that they can't rely on the revenue stream from releasing some binary-only application that only works on one platform.

      (So many half-assed "business logic" applications have been doing this for years on Windows, it's a huge waste of resources to try and interoperate with any of them, and it's simply due to the fact that so few software purchasers realize the importance of source code.)

      When customers expect to be able to get the code for your application, but will pay you to support it with bug-fixes and ports to new platforms, you can't get away with that stuff anymore. I will delight in what happens when we're no longer stuck with crappy applications written by "less-skilled pragmatic developers" because businesses can hire any sharp coder off the street to fix them :)

    41. Re:Long Answer? by Hes+Nikke · · Score: 1

      I'm a big Apple fan and have my Windows taskbar at the right, my Dock is on the bottom, and my Linux Taskbar is on the bottom.

      it all depends on what i'm doing i guess...

      --
      Don't call me back. Give me a call back. Bye. So yeah. But bye our, well, but alright we are on a shirt this chill.
    42. Re:Long Answer? by Sawbones · · Score: 1

      ahh if only I had mod points, nice.

      --

      Ad in classifieds: Pandora's Box (no box) $5
    43. Re:Long Answer? by CodeBuster · · Score: 2, Informative
      I will grant you that ASP.NET has been a sore point, but they are finally starting to see the light with the ASP.NET 3.5 Extensions and the Model View Controller option for ASP.NET development. Scott Gu has an entire blog article series (complete with example project) covering the ASP.NET MVC Framework and it really is going in the right direction. I know that the MVC idea is not original and it certainly wasn't invented at Microsoft, but immitation is the sincerst form of flattery as they say and Microsoft is finally seeing the light on this one.

      For as much as I like programming in C#, I just can't see myself using it very often, as it is just not very well suited to the kinds of work that I do most, particularly web development, where I use mostly JavaScript and whatever server side language happens to be convenient The risk there is that you are reinventing the wheel with JavaScript DOM code and other plumbing that have been done thousands of times before by countless other developers and, lets face it, probably done better. I wouldn't trust myself to write the best general purpose JavaScript libraries either and I wouldn't try, especially when I know that someone else has already done that. A really great programming environment frees one from having to be concerned with plumbing issues, that while interesting on some level, are not generally directly relevant to the problems at hand (i.e. business logic and what the site should actually be doing).

      and low level server architecture, which I mostly do in C and occasionally C++

      Reminds me of the CGI days which were really quite primitive compared with web applications that can be built today with the much better tools. Perhaps you are one of the ellusive jedi masters of C and C++, but I think it is fair to say that C or C++ are really innapropriate choices for the majority of web developers these days.

      As for the absolute performance of ASP.NET vs other possible approaches I am not surprised that ASP.NET doesn't win the speed race, but really, how many of us run sites like Yahoo where that last ounce of performance and speed is really worth the price in terms of low level complexity and micro optimization required to achieve it? ASP.NET is an appropriate and reasonable choice for the vast majority of web application projects that most developers will be asked to build.

    44. Re:Long Answer? by Anonymous Coward · · Score: 0

      I find it particularly interesting to note that Peter Bright (author of the article) appears to have written quite a few negative articles about Vista and various aspects of the Microsoft eco-system.

      It begs the question... if he switched to OS X, why does he keep caring so much about Vista / IE / .NET / whatever else?

    45. Re:Long Answer? by SanityInAnarchy · · Score: 2, Insightful

      I agree. It sounds to me like this guy used .NET for a year or so around 2002 when it was brand new and then left and hasn't looked again for the last six (6) years. Well, certainly, one argument he makes seems to be both dated and out of touch:

      the last group could use C++ or whatever beret-wearing funky scripting language was à la mode at the time. This all worked out fine, because one of the few nice things about Win32 is that it was designed for C. C is in many ways a very simple language, and it's also a ubiquitous language. As a consequence of this, pretty much every other programming language created in the last couple of decades can, one way or another, call C APIs.... .NET isn't like that. Although .NET can call C APIs (just like everything else can), the real objective is for all programming to reside in the .NET world. .NET is meant to be the entire platform, with all the different languages that people use living inside the .NET environment.... It's still possible to use different languages with .NET (in fact, it's easier than it was in the pre-.NET days). Just now, the different languages all use the common set of .NET APIs for drawing windows on screen, or saving files, or querying databases, and so on. Here's my take, as someone who pretty much hates MS, and would rather avoid .NET if possible... .NET is trying to be the new C.

      All his support for C could apply to .NET, and all his criticisms of .NET as a platform for people to run whatever they want could easily have applied to C. The one difference is that C simply has more adoption now.

      Certainly, because it's so trivial to call out to C from .NET, there's nothing to stop you from creating and distributing your own .NET library, just as people distribute C libraries now. If your library needs to talk to the system in a way you can't from within .NET, you call out to C -- just as, in a C program, if you need to do something you can't in C, you use ASM.

      This frustration is exacerbated when it's compared to .NET's big competitor, Java. Java is no panacea; it too is aiming roughly at the middle kind of developer, which is understandable, as they're the most numerous. But Java's much more high-minded. It's much stronger on concepts, making it easier to learn. .NET can call to C absurdly more easily than Java can. And C# supports things like closures -- at least, that's what they look like -- I know of nothing similar for Java.

      I can't speak to the criticisms of the actual API itself. But that would seem to be more a criticism of .NET as implemented on Windows -- as the successor to Win32 -- rather than a criticism of .NET vs Java, or of .NET vs win32.

      Although, glancing over at some of these, like the passing of two ints for the size of a file -- even on 32-bit Windows, that's kind of stupid. 64-bit integers may not have been fast, but they were certainly possible.
      --
      Don't thank God, thank a doctor!
    46. Re:Long Answer? by theurge14 · · Score: 1

      3,295,742 Mac fans switched back over to Windows, even though Windows is just as shitty.

      Now there's a Vista-like ringing endorsement intended as impartiality.

    47. Re:Long Answer? by CodeBuster · · Score: 1

      multiple inheritance for you Sigh, here we go again with the multiple inheritence argument. Multiple inheritence was almost *always* abused in the C++ days whenever it showed up to innapropriately compose unrelated classes for the sake of convenience and the utter violation of abstraction. The few legitimate uses of multiple inheritence, which are rare enough that I cannot think of them off the top of my head, can almost certainly achieved by alternative object oriented means in both Java and .NET in ways which do not carry the same potential for abuse or ambiguity.

      Want to make use of policy based design? Tough generics aren't even in the same ball park as C++ templates. Name a feature of C++ templates (other than multiple inheritence) that cannot be done in .NET with generics. I really tried to think of one, but I couldn't come up with a meaningful example.

      Want to make use of deterministic RIAA Is that your own terminology?

      but I can't remember if they finally put in deterministic destructors that will get automatically get called when an instance goes out of scope in the latest version.

      There is not a direct comparison because destructors in garbage collected languages, such as .NET languages and Java, do not serve the same purpose as they do in manual memory management languages such as C and C++. In .NET the destructor, if one is implemented, is compiled into the Finalize method which is called by the garbage collector and not manually by the programmer. It is pointless to argue that .NET and Java do not include a feature of manually managed memory languages which is not needed because garbage collection serves the same purpose by different means.

      Here it comes, the car analogy: Both a manual transmission and an automatic transmission both shift gears so does it really make sense to argue about the details of *how* that happens as long as the gears get shifted? In most cases the answer is no.

      nitpick .NET all you want, but name another platform besides Java which includes half as many features or has a standard library which is half as complete.

    48. Re:Long Answer? by SanityInAnarchy · · Score: 0, Offtopic

      Give MySQL and PostgreSQL a spin.

      --
      Don't thank God, thank a doctor!
    49. Re:Long Answer? by CodeBuster · · Score: 1

      .NET is trying to be the new C.

      Except that C had very minimal standard library support and certainly nothing like what we see now in .NET and Java. With repsect, .NET and Java are really just about as far from the minimalist approach of C as one can get. .NET and Java and virtual machine languages are all about abstraction while in C there really was no abstraction, it was and is designed to run as close to the hardware as possible.

      As for distributing your own version of the standard .NET libraries that really doesn't make much sense. The class library is so well defined and so complete, just as it is in Java, that the class library is really an integral part of the platform.

      Looking at .NET as the 'new C' is, at least IMHO, the wrong view. Both .NET and Java are descended from the C branch of languages, but they really are moving well beyond that initial inheritence into areas which Dennis Ritchie and Bell Labs never could have anticipated or probably even imagined (there was no practical context in which to have a serious discussion about object oriented programming back in the early 1970s because many of the concepts that are in .NET and Java today hadn't been invented yet or were only tossed around as theories by academic computer scientists).

    50. Re:Long Answer? by JoshHeitzman · · Score: 2, Interesting

      Sigh, here we go again with the multiple inheritence argument. Multiple inheritence was almost *always* abused in the C++ days whenever it showed up to innapropriately compose unrelated classes for the sake of convenience and the utter violation of abstraction. The few legitimate uses of multiple inheritence, which are rare enough that I cannot think of them off the top of my head, can almost certainly achieved by alternative object oriented means in both Java and .NET in ways which do not carry the same potential for abuse or ambiguity.

      Hmm, maybe like interface implementation inheritance, as I already said. Mixins is another. Every general programming language has features that can be "abused" and crappy code can be written in any language and I've seen plenty of it in C# and VB as well as C and C++.

      Name a feature of C++ templates (other than multiple inheritence) that cannot be done in .NET with generics. I really tried to think of one, but I couldn't come up with a meaningful example.

      I named one in the quote your statement is a response to "policy based design". Another is metaprogramming. If I remember correctly you also can't even do single inheritance through generics (i.e. have a class with its base class being specified by one of its generic parameters).

      Is that your own terminology?

      Nope typo. Should have been RAII rather RIAA.

      There is not a direct comparison because destructors in garbage collected languages, such as .NET languages and Java, do not serve the same purpose as they do in manual memory management languages such as C and C++. In .NET the destructor, if one is implemented, is compiled into the Finalize method which is called by the garbage collector and not manually by the programmer. It is pointless to argue that .NET and Java do not include a feature of manually managed memory languages which is not needed because garbage collection serves the same purpose by different means.

      Sure there is. Memory is only one of many, many kinds of things that is acquired and released, and many of these things can not be allowed to hang around until the gc gets around to finalizing the instance then the client of the instance ends up having to Dispose or Close or whatever to get it done immediately after they are done using it.

      Here it comes, the car analogy: Both a manual transmission and an automatic transmission both shift gears so does it really make sense to argue about the details of *how* that happens as long as the gears get shifted? In most cases the answer is no. nitpick .NET all you want, but name another platform besides Java which includes half as many features or has a standard library which is half as complete.

      By platform I'll assume you mean the runtime since you also mentioned standard library. I'd say the python interpreter has half as many as the .Net runtime. As far as standard library completeness goes I'm not of the opinion that a standard library should be to choke full of features myself. The more important thing to me is what the libraries that are readily available for the language will let me do and the libraries that are readily available for python are quite broad.

      --
      Software Inventor
    51. Re:Long Answer? by Anonymous Coward · · Score: 1, Funny

      He didn't write them twice, Clippy did.

    52. Re:Long Answer? by radio4fan · · Score: 2, Informative

      Couldn't they even keep backwards compatibility via virtualization? Yes, that seems like the way to make real progress to me.

      And it's exactly how Apple supported OS9 when OSX came out.

      It worked very well for the vast majority of programs.
    53. Re:Long Answer? by arkhan_jg · · Score: 5, Informative

      This is theoretically the plan with windows 7. A new, clean minimal and modular OS based on the server line, without binary compatibility for old apps, with a new API for the new OS. Instead, there will be a separate backwards compatible API for a set of monolithic libraries providing all the old functions - same principle as Classic on OSX. Old apps will run as before, but through a compatibility layer to the new OS, while apps can be recompiled to talk directly to the new API, and presumably take advantage.

      IE's rendering engine can go in the legacy libraries for old apps, for example, while being a modular component that's fully removable in the new OS (thus keeping the EU competition comissioner happy)

      That's the theory anyway. Whether MS manage to pull it off is another question.

      --
      Remember kids, it's all fun and games until someone commits wholesale galactic genocide.
    54. Re:Long Answer? by Ex-MislTech · · Score: 1

      "Couldn't they even keep backwards compatibility via virtualization?"

      Yeah they recently announced that they are going to focus hard
      on virtualization, and I am guessing the Novell ppl will hand
      then the keys to some stable source code to make an OS that
      is a tad *nix like and amazingly stable for some odd reason...

      --
      google "32 trillion offshore needs IRS attention"
    55. Re:Long Answer? by Yetihehe · · Score: 1

      When mac users/programmers say "Our platform is great!", windows users/programmers don't say "Ours is too!", but rather insist on "No, you suck!". Its always the same story. Just thought I'd point it out. Here is what I say: "Get a friggin' life! If your OS is so great, then there is no reason to say how every one else sucks because they think theirs is too."
      Have you heard about realists? Like, people who see the world as it is. Windows sucks, Mac sucks too, but Mac is shiny and have Steve Jobs. There are Mac fanbois, who tell you "It is greatest invention since sliced bread". But we windows users (I'm using windows now, and don't really like it, but I use it because there are many programs which run on windows (and this is my work laptop ;) ) ) see that macs are not really that much better, and are irritated by fanbois. I use also ubuntu at home, and see it is not really that much better than other systems. Summary: operating systems are not really where they should be in terms of usability. So show me a system which doesn't suck, and I'll show you it was developed for vacuum cleaners.
      --
      Extreme Programming - Redundant Array of Inexpensive Developers
    56. Re:Long Answer? by nguy · · Score: 2, Insightful

      it's been well documented that MS went back on their word to build a .Net based OS that started fresh.

      And this is different from OS X... how? Apple has no intention of abandoning Carbon, its old, hairy Win32 equivalent. And Cocoa itself is just a slightly cleaned up NeXTStep. So, it's not like Apple has these magical, shiny, new APIs either.

    57. Re:Long Answer? by nguy · · Score: 2, Insightful

      If you can't even read his argument without getting mixed up, then your future is in trouble. (OTOH you have a bright future as a Slashdot poster. Not reading TFA is henceforth passé; reading it and getting it entirely wrong is the new standard.)

      No, he is saying that the argument is confused because it mixes up Win32 and .NET. That's a problem with TFA.

      If you want to compare Windows and OS X as modern platforms, you need to compare the modern APIs, that is, .NET against Cocoa, nothing else.

    58. Re:Long Answer? by CodeBuster · · Score: 1
      metaprogramming is available via attributes and reflection in .NET and generics are fully supported with inheritence. As for policy based design you can achieve essentially the same result with interfaces and the strategy pattern. It is also possible to constrain the types of generic parameters to particular interfaces or base classes with generic constraints.

      (i.e. have a class with its base class being specified by one of its generic parameters).

      You mean like this:

      public class foo[T] : bar[T] where T : bar[T] { } // substitute angle brackets for square brackets in actual .cs file.

      That is legal in .NET, it is an example of generics with constraints.

      many kinds of things that is acquired and released, and many of these things can not be allowed to hang around until the gc gets around to finalizing the instance

      Unless you are programming something like real time systems this is rarely a big deal. I have never had a problem with garbage collection. Now, granted some programming techniques lean more heavily on the garbage collector than others, but with prudent use of the new for object creation and using (to ensure that dispose and by reference close on streams gets called as soon as you are done with the resource) it has not really been an issue for me. A well written .NET program can be very fast and have very efficient memory usage.

      It is my experience that the practical usefulness of features like manual memory management and multiple inheritence are frequntly over-stated by those favoring C and C++. It is cherry picking unless your work frequently involves those optimizations and they are critical (which is not the case in most programming tasks).

      As far as standard library completeness goes I'm not of the opinion that a standard library should be to choke full of features myself. The more important thing to me is what the libraries that are readily available for the language will let me do Then you should really like platforms like .NET and Java which have standard libraries that let you do just about anything and are readily available as part of the platform. On the one hand you prefer smaller libraries but on the other hand you care about how many features are provided by those libraries. It seems to me that those are opposite goals.

      and the libraries that are readily available for python are quite broad. I will admit that I have heard some good things about Python, but I have hear even more good things (and know from first hand experience) about .NET.
    59. Re:Long Answer? by nguy · · Score: 1

      Again, I totally agree. The .NET Framework class libraries and the C# language are the definition of "The Right Way" to organize and structure code. They are technically sophisticated, architecturally beautiful, and make use of all of the best ideas at the culmination of nearly three (3) decades of object oriented programming theory and software engineering.

      That's not necessarily a good thing, however: much of OOP and software engineering is ivory tower ideas that often don't work out in the real world. Look at the decades of failed S/E ideas about how to manage project and ensure correctness.

      I think, on balance, .NET is still better than Cocoa. But all that OOP theory and software engineering that has gone into .NET has made it a worse platform than it could be, and I can see why some people prefer Cocoa.

    60. Re:Long Answer? by SanityInAnarchy · · Score: 1

      With repsect Somehow, I don't feel very repsected.

      .NET and Java are really just about as far from the minimalist approach of C as one can get. .NET and Java and virtual machine languages are all about abstraction while in C there really was no abstraction, it was and is designed to run as close to the hardware as possible. And you don't seem to know anything about the history of C. It was designed, and was regarded for its time, as a high level language. People had to be tricked into using it -- they thought all those function calls would be incredibly slow.

      And they were right, but by then, there was no way anyone wanted to go back to an entire OS written in asm, even if the new OS spent half its cycles doing nothing but the mechanics behind function calls.

      As for distributing your own version of the standard .NET libraries that really doesn't make much sense. Yeah, it'd be like distributing C without the standard C library, or with a custom version of it.

      Oh, wait...

      And by the way, people are doing this for .NET, too. Mono tries to provide as many of the APIs as they can, I think, but they also provide enough native bindings that it's possible to treat C# as just another language for Linux. Beagle, for example, is written in C#.

      Looking at .NET as the 'new C' is, at least IMHO, the wrong view. Both .NET and Java are descended from the C branch of languages, but they really are moving well beyond that You're missing the point. It's not that I think they are at all related to C, as a language or a platform, beyond the very simple fact that Microsoft is trying to build a platform on top of .NET, the way Unix is a platform on top of C. They may be failing in that sense, but it does seem to be a goal -- right now, most high-level languages have compilers/interpreters written in C, at least to bootstrap the effort. Is it so hard to imagine a world where the same is true of some common bytecode VM?
      --
      Don't thank God, thank a doctor!
    61. Re:Long Answer? by Jesus_666 · · Score: 2

      Given that we're talking about Microsoft they will probably make the new API also point to the compatibility libraries because either they couldn't finish the new framework on time (see the Vista featureset) or it'd be too slow (see Vista being based on .NET).

      They do have a chance of making Windows 7 great, but after seeing all their recent developments being neither the savior some anticipated, nor the devil incarnate others anticipated but instead solid mediocrity... Let's just say I think it's safe to assume more of the same for Windows 7.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    62. Re:Long Answer? by OeLeWaPpErKe · · Score: 5, Interesting

      So let's hear it ... is xcode a real competitor to visual studio ?

      Because let's be honest, while I use linux all the time, and I contribute every now and then to a number of linux apps. But I don't kid myself that anything that can run on linux (whether kdevelop or eclipse, or *even* vim) is half as good as visual studio.

      And it's still the only real dev platform for smartphones and pda's. I have a maemo device, which is nice. But developing for it is a bitch to say the very least.

    63. Re:Long Answer? by Jesus_666 · · Score: 1

      It's not hard to imagine, but only if the VM is a relatively static target. It's possible to write a compiler against a published standard that won't change for ten or so years but much harder to write against a format that might change every few years whenever the sole developer decides to extend the platform.

      Once Microsoft gives up its sole control over .NET and hands it over to ISO (and sticks to whatever ISO does with the platform) we might see .NET become an industry-wide basic standard much like C is now. But as long as .NET remains a business asset I think it's not going to happen.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    64. Re:Long Answer? by vipw · · Score: 4, Informative

      Apple IS abandoning Carbon. There will be no 64-bit version of it http://arstechnica.com/staff/fatbits.ars/2008/04/02/rhapsody-and-blues, so no one is going to be using it before long. Compare this to the current state of .NET, where developers have to constantly mix in win32 calls to do anything but the most basic applications. My own personal experience with .NET is only a few months, but I have had to use Win32 API a lot.

      And NeXTStep is a magical, shiny, new API compared to Win32, which is the biggest mess I've ever seen. Admittedly, I'm used to simpler systems like UNIX.

    65. Re:Long Answer? by JoshHeitzman · · Score: 1

      metaprogramming is available via attributes and reflection in .NET and generics are fully supported with inheritence. As for policy based design you can achieve essentially the same result with interfaces and the strategy pattern. It is also possible to constrain the types of generic parameters to particular interfaces or base classes with generic constraints.

      Attributes and reflection only provide a very limited subset of metaprogramming, and they definitely don't allow the compiler itself to be effectively programmed as can be done with C++ templates

      You mean like this:

      public class foo[T] : bar[T] where T : bar[T] { } // substitute angle brackets for square brackets in actual .cs file.

      That is legal in .NET, it is an example of generics with constraints.


      No I mean like

      public class foo[T] : T

      I have it on good authority that what I mean did not work in 2005. Maybe things changed in 2008. Don't know.

      Unless you are programming something like real time systems this is rarely a big deal. I have never had a problem with garbage collection. Now, granted some programming techniques lean more heavily on the garbage collector than others, but with prudent use of the new for object creation and using (to ensure that dispose and by reference close on streams gets called as soon as you are done with the resource) it has not really been an issue for me. A well written .NET program can be very fast and have very efficient memory usage.

      It can be a problem in non-real time systems regarding the use of scarce resources (IP ports, database connections, etc.) or for resources for which multiple threads or processes need to share access. Prudent use of using is still a requirement on the client to do something to release the thing just as its a requirement on the client to do something to release memory.

      A well written native application can be even faster and use memory more efficiently as well being both crash free and memory leak free.

      It is my experience that the practical usefulness of features like manual memory management and multiple inheritence are frequntly over-stated by those favoring C and C++. It is cherry picking unless your work frequently involves those optimizations and they are critical (which is not the case in most programming tasks).

      Lots of language have multiple inheritance but C quite notably does not. I use MI to good effect in Python as well as C++. The benefit of multiple inheritance isn't (usually) performance optimization its developer productivity. As far as manual memory management goes I've already mentioned RAII and I'd rather use a smartpointer then manually manage memory.

      Then you should really like platforms like .NET and Java which have standard libraries that let you do just about anything and are readily available as part of the platform. On the one hand you prefer smaller libraries but on the other hand you care about how many features are provided by those libraries. It seems to me that those are opposite goals.

      There is the standard library (singular) for a language and then there are the libraries (plural) readily available to that language which are not limited to just the one standard library. The breadth of things that are provided by the readily available libraries of any mainstream language absolutely dwarfs what is in the standard library for that language. That's my point I don't care what's in the standard library specifically, I care what is readily available across the board regardless of the source (i.e. proprietary but cheap, free as in beer, etc.). There is not shortage of libraries for either C++ or Python.

      --
      Software Inventor
    66. Re:Long Answer? by remmelt · · Score: 1

      Now that's a great idea... Where have I heard that before?

    67. Re:Long Answer? by hatchet · · Score: 2, Insightful

      I don't think Microsoft wanted to be backward compatible, people - users wanted backwards compatibility.

      It was same thing with processor architectures amd (x64) vs intel (IA-64). Intel's IA-64 (Iteron) is FAR superior architecture (256 GPR, register rename, register splitting, multiplexed operations, etc...) with no 8, 16 and 32-bit register functions for backwards compatibility. (Usage of emulator or additional 32bit core can be used to overcome this)

      While x64 was just extension over IA-32 and current processors (Intel or amd x64) still have 8 and 16bit support functions (add ax, bx).

      It happened because of you - users, who wanted to run your current (old) applications on new platform. Everyone loses, because we're using inferior architecture that supports 30year old applications. (yes, x64 is backwards compatible with 8088 processor which is asinine)

    68. Re:Long Answer? by dangitman · · Score: 1

      Wait a minute, what is this "shutdown" feature you speak of?

      --
      ... and then they built the supercollider.
    69. Re:Long Answer? by Chris+Oz · · Score: 1

      Have you ever used Cocoa? I would really take some convincing that .NET is better. In fact I will have to wait an see what an MS Office looks like under it before I am entirely convinced that it is prime time yet. On the other hand the are a number of substantial high quality Cocoa programs out their that show it works. The general consensus (including me) is that Cocoa is very easy to program and well thought out. You have to remember that it is also very mature. It is over 18 years old. Having said that there is very little cruft, something that you can't say about .NET yet. How many versions are there? 1, 1.1, 2? Are they compatible .NET is really a newer possibly shiner Java. Notice I didn't say better. It is still in development and certainly isn't even close to what they were originally promising. That is not to say it is a bad environment. Personally I like Cocoa (the frameworks). They are very consistent, simple and at the same time very powerful. I also think that Objective-C is a better OO C than c++. That would not be hard though. C# and .NET sound fine. Its just not available on the terms or the system that I want. Yeah I know about OS X locking, and a know about Mono (remember there is GNUStep as well). I have chosen my poison and the cool aid is great. By the sounds of it .NET is your.

    70. Re:Long Answer? by Anonymous Coward · · Score: 0

      Low level server architecture? What exactly are you referring to? There are only few things that actually need native code to run on - kernel, drivers/filters and hardware APIs
      And you would want cpu, memory and storage intensive operations to run in native code. But that's all been done already. Reinventing the wheel is a bad idea.
      I disliked .NET framework from the start, but when i was practically forced to work with it, i was pleasantly surprised. Even writing a Direct3D, SDL or openGL game in c#/.NET is ok. The performance is comparable with same code written in C/C++. And it's well worth sacrificing 10% of performance for having cross-platform application.

    71. Re:Long Answer? by Bake · · Score: 1

      And "under the hood" it's also calling 32bit x86 assemblies, what's your point?

      The point of any decent VM API/Framework like .net is that you shouldn't have to worry about the underlying calls.

      Sure, the .net framework may be calling Win32 under the hood right now, but there's no reason to believe that that can't be swapped out for Something Completely Different (tm).

      Of course, once you start using stuff like [DllImport] to directly access Win32 API, all bets are off and you are on your own for any future upgrades.

    72. Re:Long Answer? by SanityInAnarchy · · Score: 1

      It's possible to write a compiler against a published standard that won't change for ten or so years but much harder to write against a format that might change every few years whenever the sole developer decides to extend the platform. Which C did, quite a bit...

      You're right, but it seems like this is more an argument of stable vs unstable, rather than VM vs non-VM. That said, gcc does seem to break binary compatibility every 5-10 years.

      Once Microsoft gives up its sole control over .NET and hands it over to ISO I think that's the essential problem -- is there any chance Microsoft will do this?

      It's also a lose-lose situation, much like with OOXML -- if Microsoft doesn't turn it over, then it'll essentially be Microsoft's defacto standard, rather than a true industry standard. If Microsoft does turn it over, then there's a very good chance their implementation will be broken in many subtle ways, as they do with every standard they try to implement -- and because they're Microsoft, everyone else will have to adapt to them, even if it's not quite the standard.
      --
      Don't thank God, thank a doctor!
    73. Re:Long Answer? by hey! · · Score: 2, Interesting

      I always say: a developer who doesn't hate a platform just doesn't know it well enough.

      It follows that programmers that rush to the defense of a platform as being for practical purposes the ultimate one aren't worth listening to on that topic.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    74. Re:Long Answer? by ncryptd · · Score: 2

      The dirty little secret of Windows is that they already are doing pretty much that. Windows XP/Vista make use of something called WOW, short for Windows on Windows -- a compatibility layer that allows 16-bit apps to run on the 32-bit versions of NT. Unfortunately, this layer doesn't exist in 64-bit Windows -- at least not in its current 16-bit-supporting form. Instead, WOW provides 32-bit app support.

    75. Re:Long Answer? by DrPizza · · Score: 5, Insightful

      No, he is saying that the argument is confused because it mixes up Win32 and .NET. That's a problem with TFA. But the article doesn't do that, except when describing how details of Win32 leak into .NET.

      If you want to compare Windows and OS X as modern platforms, you need to compare the modern APIs, that is, .NET against Cocoa, nothing else. But you can't. MS has added new features to Win32 (and VC++/MFC), and MS is going to continue to do so in Windows Seven. For example, Vista has a new transacted (database-style ACID transactions, not just journalled) filesystem. .NET doesn't support it; you've got to use Win32 to use it. Even though .NET does have transaction support (for COM+ transactions and database transactions) it doesn't support TxNTFS. So you've gotta use Win32. Or how about an MS-supported ribbon control? You've got to use MFC, and in Windows Seven there should be a native code ribbon control as part of the OS proper. In both cases, no managed code.

      Having to drop into Win32 to call some legacy thing that no-one should really be doing but which you have to do for backwards compatibility, that I could sort of understand. But having to drop into Win32 to call new features that have only just been added? Anyone saying "stop using Win32, just use .NET" doesn't know what they're talking about.

    76. Re:Long Answer? by koh · · Score: 1

      Name a feature of C++ templates (other than multiple inheritence) that cannot be done in .NET with generics. I really tried to think of one, but I couldn't come up with a meaningful example. AFAIK, .NET generics cannot be partially specialized like template functions in C++. Also, last time I checked you could only specialize generics with types, not literals as in C++ templates. The boost library makes heavy use of quirky template tricks in order to implement things like anonymous lambda functions in plain C++. I don't think you can do the same things with .NET generics.

      That said, "advanced" C++ templates are far too complicated and dangerous to be relied upon except for really special cases. So .NET's middle ground is not that bad.

      --
      Karma cannot be described by words alone.
    77. Re:Long Answer? by DrPizza · · Score: 1

      Sure, the .net framework may be calling Win32 under the hood right now, but there's no reason to believe that that can't be swapped out for Something Completely Different (tm). Really?

      So you think that swapping out (let's say) the networking stack for something that doesn't use Winsock error codes will not break code?

      How about swapping out the WinForms implementation for something that doesn't use HWNDs and doesn't send window messages in the same order?

      Or implementing a crypto lib that doesn't call Win32's CryptoAPI or CryptoNG?

      Yes, you could probably do it, but doing it in such a way that doesn't break anything is going to be a struggle, don't you think?

      It's pretty clear from the design that .NET isn't actually designed to be all that cross-platform; MS has been quite happy to put thin wrappers around Win32 in various places, which severely constrains other implementations.

      Personally, I don't actually mind that it's not especially cross-platform; it makes little practical difference to anything most people write. I do wish they hadn't billed it as being cross-platform in the first place, though; it just makes them look stupid.

      What is more upsetting is that the platform it's tied to is so skanky.

    78. Re:Long Answer? by daveime · · Score: 1

      And what exactly will a 32-bit operating system DO with a 64-bit value returned all at once ?

      Even is there is some pseudoclass called "veryverylongint" or whatever, internally he's having to split / join as necessary everytime you want to do some math on it, increment or decrement it etc.

      This is the same as what happens to 16 bit apps that needs to run in a 32 bit environment ... he needs 32 bit values returned piecemeal anyway. That is what backwards compatibility boils down to in most cases, then handling of values that were never imagined at the time the original app was written on a "lower-bit" operating system.

      And as has been pointed out, there is a function in NET to return it all at once. So everyone is happy yes ?

    79. Re:Long Answer? by mgblst · · Score: 4, Funny

      You shutdown, that is so 2000.

    80. Re:Long Answer? by DrPizza · · Score: 4, Interesting

      I agree. It sounds to me like this guy used .NET for a year or so around 2002 when it was brand new and then left and hasn't looked again for the last six (6) years. He is the first person that I have heard accuse .NET of being "too simplistic". The .NET class library (and Java class library as well) is the definition of everything and the kitchen sink. These are extremly powerful languages and libraries that are if anything too complex.

      You seem to be confused between broad (.NET supports a lot of things, like sockets and cryptography and distributed transactions and GUIs and XML and oh my!) and powerful.

      .NET does a lot of different things, but .NET doesn't have the greatest underlying abstractions. For example, to name a few:

      • IList requires integer indexing. This makes it unsuitable for some kinds of sequential collection such as linked lists, which have no acceptable way of implementing integer indexing. Consequence? IList, whose documentation proudly claims to be "the base interface of all generic lists" is not, in fact, "the base interface of all generic lists". LinkedList does not implement IList.
      • IList has no ToArray, but List does. Sure, ICollection has Count/CopyTo, but if the convenience method is good enough for List, it's good enough for IList. OTOH, if the convenience method is unnecessary for IList, it's unnecessary for List.
      • Except for to confuse me, why do ICollections have a Count, when arrays have a Length? What's the meaningful semantic distinction that I'm missing here?
      • Why do arrays have LongLength but with no corresponding LongCount for ICollections (3.5 adds LongCount as an extension method, but that gives it inconsistent (method) syntax, and of course it can never work because even if the collection were extended to support long lengths, an extension method can never exploit that fact, because the extension just works on IEnumerable which supports only an int Count)?
      • Why do arrays have LongLength, and not simply have Length be a long? It surely didn't take a whole lot of foresight to figure that one out, did it?
      • Where do I find reverse iteration/enumeration?
      • Where do I find bidirectional iteration/enumeration?
      • Why does the LinkedList expose implementation details such as LinkedListNode to users?
      • Why is there no generalized mechanism for storing my position in a container?
      • Why does HashSet have no ISet interface?
      • Why is there no SortedSet?
      • Why is System.Collections.ObjectModel not System.Collections.Generic.ObjectModel given that it is, in fact, for generic collections?)
      • Why are there no static type-inferencing factories for read-only collections or singleton collections? When you have generics, factory methods are good, because factory methods can infer. Don't make me type IList myReadOnlyList = new ReadOnlyCollection(myList); the double specification of the type is spurious.
      • Why is it named ReadOnlyCollection when it is in fact a IList?
      • Why is there no true ReadOnlyCollection (i.e. that is actually useful for collections)?
      • Why is it named SynchronizedCollection when it is in fact an IList?
      • Why is there no true SynchronizedCollection (i.e. that is actually useful for collections)?
      • Why is there no deque class?
      • Why is there no IStack?
      • Why is there no IQueue?
      • Why do Stack and Queue hardcode their backing store, even though the performance profile may be better off using e.g. a linked list, deque?
      • Why is KeyedByTypeCollection so widely useful as to even exist?
      • Where do I find an equivalent to java.util.concurrent? Anyone suggesting SynchronizedCollection, please punch yourself in the face right now.
      • Why are there new (.NET 2.0) classes that use old (non-generic) types, e.g. System.Net.Mail.MailMessage.Headers, which uses NameValueCo
    81. Re:Long Answer? by Anonymous Coward · · Score: 0

      Intel's IA-64 (Iteron) is FAR superior architecture
      Itanium. You seem to be thinking of the AMD Opteron.

      "superior" is stretching things a bit, too. IA-64 is a VLIW (EPIC) architecture which promised increased performance but relied on compilers doing a lot of the dirty work for it (instruction ordering, mostly). It turns out that compilers aren't very good at doing that sort of thing, and advances in hardware out-of-order execution and branch-prediction pretty much eliminated any benefits VLIW should have brought.

      It also didn't help that Intel couldn't bring down price and power consumption to match existing IA-32 systems.

      That's why Itanium is failing (or already failed). Not because x86-64 is "better" but because it's "good enough", and as has been proven time and time again, good enough tends to win. The real shame is that companies like HPaq jumped aboard with Intel and killed off both PA-RISC and Alpha, both of which were pretty nice architectures in their own right, in favour of Itanium. So these days we're pretty much down to IA-32, x86-64, SPARC and POWER.
    82. Re:Long Answer? by DrPizza · · Score: 1

      <quote>Name a feature of C++ templates (other than multiple inheritence) that cannot be done in .NET with generics. I really tried to think of one, but I couldn't come up with a meaningful example.</quote>
      Then you're really not thinking very hard; apart from some slight syntactic similarity, .NET generics are a totally different beast to C++ templates (both have their virtues, and both are useful, but they do very different things). Here's something I'd like to be able to do in .NET; something that's trivial with templates (this code is only a rough approximation as I don't have a compiler to run it through, but it's enough to give you the idea):

      template<typename T>
      struct complex
      {
          T real;
          T imaginary;

          complex(T r, T i) : real(r), imaginary(i)
          {
          }

          complex<T> operator+(const complex<T>& rhs)
          {
              return complex<T>(r + rhs.r, i + rhs.i);
          }

          complex<T> operator*(const complex<T>& rhs)
          {
              return complex<T>((r * rhs.r) - (i * rhs.i), (r * rhs.i) + (i * rhs.r))
          }
          // etc.
      };

    83. Re:Long Answer? by Anonymous Coward · · Score: 0

      > That said, gcc does seem to break binary compatibility every 5-10 years.

      You must be confusing C with C++. I am not aware of a single incompatible ABI change for C (unless you count some special compiler options), whereas C++ has had enough issues in that regard to hate it for it.

    84. Re:Long Answer? by nschubach · · Score: 1

      I have my task bar at the top at work because that's where my mouse spends 75+% of it's time. Think about it. Your menus, tool bars, everything is at the top of the screen. It's less mousing that way. (And I don't own a Mac. Never have.)

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    85. Re:Long Answer? by Evil+Kerek · · Score: 1, Insightful

      I've been programming for over 20 years and yes, it's mostly MS bashing.

      First off, you're obviously an MS basher (MS languages vs good languages? oh you mean C++?) Not sure what word you think MS went back on. .NET is pretty cool. The IDE still needs some work, but it's one of the better ones I've worked in. C# is quite cool.

      Past that..did you actually just suggest that MS scrap backward compatibility? Are you serious? Yes, the linux zealots would love that - they might actually have a chance at a desktop...because of the user revolt. I mean, you are suggesting that a company PISS OFF a good portion of it's base users. ROFL - so that's what linux needs to be on a level playing field? Weak, man, weak. That's a new approach...let's see...eliminate your base so we have a fair chance at the desktop. Please. Obviously you don't run a business.

      One of the main reasons Windows is the way it is, is BECAUSE of the backward compatilibity requirement. If Linux actually HAD some desktop penetration, it too would have to cater to the businesses and people running 15 year old software that they can't seem to get rid of. But, alas, that's not much of a problem, is it?

      Personally, I use whatever works - and it's alot easier to make money in the windows world. Say what you want, but if I'm going to write desktop software, I'll pick the desktop with the most users.

      Your reply should be modded 'pandering'.

      EK

    86. Re:Long Answer? by nguy · · Score: 1

      Have you ever used Cocoa?

      Yes.

      In fact I will have to wait an see what an MS Office looks like under it before I am entirely convinced that it is prime time yet.

      Neither you nor I are going to be writing MS Office and that's simply not a good criterion. The measure of a toolkit is whether it makes implementing the day-to-day simple GUIs and software people need to implement simple. Note that MS Office is not written in Cocoa either.

      I also think that Objective-C is a better OO C than c++.

      That's true, but a pretty low standard. In the end, Objective-C is still a C-derived language with all the problems that that entails. Objective-C was a poor man's Smalltalk, a compromise that made sense 20 years ago, but doesn't make sense anymore.

      By the sounds of it .NET is your.

      No, not really. If I had to choose, I'd prefer writing .NET over Cocoa (I tried both). Most of my stuff, I do in Python and Gtk+, which is far more pleasant than either .NET or Cocoa/ObjC programming.

      Since Apple is stuck with Cocoa's API syntax, their best bet would be to buy themselves a good Smalltalk implementation and move mainstream development over to that, with the option of dropping into Objective-C when necessary.

    87. Re:Long Answer? by murdocj · · Score: 1

      I read about half of the article, and decided he wasn't making a whole lot of sense, and gave up.

      He started off by bitching about how .Net was supposed to be the solution, and wasn't. Then he brought up issues with 64 bit Windows that were irrelevant.

    88. Re:Long Answer? by Doctor+Faustus · · Score: 1

      Give MySQL and PostgreSQL a spin.
      I'll be trying PostGreSQL a try when I find some time, but I don't really expect to ever be able to make a living with it. I've used MySQL, and I don't like it.

    89. Re:Long Answer? by jeremyp · · Score: 4, Informative

      So let's hear it ... is xcode a real competitor to visual studio ?

      No it's not. I've been using Xcode for several years and I still haven't figured out how to build a Windows application with it. Conversely, Visual Studio cannot be used to build a Macintosh application either. The two IDEs are used for different tasks so they can never be competitors.

      Is Xcode as good for developing Mac applications as Visual Studio is for Windows applications. I think probably not. It has some superior features (NB the most recent version of VS I have used is 2005 so my knowledge may be out of date). It has some features I like better than VS but that''s probably because I prefer the Mac environment. It has some features that are worse than VS. The debugger is the worst of these IMHO.

      On balance Visual Studio is a far better developer environment, but that counts for nothing if you are trying to write a Mac GUI application, in which case Xcode is the only game in town as far as I know.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    90. Re:Long Answer? by BasharTeg · · Score: 2, Insightful

      No, he doesn't. Read about how he claims that the form thread synchronization mechanism is broken in .NET and will sometimes lie to you about what thread you're in which will cause your application to crash. This of course is news to us .NET developers who use the form thread synchronization in all of our multi-threaded applications and don't experience the FCL "lying" to us and we don't experience crashes because of false impressions that we're in the form thread. This is the kind of bug report I'd expect from a first year computer science student learning how to do form thread synchronization for the first time. His statements are complete horseshit, and it shows that this retard can't even accomplish the most basic tasks in .NET. Therefore, I ask who the hell is he to write a review of .NET versus Cocoa?

      I think we could easily make that a litmus test for writing an article comparing the .NET platform to any of the other great platforms out there like Java and Cocoa:

      If you can't figure out how to do basic form thread synchronization to allow worker threads to safely update your form's controls without claiming there's a flaw in the foundation class library, you are not qualified to write an article about .NET programming.

      I won't even start on his biased slamming of enterprise systems development. It's clear that his knowledge of software engineering is limited to applications and he should just keep all other software engineering topics out of his mouth.

      I'm sure Cocoa is an awesome enough development platform without needing this dumb ass to promote it through FUD and lies. I'd like to see him actually back up his claimed flaws in .NET with real code samples demonstrating them so we can point out his obvious errors and what a tool he is.

    91. Re:Long Answer? by chriseyre2000 · · Score: 1

      Generics in C# are sufficient for the collection class scenarios. Anything that is not required for that has been left for a later version - which has not yet been released/announced. This is not to say that it is not a powerful construct - just don't try to implement all of the clever C++ template design patterns.

    92. Re:Long Answer? by dctoastman · · Score: 1

      I only take issue with the idea that C#/.Net represent the "Right Way" to do things.

      Having your program's entry point be a static method of a class is not what I would consider the "Right Way". Double for the fact that if you do instance the class, you can't use the main function. I prefer the C or Perl convention where you single out one function for your entry point, or your program's entry point is the top of the file.

      Having said that, I like System.Collections.Generic

    93. Re:Long Answer? by Fred_A · · Score: 2, Funny

      I think the giveaway is when he says a screen shot is worth a thousand words, then his screen shot is of vista with the taskbar at the top, Im not saying nobody has the taskbar at the top but its just one of many signs that hes a fan of apple. Uh ? I thought that his wearing pants was a sure sign that he was a fan of apple.

      (makes note to move the KDE kicker down to the middle of the screen so as not to be branded a fan of anything)
      --

      May contain traces of nut.
      Made from the freshest electrons.
    94. Re:Long Answer? by asc99c · · Score: 4, Funny

      You're missing the 20% 'why on earth is it shutting down now' times.

    95. Re:Long Answer? by BasharTeg · · Score: 1

      "But the article doesn't do that, except when describing how details of Win32 leak into .NET."

      The article didn't actually describe any accurate parts of Win32 that leak into .NET, except that WinForms is based on the WinProc event model of GUI development. That's one of the many valid ways to implement GUIs, and there's no reasoning as to why this isn't a valid design decision for Microsoft to make. Other than that, he points out a bunch of flaws in Win32 and implies that they "leak into .NET" but he fails to actually demonstrate any of them. On top of that, he makes several false statements including his claims that .NET's form thread synchronization somehow "lies" to you when you're checking whether or not you're in the form thread. He's obviously ignorant of the platform in question and can't back up any of this FUD with actual technical descriptions or code samples of what he's claiming is broken and where Win32 ACTUALLY leaks into .NET. This is FUD-fest 2008 and that's all there is to it.

      Further, your arguments that somehow cutting edge enhancements like Vista's new TxNTFS should magically appear in .NET by now make no sense to me. If Microsoft were updating .NET that rapidly I wouldn't be interested in using it. .NET doesn't replace Win32 for EVERYTHING, and nobody but people spreading FUD are saying it does. That's a straw man argument that both you and the author of the article have setup. Any program that uses TxNTFS features shouldn't be written in .NET, and features like that will obviously take time to be introduced into a managed platform anyway.

      The stupidity of your statement is similar to "Java sucks because I can't do ZFS transactions, I have to actually write C if I want ZFS transactions." What? Sun didn't immediately release a new version of Java with ZFS functionality included in the FCL upon the release of ZFS itself?! They expect you to pinvoke/JNI?! ZOMG!!!!

    96. Re:Long Answer? by jeremyp · · Score: 1

      Aside from that...not happy with with the windows UI standards? Everyone else seems to be.
      Actually, if you read the article, you'll realise that his point was that Microsoft's own developers seem to be unhappy with their UI standards as illustrated by many of their own applications that don't adhere to them.
      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    97. Re:Long Answer? by Fred_A · · Score: 2, Interesting

      Code first, design later. For example, I note with interest the amount of pain involved in trying to provide server protocol documentation for the EU. Some of the foot dragging is deliberate but some of it is that they don't have quality internal documentation. IMO, at heart, Microsoft is still a hobbyist software company that has grown obese. You'll never find the proper documentation that a professional company such as IBM or Sun puts out. Either of those could have drowned the EU under tons of ad hoc docs if they had been in MS's shoes.

      I too believe that Microsoft just doesn't have any docs, it's not in their culture. It feels like they're still a PC (as in "toy computer") company that hasn't upgraded their way of doing things. The others may have moved to the PC as serious platform but a lot came from the big iron or the workstation markets where that kind of sloppiness just wouldn't do.
      It really showed when looking at their documentation site which regularly used to border on the surreal back when I had to use it. Supposedly it improved a bit, although I still believe that this opinion is from people who have never seen a properly documented environment (I might be wrong of course, I'm lucky enough to be able to stay away from MS stuff nowadays).
      --

      May contain traces of nut.
      Made from the freshest electrons.
    98. Re:Long Answer? by Goaway · · Score: 1

      Even if you hate all platforms, that doesn't mean you can't think one sucks less than another, or that one sucks less than all others.

    99. Re:Long Answer? by DrPizza · · Score: 4, Insightful

      The article didn't actually describe any accurate parts of Win32 that leak into .NET, except that WinForms is based on the WinProc event model of GUI development. That's one of the many valid ways to implement GUIs, and there's no reasoning as to why this isn't a valid design decision for Microsoft to make.

      Well, there is a good reason why it's not valid: because it makes .NET developers give a damn about HWNDs, message pumps, and the interactions between the two.

      Other than that, he points out a bunch of flaws in Win32 and implies that they "leak into .NET" but he fails to actually demonstrate any of them.

      Off the top of my head we have, for example:

      • the entire crypto lib (including e.g. certificate handling as well as core crypto functions)
      • SSL handling equally has Windows-specific portions
      • SocketException (especially ErrorCode)
      • Socket.UseOverlappedIO
      • Socket.IOControl
      • System.ServiceProcess.* (this stuff should be in Microsoft.whatever, not System!)
      • System.Management.* (ditto)
      • System.Data.SqlClient.*, System.Data.OracleClient.* ((a) the core interfaces should be better (b) the vendor-specific providers should not be in System)
      • The "Handle" properties found in e.g. Socket, FileStream, and the aforementioned System.Windows.Forms
      • Large tracts of System.EnterpriseServices

      Win32isms are abundant.

      Further, your arguments that somehow cutting edge enhancements like Vista's new TxNTFS should magically appear in .NET by now make no sense to me.

      Let's just recap the argument, shall we?

      1) Claim: Win32 is clunky and horrible

      2) Response: Write in .NET

      3) Claim: .NET can't do everything Win32 can do, forcing me to use Win32

      4) Response: "your arguments [...] make no sense to me"

      Look, if the argument is going to be "Don't use Win32, use .NET" then .NET has to do all the things that Win32 can do. So which is it?

      Either I should be using .NET--in which case MS's failure to add new Win32 features to .NET is a problem--or I should be using Win32--in which case "use .NET" is not a suitable response to cited flaws with Win32. You can't have it both ways, so which is it to be?

    100. Re:Long Answer? by sqlrob · · Score: 1

      When did it get the filesystem? I thought that was one of the things that was dropped.

    101. Re:Long Answer? by kannibal_klown · · Score: 1

      First off, you're obviously an MS basher (MS languages vs good languages? oh you mean C++?)
      Perhaps he means things like MFC and the like. Not languages, but APIs used to write native Windows applications. I haven't used MFC in maybe 5 years, but from what I recall (from back then) it was kind of a pain and counter-intuitive.

      I agree about C#, from what little I've done with it, it is quite nice.
    102. Re:Long Answer? by encoderer · · Score: 1

      Pesonally, I don't think .Net will ever be ported to a different underlying platform, but there's no technical reason that it couldn't be.

      There's absolutely no reason why the thin wrappers that you (correctly) point out couldn't be turned into more complex abstraction layers.

      Now, I think this will never happen because it's not what .Net was designed for. It's never been sold as a future-proof platform that will carry binary compatability far past the win32 days.

      It's merely a much better organized and standardized interface to the API.

    103. Re:Long Answer? by CastrTroy · · Score: 3, Funny

      I guess what they need is WOWOW. Which would be Windows On Windows On Windows. Just run the WOW 32-16 bit layer one the WOW 64-32 bit layer, and all your problems are solved.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    104. Re:Long Answer? by Jesus_666 · · Score: 1

      Actually, that's my entire point. VM versus non-VM has nothing to do with it; it's all about standardization. I expect .NET and its VM to remain what Objective-C is: A language that can be (and is) used everywhere but only really makes sense on its home OS. It'll be a bit better because unlike ObjC people on other platforms actually care about .NET, but it's not going to be the next C for a long time.

      As for the GCC breakage issues: Those are GCC issues, not general C/C++ issues. Even C99 is almost a decade old now.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    105. Re:Long Answer? by gbjbaanb · · Score: 1

      It is my experience that the practical usefulness of features like manual memory management and multiple inheritence are frequntly over-stated I used to think this (about MI), who uses it.... but then I joined a larege company that wrote pretty big enterprise software, who used Analysts who really did a lot of design work (in UML, rather them than me), and they used MI *all* the time. Its pretty obvious when you come to think of it (ie when you've sat down and designed a big system from a logical point of view).

      That most people do not use it only shows the 'simple' nature of most applications they write, in languages that do not support it. I know it can be abused, but if you're a professional who knows what you're doing, then its pretty damn powerful. Seriously so.

      As for automatic memory management, this is a big failing of GC languages where objects contain anything other than memory. eg. GC is fabulous for string classes, but for a DB class or a file class, or network class they are next to useless. Any 'elegant and beautifully designed' language that has GC fails in these cases - where's the 'elegance' of a OO language where you have to manually close (or 'dispose') of the object by hand or the resource remains in use until the object eventually gets freed. That's not Object Orientation in my opinion, its Structured Programming with classes.

      If you're interested in knowing how 'interesting' the underlying .NET code is, you need to read Chris Brumme's weblog. He was part of the team that designed the CLR, and he tells all about it - both good and bad. Unfortunately, some of the bad really doesn't fit with the 'best practices' other parts of the MS marketing machine instructs you to use. eg. exceptions - I was told that exceptions are totally free in .NET, the language took care of them, there was no overhead whatsoever. Turns out that's not quite true. eg: Consider some of the things that happen when you throw an exception:

              * Grab a stack trace by interpreting metadata emitted by the compiler to guide our stack unwind.
              * Run through a chain of handlers up the stack, calling each handler twice.
              * Compensate for mismatches between SEH, C++ and managed exceptions.
              * Allocate a managed Exception instance and run its constructor. Most likely, this involves looking up resources for the various error messages.
              * Probably take a trip through the OS kernel. Often take a hardware exception.
              * Notify any attached debuggers, profilers, vectored exception handlers and other interested parties.


      The stuff he wrote is pretty old now, but I can't see much of it changing in the CLR. Like COM before it, I can see .NET becoming full of cruft (check out his posts on Application Hosting in IIS and SQL Server).
    106. Re:Long Answer? by plague3106 · · Score: 1

      No, he doesn't have a point. He complains that WinForms is single threaded. Then he explains the perfectly valid reason why. He claims vaguely that sometimes you're told you are on th UI thread when you're not. Really? Can he reproduce it? Is there some say to show that's what happening? Because I do background threads all the time so my UI doesn't block, and I've yet to hit that problem.

      Then he complains that depreciated functions are still in Win64. Well gee, I wonder why.. maybe so that older applications can still run? Ya, maybe they should have a file size that's a single 64 bit integer. Except in .Net there is a method that does this, and if you're in the Win32 world I can't image developers haven't wrapped the combination in a helper method.

      Then he complains that notepad has Save, Don't Save, and Cancel buttons, but other MS products don't. Again, they probably should.. but the new buttons REQUIRE Vista. So you need to know what OS you're on to get these new buttons. Is there a lot of benefit to doing the check? Probably not. Oh, and he purposefully picks VS2005 instead of VS2008. Is that because he'd have to drop VS 2008 from his list of "bad" applications?

      Then he wraps it up and says "well, MS dropped the ball with developers?" Nonsense. Pretty much ALL of the MS developers are very excited about the newest .Net framework release. Most are trying hard just to learn all the new tech that has come down.. Linq, lambda expressions, extension methods, anonymous types, Wpf, Wcf, Wf.

    107. Re:Long Answer? by nine-times · · Score: 1

      Maybe that could just contribute to WINE and then install it on their new OS.

    108. Re:Long Answer? by Lincolnshire+Poacher · · Score: 1

      > Im not saying nobody has the taskbar at the top but its just one of many signs that hes a fan of apple.

      Every other menu in the Windows GUI drops-down from the top. Why should the Start Menu break that paradigm?

    109. Re:Long Answer? by pohl · · Score: 1

      Can't one be a realist, weigh the relative merits of the two, and come to a conclusion that one is a better design?

      I think automatically coming to the conclusion that someone with an aesthetic sense of design for code structure must be a fanboi is a more pernicious dogma than fanboism ever was.

      --

      The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...

    110. Re:Long Answer? by PinkPanther · · Score: 1

      As long as I can still play Wolfenstein 3D...

      --
      It's a simple matter of complex programming.
    111. Re:Long Answer? by drerwk · · Score: 1

      Having worked on video games both on old MacOS 6,7,8 and in Win32(95), I would hardly compare Win32 API quality to Apple API quality. Apple APIs tend to be much more pleasant than Win32. I seem to recall about 300 Win32 File API calls - many in the Foo(args) and FooEx(args, void * extra) pair style. Apple had maybe 40 methods. Of course original UNIX had 6 I think. Good luck trying to get a Win32 window to do something slightly different. I would say Apple has had far less need for new APIs because the ones they come out with are pretty well thought out.

    112. Re:Long Answer? by alonsomh · · Score: 1

      Try to count the number of windows applications in the market (and private ones) is MS going to kill them all in once? that would be passion for customers!

    113. Re:Long Answer? by achacha · · Score: 1

      However if someone switches from windows and using Visual Studio to mac and xcode, they will definitely notice that VS was a far better product however since they have to code for the mac and xcode is proetty much tops in that arena they just have to adapt since teir decision is driven by the OS issues.

    114. Re:Long Answer? by dbIII · · Score: 2, Funny

      what is this "shutdown" feature you speak of?

      It's an easy command.

      shutdown -y -g 0 -i 0 "Going down because UPS batteries only last 3 years and have to be changed"

      Then you just turn off the main system, each disk case and all the tape drives when it gets to the "OK" prompt.

      Oh - you mean a badly done Mac clone. Just turn it off. You've probably already been hacked by a few kinds of malware so a bit of filesystem corruption won't matter much.

    115. Re:Long Answer? by DrPizza · · Score: 1

      TxNTFS isn't WinFS. TxNTFS is a set of features built on the same underlying filesystem; WinFS would be a separate data store (probably stored on an NTFS volume, but with its own internal structure).

    116. Re:Long Answer? by dbIII · · Score: 1

      Where I work we have new machines with Windows 98 SE freshly installed on them because the "backwards compatability" is really only a token effort to put a bullet point in a sales brochure and not an actual reality. The bizzare thing is that with the right motherboards Win98 will install on a SATA drive - I didn't believe it until I saw it.

    117. Re:Long Answer? by Moridineas · · Score: 1

      Good luck trying to get a Win32 window to do something slightly different. Is that a joke or sarcasm or something?
    118. Re:Long Answer? by HopeOS · · Score: 1

      I have the Windows taskbar on the left-side so it doesn't conflict with the menubar or dock on OSX. Running windows outside of an integrated VM (Parallels Coherence or VMWare Unity) just seems silly now.

      -Hope

    119. Re:Long Answer? by plague3106 · · Score: 1

      But the article doesn't do that, except when describing how details of Win32 leak into .NET.

      But he didn't give any details of how win32 leaks into .Net. The threading model of the GUI is single threaded for a reason outside of Win32; multi-threaded guis are hard, and they don't buy you anything. Even the new UI Wpf has thread affinity. If you know this, its really easy to code against. The only problem was pre-.Net 2.0, which allowed you to make cross thread calls. .Net 2 now does the proper thing, and throwns an exception.

      But you can't. MS has added new features to Win32 (and VC++/MFC), and MS is going to continue to do so in Windows Seven. For example, Vista has a new transacted (database-style ACID transactions, not just journalled) filesystem. .NET doesn't support it; you've got to use Win32 to use it. Even though .NET does have transaction support (for COM+ transactions and database transactions) it doesn't support TxNTFS. So you've gotta use Win32. Or how about an MS-supported ribbon control? You've got to use MFC, and in Windows Seven there should be a native code ribbon control as part of the OS proper. In both cases, no managed code.

      There are third party managed ribbon controls; Infragistics offers one. Also, with Wpf it's fairly simple to do your own ribbon style control. With WinForms you're better off using the Infragistics one. Why you think the ribbon should be a standard Windows control I'm not sure.

      Having to drop into Win32 to call some legacy thing that no-one should really be doing but which you have to do for backwards compatibility, that I could sort of understand. But having to drop into Win32 to call new features that have only just been added? Anyone saying "stop using Win32, just use .NET" doesn't know what they're talking about.

      Well, I can't say I've need to use transactional NTFS yet, but otherwise I can do everything I need with just the framework. I'm curious, what kinds of things are you doing you need to use Win32 so much?

    120. Re:Long Answer? by poot_rootbeer · · Score: 1

      Everything I have read and heard about Microsoft suggests that they are cowboys.

      Code first, design later.


      What about that story about how it took twenty people from six departments three months to reach a decision on whether to add some feature to the Start menu or not?

      Maybe their developers have the cowboy mentality because there's a fundamental disconnect between them and the management bureaucracy that makes it impossible for anything to get accomplished otherwise...

    121. Re:Long Answer? by ewanm89 · · Score: 1

      As a CS student, I and my friends prefer using the Linux kernel and glibc libraries... Generally some Linux distro is preferred. The department provides us with terminal server access (world wide via ssh and piped VNC) to a linux terminal server. While windows can only be used in the labs...

    122. Re:Long Answer? by VoidEngineer · · Score: 1

      Mono is the new game in town. It still has a ways to go, although there are both C# plugins for XCode, as well as the Cocoa# libraries which let you develop in Visual Studio and later use the Cocoa graphic widgets. You can develop a complete app in Visual Studio, run it under Mono on Mac, if you're willing to draw all of the graphics yourself (i.e. build your own buttons with rectangles, etc). Alternatively, you can use the Cocoa# bindings, although some of your work in Visual Studio will be 'blind' until you compile and run on Mac (i.e. you don't get to use the Visual Studio GUI Designer as much as you would in a Windows environment, and have to build up your GUI by hand, and check it by multiple compiles). It takes a bit of planning, harkens back to the old days of C programing, and probably isn't for the beginner coder, but you *can* develop on Visual Studio and build for Mac with Cocoa graphic widgets. On balance, I'd say that Xcode is obviously better for writing a Mac GUI application, but Visual Studio and Mono is also an option, especially if you're willing to hand code your GUI.

    123. Re:Long Answer? by ceoyoyo · · Score: 1

      The top is about the only place where a Mac user would NEVER put their dock. That's where the menu bar is.

    124. Re:Long Answer? by iONiUM · · Score: 1

      I have to disagree with your Win32 API calls comment. I am a professional .NET developer, and I've been using it since 1.1. I primarily use 2.0 right now, though I have used 3.5 quite a bit too. I've made large enterprise web applications and medium sized winforms applications. I have never had to use Win32 API calls. I would say the biggest problem here is that a lot of people just don't know what .NET is capable of, as in there's a lot of libraries not referenced by default in the .NET library, and some things are put in weird namespaces. That said, if you were doing something very specific, then it's understandable, but for the most part you should never need to make unsafe Win32 calls.

    125. Re:Long Answer? by ceoyoyo · · Score: 1

      The way I read it is that his complaint was there is no consistent and foolproof way of discovering WHICH thread it is that you have to use to update a particular GUI element. I don't know whether that's true or not, but that was his complaint. Cocoa isn't thread safe either, but you can always get the GUI thread with [NSThread mainThread].

    126. Re:Long Answer? by VoidEngineer · · Score: 2, Insightful

      I'm curious as to why you're using any Win32 calls at all. I've been developing in C# for about three years now, and I can't ever remember making a single Win32 call. And I've been developing some fairly robust applications... i.e. multithreaded, networked, double buffered graphics, disk io access, numerical optmization algorithms, etc. The closest I ever came was when I was trying to figure out the size of the desktop, but eventually I figured out how to do that inside of .Net also. Everything else has been somewhere inside of .Net. Granted, sometimes it's been difficult to track down where in the API to find a particular function; sometimes I've had to write some wrappers and funky helper methods; but, I've never had to resort to a Win32 call. At the same time, I've *decided* not to make any Win32 calls, for portability purposes (as I want my apps to eventually be Microsoft free and be able to run on Mono). So, whenever I run across a place where I *could* use a Win32 call, I sigh, and then start looking for another way to achieve the same task within the .Net framework. Takes longer, requires more research, but keeps the application all within my own namespace and maintains portability and independence from a single vendor. I mean this is just my two cents, but it sounds to me like you haven't made a design decision to NOT use Win32 calls; and thereby, when you run into a situation where you *could* make one, it's a valid option, and you use it. (On the other hand, you design goals could be more in keeping with systems programming than applications programing; in which case, I would say... well, what did you expect?)

    127. Re:Long Answer? by ckaminski · · Score: 2

      I'll tell you this, if you don't run your work in a separate thread, you end up with unresponsive interfaces. You can do tricks like periodically stopping work and checkpointing. But if you run into a database deadlock, or some communications deadlock, or you have a developer on your team who doesn't know his code is going to be used in a UI, then your interface hangs.

      Threading is almost mandatory in well behaved Windows Apps.

      The promise was that .Net was going to be *NEW* It wasn't. It still suffers all the major failures of the Win32API - though it does bring ease of use. Microsoft has a habit of abandoning technologies they invent (MAPI, MMC, RDO).

      Then again, Swing/SWT has 5+ years on .NET, so I'm being a bit unfair. I just don't see Windows making a clean break from the past - they abandon the only thing that keeps them dominant, backwards compatibility.

    128. Re:Long Answer? by Anonymous Coward · · Score: 0

      Dude, WOW is not virtualization at all. It's a bunch of DLLs and "thunking". Virtualisation is a lot more.

      Everyone else, if you fancy a wry chuckle, then consider this: on 64-bit windows, the binaries in c:\windows\system32 are 64-bit, and the ones in c:\windows\syswow64 are 32-bit.

    129. Re:Long Answer? by TwoStep · · Score: 1

      Huh? What are you doing there that cannot be done with .NET generics?

      --
      There are 10 different types of people in this world... those who understand binary, and those who don't.
    130. Re:Long Answer? by vipw · · Score: 2, Informative

      An example is making the sort arrow show up in a listview control. http://www.thebitguru.com/articles/16-How+to+Set+ListView+Column+Header+Sort+Icons+in+C%23

      But I've had far more fun with PostMessage and friends.

    131. Re:Long Answer? by cbciv · · Score: 1

      Other than that, he points out a bunch of flaws in Win32 and implies that they "leak into .NET" but he fails to actually demonstrate any of them.
      Off the top of my head we have, for example:
      • the entire crypto lib (including e.g. certificate handling as well as core crypto functions)
      • SSL handling equally has Windows-specific portions
      • SocketException (especially ErrorCode)
      • Socket.UseOverlappedIO
      • Socket.IOControl
      check

      • System.ServiceProcess.* (this stuff should be in Microsoft.whatever, not System!)
      • System.Management.* (ditto)
      This is a complaint about namespaces, not about Win32 showing through.

      • System.Data.SqlClient.*, System.Data.OracleClient.* ((a) the core interfaces should be better (b) the vendor-specific providers should not be in System)
      This is another complaint about namespaces, paired with a complaint about quality. Neither of these has anything to do with Win32 leakage.

      • The "Handle" properties found in e.g. Socket, FileStream, and the aforementioned System.Windows.Forms
      • Large tracts of System.EnterpriseServices

      By my count, 7 out of 10 of the items you mentioned are issues of Win32 showing through. The others are unrelated.

      I'm not suggesting that such areas don't exist; I think you've identified a few. Your point isn't bolstered by unrelated complaints, though.

    132. Re:Long Answer? by DuckDodgers · · Score: 2

      Well, Java is a better example by virtue of not having the same backwards-compatibility cruft to deal with. Even if the language itself is two steps forward and two steps back (depending upon who you ask) from C++, it has no real equivalent to the legacy API layers and apps .NET has to deal with.

      I don't get the Java hate anyway. Performance is quite good now, SWT and some other tools make GUI design less painful, and a lot of the uglier toolkits (Struts 1.x, EJB 2, etc...) have nice new open source replacements. The Java development tools are now GPL. Until companies start hiring more developers to to work on Haskell or Scala, Java pays the bills and I neither hate it nor love it.

    133. Re:Long Answer? by VoidEngineer · · Score: 1

      I'm in the same boat, and would have to agree. (I also run Visual Studio on a virtual machine running on my MacBook.) A lot of people forget that C# is an ANSI standard and, as such, is vendor independent. .Net is a good implementation of it, and gets alot of things right. If you don't want to use a Win32 call, *then don't*. The point of C# is to create a namespace, and keep your *entire* application inside of that namespace. Use the .Net API to interface with the OS, not random files somewhere on the OS that are liable to change. I got the sense that the guy writing the article didn't like to research or look stuff up, or maybe had IntelliSense turned off on his copy of Visual Studio. Or something. He was obviously applying some old habits to the .NET environment, and hadn't studied some of the high-level design concepts behind it. That, in turn, would have informed him a bit better on how to approach some of his programming. In the end, it seems like he was splitting hairs and nitpicking.

    134. Re:Long Answer? by sveard · · Score: 1

      I've set it to open the start menu.

    135. Re:Long Answer? by rodgertq · · Score: 1

      Control.InvokeRequired, tells you that some other thread, besides the current thread owns the window. You typically don't care about *which* actual thread it is that actually owns the window, but you do care that it gets the event, which is what Invoke()does for you. And, shocker, it's even in the documentation: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx

    136. Re:Long Answer? by Doctor+Faustus · · Score: 1

      I'll tell you this, if you don't run your work in a separate thread, you end up with unresponsive interfaces.
      But wouldn't you just have a primary thread for the UI and run the other stuff in threads that don't touch it? Maybe I have it wrong, because all my .Net work has been batch jobs where a responsive interface isn't important enough to bother with threading.

    137. Re:Long Answer? by vipw · · Score: 1

      I think you're right. My expectations of being able to do almost everything in C# were too high. Generally, I'm much happier with this environment than C++ and win32, so I don't like falling through the cracks when it happens.

    138. Re:Long Answer? by Heddahenrik · · Score: 1
      To make something bad:

      Design and then make some other people code it.


      To make something good:

      Code it, redesign it and code it right. Fix the bugs and rewrite it again if needed.


      There is a general problem with programs that they aren't rewritten often enough. People think it's costly and refuse to rewrite things, but rewriting a piece of code is at least 10 times faster than writing it in the first place and it will safe both the programmers and users way more time in the future. And the fact is that no one can design something good before they have pre-designed and coded it first.

    139. Re:Long Answer? by sjames · · Score: 1

      Linux will have a lot less trouble with all of that than Windows for several reasons.

      For one, Linux (like all *nix) has a simple and sensible paradigm for it's OS API. Everything is a file. In contrast, Windows has a habit of providing yet another one-off API for even the most obviously file-like devices. Each and every bit of that ad-hockery becomes yet another ossified dropping that the OS gets to support forever.

      As a result of a regular and well defined API, very old programs can often run on the latest and greatest system with a simple recompile.

      In cases of really old APIs that should go away, the solution is often to re-implement the legacy API in a compatability layer in terms of the new API rather than just leaving the old code to fossilize.

      A lot of MS's legacy problems are just their own ham-fisted design problems. Mainframes routinely run truly ancient object code by offering emulators for much older systems. Given as long as it took to come out with Vista, they probably should have just changed everything they wanted and updated the binary signature. Then build an XP wrapper service that gets invoked between legacy binaries and the OS based on the older binary signature. That works fairly well in linux to allow x86-64 systems to run x86-32 binaries.

      MS has a long history of system API's that look like they were hacked together by application programmers and it shows.

    140. Re:Long Answer? by BlackSnake112 · · Score: 1

      Where I work we have new machines with Windows 98 SE freshly installed on them because the "backwards compatability" is really only a token effort to put a bullet point in a sales brochure and not an actual reality. The bizzare thing is that with the right motherboards Win98 will install on a SATA drive - I didn't believe it until I saw it. I hope you mean right drivers. Once you have the hardware drivers for the OS installing is not an issue.
    141. Re:Long Answer? by mcrbids · · Score: 2, Interesting

      The problem is they know a lot of people aren't happy with Windows but it runs all their programs. Once the scrap that backwards compatibility and build something solid, despite the fact it may be their best OS ever, it's on a level playing field with the rest which means people have to find an alternative to their old programs and they might just pick something that isn't Windows and MS isn't having that.

      And that is the point of this article. What keeps Windows' market share is inertia, and not much else.

      As a writer/purveyor of work flow management software fitting somewhere between 2 and 3 in their list of programmers, (I write "enterprise" software, I sure give a damn about quality, but I shy away from the cutting edge) I'm not interested in anything specific to either OSX or Windows. I will not adopt a technology that ties me to either. But I deal every day with companies that have XYZ custom program that's written in VB or something and when I mention Mac/Linux/Alternative the first thing from their mouth is "we're Windows-only because of XYZ" with a shrug.

      Here's what Microsoft needs to do to stay relevant:

      1) Be Microsoft. Be OK with design by committee that "mostly works" and embrace the mediocrity therefrom. We don't expect you to be stylish, we expect you to be practical and cheap.

      2) Eat its own dogfood. Why does Microsoft have published UI conventions for Windows that they don't follow? If ".net" is the one true way, why aren't all their new applications not written in it?

      3) Be open. If Microsoft has this handy-dandy ribbon interface, it should be accessible to developers. One of the classic beauties of Windows has been the COM interface. .NET kinda shot that in the foot, and unfortunately, with MS almost abandoning .net, developers don't trust them, anymore. Remember when Microsoft was ABOUT developers? Now it seems that they are ABOUT STEALING as much bread as possible from them!

      4) Make decent products! Ever try to develop for IE in a standards-compliant way? Even IE 7 is riddled with gotchas! How is it that there are three browsers out there developed by little guys (Mozilla, Opera, and Safari) that manage to get it "right" (or at least "right-er") when the Bazillionaire has a product that sucks so badly?

      Sigh.

      The result is that evelopers hedge their best with cross-platform technologies to mitigate the threat of Microsoft as much as possible. No, we can't ignore them. But we sure don't have to bow to them, anymore.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    142. Re:Long Answer? by Doctor+Faustus · · Score: 1

      Well, Java is a better example by virtue of not having the same backwards-compatibility cruft to deal with.
      My overall impression has been that .Net has the advantage of not having as much backwards-compatibility cruft to deal with. Sure, there's a lot of nastiness under the hood somewhere, and a little of it does come through the .Net libraries, but it's nowhere near as bad as the leftovers from early versions of Java. To use Swing, you still have to know AWT. To use Bloch's collection classes, you still need to know their predecessors. To use NIO, you still need to know the original IO system that builds up from individual bytes (I knew that was wrong the first time I saw it -- it's supposed to be starting at the lowest level, but the lowest level works with buffers). It's very hard to get a handle on the language if you're new, because you have to learn so much history.

      The legacy cruft in Java is a lot more annoying, too, because it's stuff that would have been easily avoidable. The libraries are all modular, so they could have easily made clean breaks, letting people who are reliant on the old versions just keep using those old versions.

      I haven't written off Java (for my own purposes -- I know plenty of other people do good things with it). I know my view of what it's like to work in a Java shop is colored by the fact that we used entirely Oracle tools and Oracle clearly sucks with Java. And JavaDoc is an utterly glorious thing that can make up for an awful lot. I'm just saying some of these criticisms of .Net are things that Java really isn't any better at.

    143. Re:Long Answer? by ckaminski · · Score: 1

      Yes, it was billed as exactly that - or perhaps my impressions clouded my evaluation of the trade press and Microsoft propaganda circa 2001, 2002. .Net was to be the new way of doing things, no more Win32 API.

      Face it - .Net was a hastily cobbled answer to the fact that Microsoft was losing market share to J2EE like crazy and had absolutely NOTHING to compete and wasn't even going to touch a Java that couldn't be intimately tied to Windows. We were spun one way while the man behind the curtain was simply insuring that Java would be a non-starter on Windows, and that .Net would be a non-starter on anything other than Windows, ECMA standards be damned - yet more lock-in.

      Personally, I'm a C++ guy. ACE makes my portability problems go away, and there's a myriad of MFC replacements out there without all the baggage. I'm picking up Java now simply because it's portable - I refuse to be tied to a single platform. But mostly, I'm a C++ guy. :-)

    144. Re:Long Answer? by dossen · · Score: 4, Interesting

      Damn - what a list.

      My own additions - from doing Sharepoint:
      - Key classes (SPSite and SPWeb) that are IDisposable. That's not too much of a problem, except that the documentation is somewhat vague on how to handle them - calling some methods will e.g. initialize the RootWeb property of SPSite, which you have to dispose, despite never having called RootWeb yourself. And sometimes you have to take care _not_ to dispose, as you are handed a reference to a shared instance of an SPWeb or SPSite.
      - Several nice components are sealed and/or internal - my current pet peeve is a webpart, which has its look and feel defined via XSLT-files (big poorly documented XSLT-files, that do a lot of scary things to dump a lot of ugly HTML), unfortunately these XSLT-files are used by several different webparts, and some of them have neither the ability to subclass the webpart to use another file, nor the option of configuring which file to use. The only way to change that look and feel is to change the standard files.
      - Checking user permissions in some places requires you to call a boolean method and receive true for access (sounds good so far, right...) and an exception for access denied!
      - Not only is the default rendering a load of IE specific crap, if you dig deep enough, you'll find hardcoded strings inside the core libraries that, to the best of my knowledge, are not valid HTML in any contemporary standard. And the only way to get rid of it is to capture the output stream and clean it up by hand, one string pattern at a time.
      - And that reminds me of a .NET one - why can't I do regular expressions on StringBuilder objects? I have to convert one to an immutable string, do my replacement that results in another immutable string. Just seems like an awful lot of copying, if I'm doing a lot of editing.
      - And another Sharepoint gripe - why are all the interesting parts of my code inheriting stuff, that makes unit testing a real pain (I tried to mock my way through it once or twice, but the amount of code needed to test without invoking the database backend is beyond what I could justify even trying).

    145. Re:Long Answer? by AndyCR · · Score: 4, Interesting

      But I don't kid myself that anything that can run on linux (whether kdevelop or eclipse, or *even* vim) is half as good as visual studio. I have tried to use Visual C++, and it used to be my IDE of choice, but after using Eclipse 3.3 (they improved the speed dramatically in 3.3, from unusable to usable) for a year or so I simply cannot bring myself to use anything else. I recently tested out Visual C++ 2008, and it really pales in comparison to what I love with Eclipse. About the only thing it did better was debugging, and I would gladly trade excellent debugging support for decent debugging support with SVN, Mylyn, Ctrl+Shift+R to open a resource,and IntelliSense that actually -works- without fail every time (Visual C++'s IntelliSense just fell over after about 2 hours of using it and never came back, and refused to give any information on any library - not even the standard C++ libraries.)

      About the only thing I see VC++ having on Eclipse 3.3 for plain C++ development besides debugging is speed. Visual C++ is comparably fast, but Eclipse isn't slow in the "it takes a while to respond" sense, but rather in the "there is a 7 second splash screen when you start it" sense. I can live with that.
      I was rather disappointed, really. I had thought that I had given up a great IDE (VC++) to go to a great OS (Linux) with a moderately decent IDE (Eclipse); in reality, looking back I have up a decent IDE to go to a great OS with a great IDE. A few years ago I loved Visual C++ 6, and I suppose I'm just sad to see its ancestor thwarted on my desktop so easily by a free program.

      (Disclaimer: The statement above is merely my opinion. Your opinion may not match it.)
      --
      If there's anyone I hate more than stupid people, it's intellectuals.
    146. Re:Long Answer? by Lonewolf666 · · Score: 1

      In theory, one might expect that this works without much extra programming effort. In practice, it did not happen.
      So I suspect there are a few sordid hacks involved in making the WOW 32-16 bit layer work in XP, and Microsoft wanted to get rid of those in 64 bit Vista ;-)

      --
      C - the footgun of programming languages
    147. Re:Long Answer? by DrPizza · · Score: 1

      But he didn't give any details of how win32 leaks into .Net. The threading model of the GUI is single threaded for a reason outside of Win32; multi-threaded guis are hard, and they don't buy you anything. Perhaps the article was a little unclear on this point. The issue is not that WinForms is single-threaded. It's that WinForms makes you give a damn about which thread runs the message pump.

      Even the new UI Wpf has thread affinity. If you know this, its really easy to code against. The only problem was pre-.Net 2.0, which allowed you to make cross thread calls. .Net 2 now does the proper thing, and throwns an exception. It's a pity it only does so in debug builds.

      There are third party managed ribbon controls; Infragistics offers one. Also, with Wpf it's fairly simple to do your own ribbon style control. With WinForms you're better off using the Infragistics one. Why you think the ribbon should be a standard Windows control I'm not sure. I think it should be because MS thinks it should be. That's why it's been added to MFC, that's why it's being added to Windows Seven.

      Well, I can't say I've need to use transactional NTFS yet, but otherwise I can do everything I need with just the framework. I'm curious, what kinds of things are you doing you need to use Win32 so much? My current "toy" application is a media player. Something in the same vein as Sasami2k. DirectShow is unusable from .NET (it's a COM interface, with no primary interop assembly and a bunch of hairy bits that make interop difficult). The brand spanking new-to-Vista Media Foundation (which will eventually replace DirectShow) is also COM (and again with no PIA). .NET is really extremely incomplete as a Win32 replacement.
    148. Re:Long Answer? by edwdig · · Score: 1

      (Visual C++'s IntelliSense just fell over after about 2 hours of using it and never came back, and refused to give any information on any library - not even the standard C++ libraries.)

      Visual C++ has a nasty habit of having IntelliSense just randomly break. If you close VC++ and delete the project's .ncb file, it'll regenerate the IntelliSense data and *sometimes* it'll start working again.

    149. Re:Long Answer? by VoidEngineer · · Score: 3, Informative

      I'm not going to go through your entire to-do list, although I will answer a couple of your questions.

      Except for to confuse me, why do ICollections have a Count, when arrays have a Length? What's the meaningful semantic distinction that I'm missing here? ICollections implement an IEnumerator interface and have an Enumerator object which counts the objects in a collection. Think of an enumerator as an odometer (like the one in your car). If the object implements ICollection, then it has an odometer, which you can get the count from. Arrays just have size.

      Why do arrays have LongLength but with no corresponding LongCount for ICollections (3.5 adds LongCount as an extension method, but that gives it inconsistent (method) syntax, and of course it can never work because even if the collection were extended to support long lengths, an extension method can never exploit that fact, because the extension just works on IEnumerable which supports only an int Count)?
      Again, difference between an attribute and a verb. LongLength is an attribute of an object, such as height or width. Whereas Count is like an odometer in your car. Your question is kind of like asking why can you travel tens of thousands of miles along the US highway, but my odometer in my car only goes up to 1000. Well, that's just the way the odometer was made. Length of trip is distance, whereas your odometer is a counter and is only a *measure* of distance. It's simply a distinction the language makes.

      Why do arrays have LongLength, and not simply have Length be a long? It surely didn't take a whole lot of foresight to figure that one out, did it?
      Chunking. .NET gets used on both 32 and 64 bit platforms, and the performance penalty for splitting a 64 bit word into two is greater than using two 32 bit words. In the first case, you still have to use 64 bit words, but you pad the first 32 bits with zeros, and convert to 32 bit words. Requires an extra pass through the processor to calculate, whereas adding two 32 bit words into a 64 bit word is trivial. I'm not explaining this concept well, but if you look it up you'll find more info on the question you're asking. The design decision was based on current market saturation of 32 bit processors, and the LongLength was an added conversion for the 64bit programmers.

      Where do I find reverse iteration/enumeration? Where do I find bidirectional iteration/enumeration?
      Using the odometer analogy as above, the enumerator only goes forward; although you *can* reset it. If you want to do reverse iteration, copy your collection into a new collections backwards, and iterate over that new object. Alternatively, for most reverse or bidirectional iterations, you'll simply want to ditch the 'foreach' loops, and use a simple 'for' loop. Then you can start high and use decrement iterators to count down. I also like to use decrementor collections which get an object removed with each pass of the for loop.

      Why is there no generalized mechanism for storing my position in a container?
      You need to get the IEnumerator object from the ICollection, using the GetEnumerator method. It will have a Position field.

      Why is there no SortedSet?
      Probably implemented somewhere else.

      Why are there no static type-inferencing factories for read-only collections or singleton collections? When you have generics, factory methods are good, because factory methods can infer. Don't make me type IList myReadOnlyList = new ReadOnlyCollection(myList); the double specification of the type is spurious.
      You're splitting hairs here. It's a strongly typed language. It's meant to be explicit, not inferential. In other projects, besides yours, double specifying types is needed and a useful (if not critical) feature.

      Why is it named ReadOnlyCollection when it is in fact a IList? Why is there no true ReadOnlyCollection (i.e. that is actually useful for collections)? Why is it na

    150. Re:Long Answer? by ceoyoyo · · Score: 1

      Seems simple enough. The remarks section looks a little scary though. It looks to me like Microsoft is urging me to check at least three things for every GUI call, to make sure nothing goes wrong. I need to do InvokeRequired to see if I'm on the right thread or not, then call Invoke if I'm not. If I am, I need to check IsHandleCreated before I actually make the call.

      If I don't, I don't just get an exception, or even a crash, I get an unstable application.

    151. Re:Long Answer? by DrPizza · · Score: 3, Interesting

      ICollections implement an IEnumerator interface and have an Enumerator object which counts the objects in a collection. Think of an enumerator as an odometer (like the one in your car). If the object implements ICollection, then it has an odometer, which you can get the count from. Arrays just have size.

      Count is not a method; it is not asking "Count how many things are in this object". It is a property, and as such an intrinsic feature of the object (that behind the scenes it might have to do the verb thing is beside the point--it's semantically a property, even if it's actually a verb). And even if one were a verb--why should be it?

      Again, difference between an attribute and a verb. LongLength is an attribute of an object, such as height or width. Whereas Count is like an odometer in your car. Your question is kind of like asking why can you travel tens of thousands of miles along the US highway, but my odometer in my car only goes up to 1000. Well, that's just the way the odometer was made. Length of trip is distance, whereas your odometer is a counter and is only a *measure* of distance. It's simply a distinction the language makes.

      Again, though, the language doesn't make the distinction you are making. Count is a property, just like Length. If Count were a method I could sort of understand the difference (I don't really agree with it, it seems spurious, but I could sort of understand it). But it's not; it's a property.

      Chunking. .NET gets used on both 32 and 64 bit platforms, and the performance penalty for splitting a 64 bit word into two is greater than using two 32 bit words. In the first case, you still have to use 64 bit words, but you pad the first 32 bits with zeros, and convert to 32 bit words. Requires an extra pass through the processor to calculate, whereas adding two 32 bit words into a 64 bit word is trivial. I'm not explaining this concept well, but if you look it up you'll find more info on the question you're asking. The design decision was based on current market saturation of 32 bit processors, and the LongLength was an added conversion for the 64bit programmers.

      But LongLength means we won't have a clean transition, because it means people will have to fix up APIs to take longs where they currently take ints; making everyone pay the price for longs might be a short-term cost (though not a great one), but it'll be a long-term gain.

      Using the odometer analogy as above, the enumerator only goes forward; although you *can* reset it. If you want to do reverse iteration, copy your collection into a new collections backwards, and iterate over that new object. Alternatively, for most reverse or bidirectional iterations, you'll simply want to ditch the 'foreach' loops, and use a simple 'for' loop. Then you can start high and use decrement iterators to count down. I also like to use decrementor collections which get an object removed with each pass of the for loop.

      That really doesn't answer the question. In both Java and C++ I have iterating objects (java.util.ListIterator, C++ bidi/random iterators) that can go forwards and backwards. I use these quite regularly; why can .NET not provide the same?

      You need to get the IEnumerator object from the ICollection, using the GetEnumerator method. It will have a Position field.

      Neither here: http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx Nor here: http://msdn.microsoft.com/en-us/library/78dfe2yb.aspx So I'm not altogether sure what you mean.

      Probably implemented somewhere else.

      I don't understand what you mean.

      You're splitting hairs here. It's a strongly typed language. It's meant to be explicit, not inferential. In other projects, besides yours, do

    152. Re:Long Answer? by Jerry · · Score: 1

      Ya, sure you do. And Ballmer uses Linux on his laptop and contributes to FOSS too.

      I use VS2003/C++ to write GUI front ends to Oracle at work using Qt4. I use the same source on Linux with Kate as the editor. Kate is lighter, faster, has just as reliable code completion, and with Kdbg debugging is gui too, and is also faster and gives more info.

      My PCLinuxOS 2008 MiniMe powered laptop using KDE 3.5.9 has MORE power than XP Pro. It will have EVEN MORE power when KDE 4.1 arrives.

      Using XP gives me the feeling of wearing handcuffs and having Big Brother over my shoulder telling me what I can and can't do.

      --

      Running with Linux for over 20 years!

    153. Re:Long Answer? by ckaminski · · Score: 1

      Don't be so sad to see PA-RISC dead. It's the whole reason HP joined with Intel to build Itanium, to get a better CPU to run PA-RISC on because HP couldn't compete with Intel, MIPS or Alpha. How ironic was it that six or seven years later they would own the Alpha ?

    154. Re:Long Answer? by ckaminski · · Score: 1

      I'm not too sure yet on .Net being the best thing Microsoft ever came up with...

      I think COM with IDispatch truly is what has made their platform the de-facto choice. Without it, ASP would never have taken off, VBA would have never seen the light of day, Office and Word and Excel wouldn't have such excellent type libraries - .Net simply continues this tradition, of Objects of Code being first class Operating System Citizens, usable by any compatible program or language, something that no Unix platform has yet devised (though some are close).

    155. Re:Long Answer? by Nataku564 · · Score: 1

      I've been using .Net for the past 3 years professionally. I have never had to make a Win32 API call.

      What were you calling the API for during your development? I do know one guy here who had to, but that was for a special case where he was developing his own custom components to replace the standard windows ones. That was also outside of work. In my experience, .Net isn't half bad. I prefer Java, but they two languages are essentially equivalent - minus the whole platform portability thing.

    156. Re:Long Answer? by ckaminski · · Score: 1

      Wait a minute, did you just call .Net cross platform? If by platform you mean Windows, and cross meaning XP, Windows Server 2003 and Vista, you might be right.

      While Mono is certainly an admirable project, cross platform .Net it most certainly is not.

    157. Re:Long Answer? by immcintosh · · Score: 1

      I, too, prefer an IDE that takes up half my available memory on a system with 2 gigs of ram! In all seriousness though, I've found that the only reason I had trouble using something other than Visual Studio was because I'd been so indoctrinated into the MS way of doing things. Now that I've gotten used to using KDevelop, CMake, GDB, Valgrind, etc... I've found that, for me at least, it's just so much more elegant. Now Visual Studio just seems inexcusably "bulky," although I'd have trouble explaining exactly what I mean by that. Not to say it isn't powerful of course, because it certainly is.

      So yeah, if you really like the Visual Studio way of doing things, it's great. But then you'd better hope you have a very beefy system just for your IDE, that you never have to do anything for any other platforms, that you're okay with using the languages it comes with and only those languages...

      Disclaimer: The preceding was 100% personal opinion.

    158. Re:Long Answer? by ckaminski · · Score: 1

      One of the things I hate about Java is the requirement to have close() methods. In C++, I knew that when an object on the stack went out of scope, it would do whatever necessary cleanup it had to. Perhaps this is bad practice, but I tended to rely upon it. My constructors built objects, my destructors destroyed them, deterministically. When my save routine ran, I could exit the function and I knew the file would get committed, closed and resources freed.

      Now I have to have special close() methods to do the same thing. You trade language functionality for verbosity and explicit method calls. I'm not sure I like the tradeoff. Then again, I was running purify on my unit tests long before it became the "in" thing to do, so pretty much my only memory and resource leaks were hidden inside the win32 api.

    159. Re:Long Answer? by bishiraver · · Score: 1

      Well, it is Windows.

      Don't you still recycle your xp boxen? I actually don't know how vista or xp fare in the uptime epeen argument. I still have windows 2000. Albeit, the last choice in grub.

      And I never look at grub.

    160. Re:Long Answer? by bishiraver · · Score: 1

      Wait, you mean like what OSx86 did?

      That'd be too easy.

    161. Re:Long Answer? by plague3106 · · Score: 1

      Perhaps the article was a little unclear on this point. The issue is not that WinForms is single-threaded. It's that WinForms makes you give a damn about which thread runs the message pump.

      How exactly does it make you care which thread runs the message pump? The only thing you need to know is that unless you do otherwise, your code is on the UI thread and so you shouldn't block it.

      It's a pity it only does so in debug builds.

      So you'd rather the application always crash instead of trying to do the call anyway? At any rate, we're talking about MS and developers. Developers would (I hope) try to debug a crashing program, and the exception immediately points out the error. So, it's not really MS dropping the ball, its developers not following proper coding standards. You can say they did drop the ball initially for this particular case, but they did fix it too. But to say one issue is totally upsetting to developers is nonsense.

      I think it should be because MS thinks it should be. That's why it's been added to MFC, that's why it's being added to Windows Seven.

      So let me understand; they release the ribbon, decide to include it later, but you're going to fault them now because it's not built into the OS right now? Interesting.

      My current "toy" application is a media player. Something in the same vein as Sasami2k. DirectShow is unusable from .NET (it's a COM interface, with no primary interop assembly and a bunch of hairy bits that make interop difficult). The brand spanking new-to-Vista Media Foundation (which will eventually replace DirectShow) is also COM (and again with no PIA). .NET is really extremely incomplete as a Win32 replacement.

      I see, so because your toy application needs to call into win32, that makes .net "really exteremly imcomplete." Nevermind the huge chunk that is there, that people are using to build compelete applications. Maybe you should complain to MS and tell them to drop everything to port it all to .net now, instead of pieces at a time.

    162. Re:Long Answer? by Anonymous Coward · · Score: 0

      Every single java app I've ever used is ugly as sin, and I've seen a lot.

      Oh really? Try IntelliJ IDEA. A commercial IDE written in Java. Not only you'll see that a Java app can be visually perfect, but you'll also realize that you're still living in the stone age IDE-wise.

    163. Re:Long Answer? by Tweenk · · Score: 1

      My experience with Visual Studio Express (on a rather underpowered Sharp Mebius with 256MB of RAM and P3 866) was OMG BLOAT WTF. Also, the install and uninstall are ungodly long (I had the impression that Ubuntu installs faster - and that's a whole OS!). On the other hand, Code::Blocks worked quite well. Recently I'm using gedit, because CB doesn't play well with Autotools, and Anjuta crashes when I try to import the Inkscape directory into it.

      --
      Those who would give up liberty to obtain working drivers, deserve neither liberty nor working drivers.
    164. Re:Long Answer? by CAIMLAS · · Score: 1

      You might do that now, but I'm fairly certain that the "Shutdown" option was put where it is now for pragmatic reasons, not a lack of UI insight. That is, Windows needed to restart 3, 4, 5 or more times per day, if it did not restart itself that many times without your permission.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    165. Re:Long Answer? by DrPizza · · Score: 1

      How exactly does it make you care which thread runs the message pump? The only thing you need to know is that unless you do otherwise, your code is on the UI thread and so you shouldn't block it.

      Have you read the documentation for the Control object?

      Specifically InvokeRequired and IsHandleCreated?

      Have you read the sample code for the control that spins off a thread?

      Ok, go and read those, then we can consider a little scenario: a control that spins off threads to do some work in the background, and then update the UI when it's done.

      Let's imagine that our control doesn't bother checking IsHandleCreated, and that it just creates its thread indiscriminately. The UI update does call InvokeRequired but--as we know from the docs--InvokeRequired returns false when there's no handle at all.

      Let's imagine also that (a) the background work completes quickly (b) our application hadn't created any window handles until before our thread started (this can happen, which is why the IsHandleCreated property even exists).

      So the background work finishes. It tells the control to update its UI from the background thread. The control checks "Is InvokeRequired?". The answer is "no". So it tries to update the UI. But the window handle hasn't been created yet--nothing to update! And there's no message pump yet--nothing to dequeue messages anyway.

      OK, so that's not ideal. But it gets even less ideal. What if your update code causes a handle to be created? There's a good chance that it will (even the mere act of requesting the Handle property will create the HWND if it doesn't yet exist). But because you're running in the background thread--no invoke was required, remember?--it'll create a handle (and message pump) in the background thread. Even better, any not-yet-created HWNDs in the rest of your UI that you try to modify will also use the background thread's message pump. Which means that when the background thread exits after making its update (it has no more work to do, after all) any other controls that it updated will no longer have a thread to handle their messages!

      This is all needlessly complex and unnecessarily fragile.

      So let me understand; they release the ribbon, decide to include it later, but you're going to fault them now because it's not built into the OS right now? Interesting.

      No, not at all. You're being obtuse.

      If .NET is the way forward, *why are they not adding the ribbon to .NET*? Why have they added one to MFC, and why are they adding one to Win32, but *nothing* for .NET? Do you not see the contradiction here?

      "I see, so because your toy application needs to call into win32, that makes .net "really exteremly imcomplete." Nevermind the huge chunk that is there, that people are using to build compelete applications. Maybe you should complain to MS and tell them to drop everything to port it all to .net now, instead of pieces at a time." I don't want them to "port" anything. I want good clean APIs, and a "port" of Win32 won't provide that.

    166. Re:Long Answer? by ckaminski · · Score: 1

      Because maybe, just maybe, he, like I (though I'm not published) can see the beauty that is the Windows platform. Ubiquitousness. For the most part, clean presentation. Consistency (even though his argument doesn't agree with me).

      When I first started using WindowsNT back in 1994 it was in sore need of a GOOD commandline shell, headless operation, a UNIFIED filesystem, none of this drive bullshit, and full accessibility of the management tools via command line.

      Begets Scripting Host, then Powershell in 2000 and 2005. Headless operation in 2005. Still no unified filesystem, but getting closer (no symlinks cross filesystem). Single SID connection to an SMB server per login session. No BOOTP/netboot support (not without serious fuckuppery).

      Windows is so much, so ubiquitous, and getting powerful, secure and reliable in WindowsXP. With the best of the UNIX tools native and Microsoft becoming less Schizo (SQL 2000 management tools integrated with Management Console, now 2005 is completely segregated). They invent new technologies and drop them at a whim. There's no coherent vision among their apps and OS group. Microsoft is schizophrenic.

    167. Re:Long Answer? by Taevin · · Score: 1

      Reminds me of the CGI days which were really quite primitive compared with web applications that can be built today with the much better tools. Perhaps you are one of the ellusive jedi masters of C and C++, but I think it is fair to say that C or C++ are really innapropriate choices for the majority of web developers these days.
      Care to elaborate? What makes C and/or C++ "really innapropriate choices" for web development? As with C#/.NET, the key feature for web development is a library that abstracts and facilitates working with web requests. If we assume that the library is there for C++ (it has been a while since I looked into it, but I think it's a fairly safe assumption since working with HTTP requests is not a complicated task), how is it really any different than developing with C#?

      For the record I write C# code (mostly ASP.NET) for a living, although that's mostly because we're a Microsoft shop and I don't really have much choice in the matter. Point being, I'm not trying to make an argument that C#/.NET is a hunk of crap (although there are plenty of things that bother me about it), just to find out why you think that it's "fair" to say that C++ is an inappropriate choice compared to the "much better tools" (implied .NET).
    168. Re:Long Answer? by Rob+Y. · · Score: 1

      I had IntelliSense drop dead on me, and deleting the .ncb file didn't help.

      Then suddenly, after several months, it just came back. No idea why. My guess is that I must've opened another project (or an older saved version of my standard one) at some point that cleaned up whatever the problem was.

      --
      Posted from my Android phone. Oh, I can change this? There, that's better...
    169. Re:Long Answer? by ahuimanu · · Score: 1

      Don't you mean WPF (Windows Presentation Foundation) and not WCF (Windows Communication Foundation)?

      --
      shock the monkey
    170. Re:Long Answer? by Anonymous Coward · · Score: 0

      Iteron?

      The Itanium requires compilers to reorder instructions, otherwise it will be ghastly slow. It's like the worst of both RISC and CISC worlds.

    171. Re:Long Answer? by C0vardeAn0nim0 · · Score: 1

      just bring it down to state 5, dude. sun boxen can cut the power by themselves, ya know ?

      --
      What ? Me, worry ?
    172. Re:Long Answer? by murdocj · · Score: 1

      I'll tell you this, if you don't run your work in a separate thread, you end up with unresponsive interfaces. You can do tricks like periodically stopping work and checkpointing. But if you run into a database deadlock, or some communications deadlock, or you have a developer on your team who doesn't know his code is going to be used in a UI, then your interface hangs. Threading is almost mandatory in well behaved Windows Apps.

      The grandparent post specifically said you rarely need multiple UI threads. So yeah, you can have multiple worker threads in the background so your UI thread remains responsive, but you only have one thread running the UI.

    173. Re:Long Answer? by mdarksbane · · Score: 1

      I wouldn't call a video application using DirectShow a "toy" application. I'd call it every modern video player made for Windows, and a core part of OS functionality.

    174. Re:Long Answer? by Anonymous Coward · · Score: 0

      They released the source for that years ago.

    175. Re:Long Answer? by shutdown+-p+now · · Score: 1

      His big complaint about Windows Forms was threading, which doesn't seem like a big issue (you may have multiple threads once-in-a-while, but will you have more than one working with the UI?)
      What's more, quite a few UI toolkits out there require to use the same thread that created the window to manipulate it, so it's not like it's Win32-specific. Besides, it's spelled out clearly in the docs, and a number of tools to handle it almost painlessly are provided (such as the ability to queue a call to a function or a lambda on the message queue of the window - which will then obviously run on the window thread - from the background worker thread; and, in .NET 2.0+, the BackgroundWorker class, which provides for a clean separation between UI and worker thread, and manages all the inter-thread communication).

      It's also ironic how he then goes on to rant about Win64, conveniently forgetting to mention that any pure .NET application is, in fact, fully 64-bit enabled on any x64 or IA64 Windows platform without even a need to recompile.

      There are weird versions of a lot of things left over for the VB6-VB.Net porting wizard to use.
      Yes, and they all live in namespace "Microsoft.VisualBasic". Most C# developers never even see that one.

      The selection of functions on the String class has some very strange ommissions (.Right(n) would be nice).
      Substring() does the job, so it's not a big deal.

      The IO libraries need a smooth system to switch between strings and structured objects when dealing with paths and filenames.
      That one I agree with - while the utility methods such as Path.Combine are quite handy in cross-platform code, I'd prefer a full-featured class to handle filesystem paths, similar to boost::filesystem. On a side note - does Java has that?

      FTP is still way too difficult.
      What's so difficult about it?

      WebRequest request = WebRequest.Create("ftp://...");
      Stream data = request.GetResponseStream();
      ...
    176. Re:Long Answer? by rodgertq · · Score: 1

      If it wasn't a UI element we were talking about here you'd still have to deal with some manner of synchronization primitive, which could have potentially been disposed of already (event occured during app shutdown) or a wait timeout resulting in a condition that needs to be handled. I won't argue that there isn't some opportunity for excellence on the part of the framework/runtime here, but thread synchronization and communication of any sort is going to require more care on the part of the developer regardless of language, platform, or API. It's been many years (~13) since I've written code for NeXTStep..er..OSX but I don't recall this problem space being substantially easier to manage there.

    177. Re:Long Answer? by shutdown+-p+now · · Score: 1

      Your average .NET developer wouldn't bother with that (and rightly so) - he'd just use DataGridView, which provides both the sorting and the icons for free, while covering 99% of all the cases ListView does (the only reason why you might want to use the latter is when you need the ability to switch view mode from detail to the other three).

    178. Re:Long Answer? by shutdown+-p+now · · Score: 1

      So, my question is, whence the hostility, man? When mac users/programmers say "Our platform is great!", windows users/programmers don't say "Ours is too!", but rather insist on "No, you suck!"
      Funny, my experience on /. is precisely the opposite. I don't often see people slamming Objective-C and Cocoa, but every time there is a story about .NET and Mono, hordes of "true FOSS" zealots charge with battle cries of ".NET sucks worse than Java and is slow", "it's all wrong because it lets you use Win32 API - that's vendor lock-in!", and "it's not GPL, so screw it".

      Personally, I am an MCPD, and write software for Microsoft platforms for a living (C++/Win32 as well as .NET, both WinForms and ASP.NET). Yet I also like the simplicity and power of PyGtk (and yes, of course, Gtk#) on Linux, the elegance of ObjC and Cocoa on Mac OS X, and the sheer convenience and speed of Qt everywhere. They are all great tools and frameworks, and I hope that Microsoft learns from all of them and makes their development tools even better (and guess what? they do learn!).

    179. Re:Long Answer? by senedane · · Score: 1

      I've got to agree here, as much as it plagues my conscience. ;P I recently picked up a new copy of VS to play with .NET... It's been YEARS since I've programmed windows apps, but I've got to say .NET is the best I've seen out of Microsuck. I honestly like C# more than Java (too bad I can't put Java's portability into it :(). The libraries seem more adequete than this guy gives credit for, and the fact that I can plug my own libraries in with limited re-writing is a huge plus due to the language "synergy" in .NET. Let's be honest, basic structured computer organization dictates that the higher level the language, the quicker development can be at the expense (usually) of efficiency. So it's a nice compromise to me to be able to write a program in C# in short order and throw just the heavy workload functions in as C libraries. Take it with a grain of salt as I've limited experience with .NET at this point, but thus far I'm impressed... Much moreso than I have been with any other Microsoft product.

    180. Re:Long Answer? by nguy · · Score: 1

      But you can't. MS has added new features to Win32 (and VC++/MFC), and MS is going to continue to do so in Windows Seven.

      So? Apple keeps adding new features to its C-based APIs as well.

      But having to drop into Win32 to call new features that have only just been added?

      How's that different from Cocoa? Cocoa programmers constantly have to call plain C APIs and Apple keeps adding them. At least .NET allows unsafe C code to be wrapped safely once. In Cocoa, there is simply no getting away from unsafe C code. .NET is not my favorite environment, but it is still technically far ahead of Cocoa and Objective-C.

    181. Re:Long Answer? by shutdown+-p+now · · Score: 1
      This is almost never a problem in practice, since 1) Invoke can be safely used from the same thread, and 2) Invoke is almost always called on a form which started the worker thread in the first place (presumably in response to some user input), and therefore it certainly has the handle created already.

      Of course, even better (and a recommended approach in .NET 2.0) is to just use BackgroundWorker.

    182. Re:Long Answer? by jafac · · Score: 2, Funny

      yeah.

      Start->Run->/cygdrive/c/cygwin/bin/bash -c shutdown -s 00

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    183. Re:Long Answer? by plague3106 · · Score: 1

      Some griping from the poster

      Yes, I have read about those properties. I even use InvokeRequired occasionally. Why you are trying to update a UI that doesn't exist is beyond me though. Your whole arguement is based on a background thread that completes quickly before your UI is even built up. Really, if your background operation returns that quickly, why do you need another thread? You're better off keeping things in the UI thread at that point. Why you would allow controls to be created on a background thread is beyond me. It smacks of stupidity.

      No, not at all. You're being obtuse.

      If .NET is the way forward, *why are they not adding the ribbon to .NET*? Why have they added one to MFC, and why are they adding one to Win32, but *nothing* for .NET? Do you not see the contradiction here?


      Who said they won't be adding the ribbon to .net? Depending on how long they've been working on it, it's likely they started building it with MFC and so that's why it's there. It's speculation though. If you really want to have your question answered, I suggest asking someone at MS and not me. Unless you're just here to bitch.

      I don't want them to "port" anything. I want good clean APIs, and a "port" of Win32 won't provide that.

      Port, as in build API which provides the same functionality. Not a literal line for line port. Christ, you say I'm obtuse?

    184. Re:Long Answer? by nguy · · Score: 1

      Compare this to the current state of .NET, where developers have to constantly mix in win32 calls to do anything but the most basic applications

      Are you joking? Objective-C is unmanaged code that mixes C and Smalltalk code everywhere. Even if .NET programmers occasionally call out to C (and they rarely do), that's negligible compared to the unsafe mess that Cocoa and Objective-C programs are.

      Apple IS abandoning Carbon.

      No, they are merely not making a 64 bit version of it. Furthermore, whatever Apple calls it, there will continue to be huge numbers of C-based APIs. And even if there weren't, except for the method call syntax, Cocoa APIs are just as bad as C based APIs.

    185. Re:Long Answer? by scot4875 · · Score: 1

      As a former CS student and a holder of a degree in computer science, I noticed that most of my classmates were incompetent programmers. They were scared to death of anything other than text interfaces, had no idea how to use an IDE, and thought that "printf" was the alpha and the omega of debugging.

      Maybe things have changed, and maybe your school is different, but I thought I'd put my anecdote up anyway.

      --Jeremy

      --
      Jesus was a liberal
    186. Re:Long Answer? by nguy · · Score: 1

      Look, if the argument is going to be "Don't use Win32, use .NET" then .NET has to do all the things that Win32 can do. So which is it?

      Many people write C# programs without ever calling Win32 directly. And Win32 API calls can be safely wrapped up in C# classes. In contrast, in Objective-C, you have no choice at all but to call C code. In fact, even Cocoa and Objective-C APIs are unmanaged and unsafe.

      I don't like Win32 or .NET, but to claim that Cocoa and Objective-C are better is ridiculous. Cocoa and Objective-C are obsolete. C# and .NET may be bloated, but at least they are on the right path.

    187. Re:Long Answer? by Doctor+Faustus · · Score: 1

      Substring() does the job, so it's not a big deal.
      MyString.Substring(MyString.length - n) will suffice (although I'm always going to look at that and suspect I have a one-off error). I just got used to having Right$(MyString, n) in VB 6. On the other hand .StartsWith and .EndsWith more than makes up for it, and the left-to-right string method calls are a big win. There are others I'm occasionally surprised to find aren't there; I'm just not coming up with them right now.

      That one I agree with - while the utility methods such as Path.Combine are quite handy in cross-platform code, I'd prefer a full-featured class to handle filesystem paths, similar to boost::filesystem. On a side note - does Java has that?
      I've never used Boost, so I can't say for sure, but I think Java and .Net both have some semblance of that. .Net's usually seem to be easier to use, but there are a lot of odd cases where something will only work with a string or only work with the structured objects. System.IO.FileInfo, for example, will tell you the extension of a file, but if you want the name without the extension, you need to make it a string and pass it to System.IO.Path.GetFileNameWithoutExtension.

      What's so difficult about it?
      Maybe I shouldn't have said anything about FTP. I didn't really get a chance to learn it before my coworker handed me a wrapper class to the WebRequest system that's 800-some lines and kinda flakey. Looking at your comment and then the code for the wrapper class, it appears the author wasn't really comfortable with streams.

      I need to connect to an FTP site and scan a list of directories for any files, download them, and remove them from the site. Is there any built-in functionality that handles this sort of thing well?

    188. Re:Long Answer? by 0111+1110 · · Score: 1

      Both .NET and Java are descended from the C branch of languages, but they really are moving well beyond that initial inheritence into areas which Dennis Ritchie and Bell Labs never could have anticipated or probably even imagined (there was no practical context in which to have a serious discussion about object oriented programming back in the early 1970s because many of the concepts that are in .NET and Java today hadn't been invented yet or were only tossed around as theories by academic computer scientists). Yes I'm sure those morons at Bell Labs could never have imagined that something like C could possibly have been replaced by something like .NET. Not in their most terrifying nightmares could they have imagined that.

      A bit off topic but there's something I don't understand about modern programmers. Do you see any need at all to change the way you write code due to the fact that, at least for the moment, single threaded performance of CPUs has come to a screeching halt? Or are you under the impression that your .NET code is as optimized as assembly? I do not understand why there is not some kind of movement toward lower level languages. Does .NET at least have an easy way to interface with assembly for inner loop, time critical sections of code? I would imagine that many modern coders would reject assembly because it not only requires use of higher brain functions in the cerebral cortex but also doesn't have garbage collection.
      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    189. Re:Long Answer? by shutdown+-p+now · · Score: 1

      IList requires integer indexing. This makes it unsuitable for some kinds of sequential collection such as linked lists, which have no acceptable way of implementing integer indexing. Consequence? IList, whose documentation proudly claims to be "the base interface of all generic lists" is not, in fact, "the base interface of all generic lists". LinkedList does not implement IList.

      It might be a wrong choice of terms there, but what's wrong with an abstraction specifically for a random-access list? LinkedList implements ICollection, which is just as well.

      IList has no ToArray, but List does. Sure, ICollection has Count/CopyTo, but if the convenience method is good enough for List, it's good enough for IList. OTOH, if the convenience method is unnecessary for IList, it's unnecessary for List.

      There are plenty of such methods for List; the reason why I think they aren't there in IList is because then you'd have to implement them every time you implement IList, and they really have only one obvious implementation. What they really needed there was extension methods, and once they've got them in 3.5, this problem is solved: every IEnumerable now has ToArray().

      Except for to confuse me, why do ICollections have a Count, when arrays have a Length? What's the meaningful semantic distinction that I'm missing here?

      Collections consist of items, so it is meaningful to talk of a count of items in a collection; "length" implies continuity, and not all collections are continuous (but arrays obviously are). On the other hand, it has traditionally been "array length" in a lot of other languages. I would imagine String.Length is named as such for the same reason. Of course, all arrays are also collections, and as such have Count as well.

      Why do arrays have LongLength but with no corresponding LongCount for ICollections (3.5 adds LongCount as an extension method, but that gives it inconsistent (method) syntax, and of course it can never work because even if the collection were extended to support long lengths, an extension method can never exploit that fact, because the extension just works on IEnumerable which supports only an int Count)?

      Arrays have LongCount because they are also used as binary buffers in .NET, and sometimes you just want to have one larger than 2Gb. I haven't ever seen a case where you'd want a generic collection of 2^32 items, though.

      By the way, IEnumerable doesn't have Count (the only thing it has is GetEnumerator). LongCount extension method calculates the count by enumerating the collection and counting the items. The only reason why it exists is that arrays are also IEnumerable, and thus you might want to use all the LINQ stuff with them, while still working with 2Gb+ arrays.

      Why do arrays have LongLength, and not simply have Length be a long? It surely didn't take a whole lot of foresight to figure that one out, did it?

      Because you only rarely need long arrays, and if Length was long and no other option given, than all array iterations would also have to use long. It is simply more practical to have both options.

      Where do I find reverse iteration/enumeration?

      Enumerable.Reverse()

      Where do I find bidirectional iteration/enumeration?
      Why is there no generalized mechanism for storing my position in a container?

      Rather unfortunately, there isn't a generic interface for that. By the way, there is no "bidirectional enumeration" by definition - that's strictly iteration. I guess that's why they've called it IEnumerable ;)

      Anyway, that's something .NET has in common with Java (which also has similar weaknesses in its iterators), and what I also find annoying after STL experience.

      Why does the LinkedList expose implementation detai

    190. Re:Long Answer? by shutdown+-p+now · · Score: 1

      Oh, a fellow SharePoint sufferer... I share your pain, I truly do. For all the good stuff there is in .NET, SharePoint API will bring every despicable, dirty, hackish thing it is possible to come up with, and then some. It's actually much less logical and more messy than coding against raw WinAPI in C, and that's not a good comparison. God help us...

    191. Re:Long Answer? by VGPowerlord · · Score: 1

      I have my Windows key set to do that.

      By power button, I meant the one you use to turn the computer on. By default (at least on Desktops), it's set to "Shut down." if you press it while Windows is running.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    192. Re:Long Answer? by dcam · · Score: 1

      You know what? I used to think this too. I used to think that design was a waste of time because you can't anticipate the problems that crop up during coding.

      I've changed my mind.

      If you don't spend any time on design, you often end up coding yourself into a corner. Or you undo a lot of code. I'm not saying that every detail should be planned out, but some design can save a lot of time.

      And you are completely wrong to say that re-writing is 10 times faster than writing in the first place.

      --
      meh
    193. Re:Long Answer? by shutdown+-p+now · · Score: 1

      I need to connect to an FTP site and scan a list of directories for any files, download them, and remove them from the site. Is there any built-in functionality that handles this sort of thing well?
      Downloading I've already mentioned, and removing only requires one extra line ("request.Method = WebRequestMethods.Ftp.DeleteFile"). Listing is trickier - you have to use WebRequestMethods.Ftp.ListDirectory, and then parse the resulting list of files (in plain text, one name per line) from the output stream yourself - which is, of course, quite easy with StreamReader, but annoying nonetheless.
    194. Re:Long Answer? by KutuluWare · · Score: 1

      I hope that's not his complaint because it's flat out untrue. In Windows, there isn't a single "GUI" thread (though it's often easier to behave as if there were) but each visual element is "owned" by the thread that called whichever OS-level API call allocated its resources. In .NET every "Control", which is the base class for everything that has a UI, includes a very easy to use method called Invoke() that you can pass a delegate (.NET function pointer) into and have it run on the appropriate thread. This is such beginner-level stuff I even found it in a CS101 college freshman VB book.

      And, to answer your concerns from a lower-down post, the reason the remarks in the MSDN article are so scary is because MS has made sure that every possible idiotic mistake you could make has been documented. At the risk of way oversimplifying things -- every Windows visual element has a handle (basically, an opaque value that's analogous to a pointer) associated with it. The API calls to create visual element return this handle to the process, and the owner thread uses that handle to do anything it needs to in the future. However, since the .NET Control classes are wrappers around the non-object-oriented Win32 API, there is a possibility that you could run code on a Control before the class has actually allocated a handle, meaning the control isn't yet valid. At this point, the whole issue of cross-thread conflicts is moot because there's no control handle for the thread to own, but it's still not exactly "safe" to try to interact with the control.

      In order for this to be a problem you'd have to fire off background threads in some constructor or have them try to access a form before you've even bothered to display it, which is a pretty weird thing to try and do -- but if you do it, MS has a way for you to figure that out and do the right thing anyway.

    195. Re:Long Answer? by encoderer · · Score: 1

      Huh?

      Nobody ever suggested that .Net would REPLACE the Win32 API.

      It was sold as a simple abstraction layer. That's it.

      Microsoft DID, however say that managed code was the future. And it is.

      Those that point to the "failure" of managed code in Vista are oversimplifying. Look at the Singularity concept. A managed code OS works. The problem was the mixing of managed and unmanaged code.

      For example, when they were developing the windowing system, every unmanaged library the new managed-code windowing system called had to have a managed-code wrapper. At the OS level this caused too much a performance hit.

      Now, if all the libraries were native, there wouldn't be that problem.

      Anyway, I'm getting off target: .Net was ANYTHING but "hastily cobbled." They hired Anders just for .Net. The project began in the mid/late 90s.

      And the results are excellent. .Net is an excellent environment, a PLEASURE to use, which is more than I can say about template metaprogramming in C++.

      And actually, .Net isn't tied to a single platform. I've written about a dozen C# apps of all sizes, from simple CLI apps to more complex client/server apps. 11/12 runs flawlessly on Mono.

      C++ isn't going away for a long, long time. But Managed code is here to stay.

      And .Net really is a pretty good start.

    196. Re:Long Answer? by Slime-dogg · · Score: 1

      I find the articles critiques very hard to swallow. The argument that .NET is limited by the attempt to be simplistic is asinine.

      The arguments against .NET, particularly, are lacking in detail and support. Just because some dude says "this is so," doesn't mean that he hasn't screwed something up along the way. He denigrates .NET, but only gives details on why it's "broken" due to Win32.

      .NET is like Java, in that there is more than one way to handle forms. If Winforms doesn't work for you, use gtk# or qtsharp. Options exist, and they don't need to be tied to Win32. The complaint about the inflexibility of the library merely demonstrates that the writer hasn't worked very much with .NET. .NET is both flexible and extensible, giving you the tools to easily create what you interpret as missing.

      Let us not forget that Objective-C has its own set of issues, and that it isn't exactly the most convenient language to use. I wouldn't be surprised if some .NET fanboy wrote a similar set of articles in favor of windows, and similarly knocking Obj-C.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    197. Re:Long Answer? by ceoyoyo · · Score: 1

      "since the .NET Control classes are wrappers around the non-object-oriented Win32 API, there is a possibility that you could run code on a Control before the class has actually allocated a handle, meaning the control isn't yet valid."

      I haven't programmed Windows since 95/98, when things definitely were hellish, so I can't say whether the author has a point or not. This does sound like what he's talking about though: the Win32 (and Win16, and DOS) heritage of Windows, that is maintained in even the cutting edge APIs, causes problems.

    198. Re:Long Answer? by ewanm89 · · Score: 1

      I know too many programmers who think GUI's are the be all and end all of programming, and don't even know what printf is. printf can be rather usefull for debugging purposes, but it can only give limited information.

      Generally I know more incompetent programmers because the lecturer wanted to get them to do "fun" stuff with GUIs than those that are incompetent but don't do gui programming.

      You don't need a gui on every algorithm implementation. It's useless and pointless.

    199. Re:Long Answer? by DrPizza · · Score: 1

      So? Apple keeps adding new features to its C-based APIs as well.

      Apple isn't claiming otherwise, though, whereas posters here are claiming that people shouldn't be using Win32 at all, but instead using .NET.

      AFAIK, Apple has never pretended that Cocoa is complete; that you use e.g. BSD sockets is promoted as a virtue, not a flaw.

      To make it clear: my objection is to people claiming that criticism of Win32 is in some sense "invalid" because I "should" be using .NET. If I "should" be using .NET then MS has got to stop adding features to Win32 and make .NET a complete replacement. Until that happens, criticism of Win32 is fair game.

    200. Re:Long Answer? by KutuluWare · · Score: 1

      I doubt his complaints were this specific; I have no doubt that there is legacy cruft in the .NET Framework somewhere, but so far the only notable example I've run across in my development is the decision to use a signed integer for buffer lengths in the stream code (makes it annoying since Array.Length is an unsigned in and Stream.Write takes a signed int so you can't write a whole array in one step). As far as this window handle issue -- that's like saying that Cocoa is old and outdated because you can't use a GUI object before you call new() on it. It's just how things work.

    201. Re:Long Answer? by ceoyoyo · · Score: 1

      In cocoa you can't accidentally call a method on a GUI element before it's created. Well, I suppose if you really tried you could call it when it was alloc'ed but not inited, but you'd get an exception, not some unpredictable instability.

      Actually, I don't think I've ever used an object oriented GUI toolkit where such a thing is possible. I can't really see why it's necessary even in an OOP wrapper around a non-OOP API.

    202. Re:Long Answer? by Nicolay77 · · Score: 1

      I really like C++. Fast objects in the stack and stuff.

      But anonymous lambda functions with C++ templates?

      As somebody who also likes to use Lisp, I think of that hack as convoluted and ugly.

      --
      We are Turing O-Machines. The Oracle is out there.
    203. Re:Long Answer? by Nicolay77 · · Score: 1

      I think it is the proof of the pudding is in the tasting.

      Otherwise it doesn't even make any sense.

      --
      We are Turing O-Machines. The Oracle is out there.
    204. Re:Long Answer? by daveisfera · · Score: 1

      Visual Studio's debugger is GREAT, and that's something that is VERY hard to give up.

    205. Re:Long Answer? by gatesvp · · Score: 1

      OK, this is pretty weak and a very far cry from having to constantly mix in win32.

      To implement this in .Net you just handle the Mouseclick event for the control, check if it's in the header area, handle code as appropriate. Honestly, I'd just extend the existing control and add this feature such that it handles & suppresses the general MouseClick, changes the header color and fires a new HeaderClicked event. Add the arrow by overriding the Paint method.

      Calling Win32 API use "common" in .NET is quite misleading. If anything, it's quite rare.

    206. Re:Long Answer? by Meski · · Score: 1

      (Visual C++'s IntelliSense just fell over after about 2 hours of using it and never came back, and refused to give any information on any library - not even the standard C++ libraries.)

      Visual C++ has a nasty habit of having IntelliSense just randomly break. If you close VC++ and delete the project's .ncb file, it'll regenerate the IntelliSense data and *sometimes* it'll start working again. And often it won't. Deleting ncb makes the same kind of sense as expecting Ctrl+ScrollLock to make the file search work. :)
    207. Re:Long Answer? by True+Vox · · Score: 1

      Well, *I* found the comment funny, anyway. Faux +1!!!

      --
      "Gratuitous complexity is akin to chaos" - True Vox
    208. Re:Long Answer? by Chuffpole · · Score: 1

      Not Found

      The requested URL /articles/perl_article.htm was not found on this server.
      Apache/2.2.3 (Debian) PHP/5.2.0-8+etch10 Server at uberconcept.com Port 80

    209. Re:Long Answer? by edwdig · · Score: 1

      And often it won't. Deleting ncb makes the same kind of sense as expecting Ctrl+ScrollLock to make the file search work. :) I did say *sometimes* it would fix it, which implies it won't often.

      But deleting the .ncb does make sense, considering that's the data used for IntelliSense. With VC 6, the file would often get corrupted, and deleting it would fix the issues. With newer versions, that's sometimes the issue, but apparently there are other issues as well.

      Is Ctrl+ScrollLock supposed to mean something or was that just a stupid comment?
    210. Re:Long Answer? by drew · · Score: 1

      The risk there is that you are reinventing the wheel with JavaScript DOM code and other plumbing that have been done thousands of times before by countless other developers and, lets face it, probably done better.

      Probably, but not necessarily :) But when it comes down to it, if you plan to do anything non-trivial in a browser, you have to use JavaScript one way or another, whether that means writing it yourself, using pre-written libraries, or using server generated code. For people who don't have a strong background in JavaScript, the third option may be attractive, but from what I've seen of Microsoft's attempts so far I'd rather not use their JavaScript code or have them generating it for me. I do tend to reuse existing JavaScript libraries whenever appropriate (but I've been working in the language long enough that I can do a pretty good job of writing my own when I have to) so hopefully I am not reinventing the wheel too often... I did recently find .NET to work really well for heavily script driven sites - the team I was working on created C# web services for all of the remote data operations, and a simple XmlHttpRequest SOAP gateway. Then the backend guys wrote all of the web services while the JavaScript gurus worked their magic on the front end.

      Perhaps you are one of the ellusive jedi masters of C and C++, but I think it is fair to say that C or C++ are really innapropriate choices for the majority of web developers these days.

      I certainly wouldn't claim master status there, but the work that I do in C only barely qualifies as Web Development in that yes data is being passed over an HTTP connection. When I say low level server architecture, I mean that I am actually writing a server. The server does a lot of audio processing, so there is a high demand on CPU time, and there is a lot of low level code to optimize filesystem and network throughput that would be hard to implement in a higher level language. I've looked into other languages in the past, as I will admit the application is rather tedious to maintain. C# would be nice, but it is currently missing some of the features that I need with respect to asynchronous IO. Java's NIO looks like it may work, but so far there hasn't been any interest at my employer about pursuing that route, and at this point the system is mature enough that I'm not sure a rewrite in another language would really be worthwhile.
      --
      If I don't put anything here, will anyone recognize me anymore?
    211. Re:Long Answer? by nguy · · Score: 1

      To make it clear: my objection is to people claiming that criticism of Win32 is in some sense "invalid" because I "should" be using .NET.

      Well, and your objection is bogus. The fact that something gets added as a Win32 API means that it is accessible from C/C++, whereas if it got added as a .NET API, it wouldn't be. But the fact that something gets added as a Win32 API doesn't say anything about the quality of its binding to C#. In fact, Win32 APIs bound to C# generally end up with managed interfaces.

      AFAIK, Apple has never pretended that Cocoa is complete; that you use e.g. BSD sockets is promoted as a virtue, not a flaw.

      But in the case of Apple, it is a flaw; in contrast to C#/.NET, where even the Win32 access can be managed, any BSD or other C interface used from Objective-C is intrinsically unsafe and unmanaged. Apple continues sinking into the tarpit of unmanaged code. Objective-C simply doesn't separate high level and low level code enough.

      If I "should" be using .NET then MS has got to stop adding features to Win32 and make .NET a complete replacement. Until that happens, criticism of Win32 is fair game.

      Microsoft seems to be doing the right thing: they add Win32 APIs for things that need to be callable from both C/C++ and C#. Nothing would be gained by making those APIs .NET-only. And the fact that there are parts of the Win32 API that truly suck badly doesn't need to bother you, because those parts already have better .NET equivalents; you never need to use them.

      Of course, I think you should be using neither .NET or Cocoa. But what I said also applies on Linux: C#+Gtk# and Python+PyGtk are much better combos than Objective-C+Cocoa.

    212. Re:Long Answer? by darkpixel2k · · Score: 1

      When mac users/programmers say "Our platform is great!", windows users/programmers don't say "Ours is too!", but rather insist on "No, you suck!".

      Of course that's going to be the answer.
      A valid response to "The Mac is an awesome platform" is not "Windows is an awesome platform too". Why? Because the initial topic was the Mac platform and how awesome it was.

      For example, if someone comes up to me and says "My Tandy TRS-80 is a really fast computer", I'm not going to say "My AMD Athlon 64 2800+ is fast too". I'm going to say "No, your Tandy TRS-80 is an old piece of shit."

      --
      There's no place like ::1 (I've completed my transition to IPv6)
    213. Re:Long Answer? by LaskoVortex · · Score: 1

      I'm going to say "No, your Tandy TRS-80 is an old piece of shit."

      No, if you are true to form as a jaded windows user, you are going to say "All of you TRS-80 users suck." Go back and read my post.

      --
      Just callin' it like I see it.
    214. Re:Long Answer? by b4dc0d3r · · Score: 1

      Maybe it's the schwag, but I found your sig the most creative, witty, maybe drôle, reusable bit of verbiage I have recently seen. More people should be aware of it.

      Would that I had mod points.

    215. Re:Long Answer? by Hawke666 · · Score: 1

      Shutdown is always the bottom option, no matter where your taskbar is.

    216. Re:Long Answer? by rp · · Score: 1

      What I understood from the article is that .NET's design is poor in places because it stays so close to Win32, and he cites Windows.Forms threading as an example, not of lying, but of a nonintuitive way of having to do things. So what he says is "leaking over" is parts of the Win32 *design*.

    217. Re:Long Answer? by GWBasic · · Score: 1

      On balance Visual Studio is a far better developer environment, but that counts for nothing if you are trying to write a Mac GUI application, in which case Xcode is the only game in town as far as I know.

      I often write a lot of quick-and-dirty GUI applications in my spare time. Even though I've switched to Mac, I still do my quick-and-dirty GUIs in C# because I just don't have time to learn XCode / Objective C / Cocca.

      Frankly, it was faster/easier for me to learn GWT / Java / Eclipse then XCode! If only I could use that for a quick-and-dirty GUI application...

      A lot of technologies are supplanted by many nerds who learn them in spare hours during nights and weekends. XCode / Objective C / Cocca is certainly possible to learn if I can find 20-40 hours to dedicate to it; but I have other things I'd rather do with my time!

    218. Re:Long Answer? by Meski · · Score: 1

      But deleting the .ncb does make sense, considering that's the data used for IntelliSense. With VC 6, the file would often get corrupted, and deleting it would fix the issues. With newer versions, that's sometimes the issue, but apparently there are other issues as well. Yes, I know it gets corrupted, and it seems to have some other issue that makes it grow rather large. I meant it doesn't make sense, in the sense that it happens too often - if you had a database that returned: "Tables corrupted, reload from backup" all the time, you wouldn't think much of it[1] :)

      Is Ctrl+ScrollLock supposed to mean something or was that just a stupid comment? Yes, it does do something. Ever had the error: "No files were found to look in. Find was stopped in progress." Ctrl+ScrollLock fixes that.
      http://vidmar.net/weblog/archive/2007/04/17/Strangest-error-No-files-were-found-to-look-in.-Find.aspx

      [1] Oh yes, that's Jet. My bad.
    219. Re:Long Answer? by owndao · · Score: 1

      On balance Visual Studio is a far better developer environment, but that counts for nothing if you are trying to write a Mac GUI application, in which case Xcode is the only game in town as far as I know.

      All the "standard" make capabilities are in Xcode along with the latest GNU C/C++/Objective C compilers. All you need are the libraries and runtime to link with. If that will not do consider Qt 4.4. It purports to cover development on Linux /X11, Embedded Linux, Windows CE, Windows, and OS X. There are others as well but they tend to center around a single language.

      Having come from a mainly UNIX/VMS/Windows/OS X system integration background I have typically used EMACS (with lots of time-saving macros) as my editor with any "visual" UI tools available. I'll say Xcode beats every "component" environment I've ever used and is getting close to having the editor hold your hand every step of the way as in Visual Studio -- but not quite. As for the UI builder (Interface Builder in Xcode is, to me, amazing), you are not stuck with using Interface Builder. You can still hand code everything without the specialty apps if you had to but it would have to be for a very good reason. You also have all the scripting abilities of AppleScript along with terminal commands for the major applications too in case you like UNIX shell scripting.

      I'm sorry. What was the question? ;-)

      --
      Be as you would have the world become.
    220. Re:Long Answer? by darkpixel2k · · Score: 1

      Go back and read my post.

      Meh...I still stand by mine.

      --
      There's no place like ::1 (I've completed my transition to IPv6)
    221. Re:Long Answer? by Anonymous Coward · · Score: 0

      This is theoretically the plan with windows 7. A new, clean minimal and modular OS based on the server line, without binary compatibility for old apps, with a new API for the new OS

      Isn't this what MS always says about the next version of Windows? Then they get scared, as the new API performs at 50% of the speed of the old one, and they pull the plug.

  2. Re-runs by Anonymous Coward · · Score: 0, Insightful

    Good God how many re-run articles do we have to endure on Slashdot? This flamebait type of article is every 5 minutes.

    Slashdot hates America, Religion and Microsoft. We get it already!

    1. Re:Re-runs by Anonymous Coward · · Score: 0

      Its a simple procedure.

      Buy some apple stock, and then help market it with these articles ;p

    2. Re:Re-runs by Anonymous Coward · · Score: 0

      1.
      invest equally:
      MSFT
      AAPL
      GOOG
      RHT
      JAVA

      2.
      post to slash dot all day

      3.
      move out of mom's basement!

      4.
      ????!!! (get a girlfriend maybe)

      5.
      Profit!!!

    3. Re:Re-runs by Fred_A · · Score: 1

      Slashdot hates America, Religion and Microsoft. We get it already! Of course not, /. just likes to pull your strings.

      --

      May contain traces of nut.
      Made from the freshest electrons.
  3. With those arguements, any platform can suck by dreamchaser · · Score: 5, Insightful

    "It passes bad parameters to API calls, uses memory that it has released, assumes that files live in particular hard-coded locations, all sorts of things that it shouldn't do."

    Those are basically programming errors, not problems with the API. Don't get me wrong, I find Win32 to be a pain in the ass sometimes, but this article just reeks of flamebait.

    1. Re:With those arguements, any platform can suck by Ulfalizer · · Score: 5, Insightful

      I think you missed the point.

      The problem is that many major legacy applications depend on undocumented behavior because they make sloppy use of the Windows API (e.g. by assuming that a particular function will not segfault when passed a bad argument). For those to keep working, newer revisions of the API implementation must have the same undocumented behavior, which causes a maintenance nightmare.

    2. Re:With those arguements, any platform can suck by 0123456 · · Score: 5, Insightful

      "Those are basically programming errors, not problems with the API."

      I think you missed the point. For the sake of backwards compatibility, Microsoft supports applications which do all these things, and drags all the associated crap into future versions of Windows so they still run.

      For that matter, so do hardware developers: back when I was writing drivers for Windows I had to deliberately put bugs in our code to support applications which only worked because of bugs in the Microsoft versions of the drivers and would crash if we didn't replicate those bugs ourselves. We also spent weeks working around abuse of the API by a certain big computer company that can't program PCs worth a damn (or even, apparently, read API documentation).

    3. Re:With those arguements, any platform can suck by techno-vampire · · Score: 1
      I think you missed the point. For the sake of backwards compatibility, Microsoft supports applications which do all these things, and drags all the associated crap into future versions of Windows so they still run.


      So what you're saying is Windows has always been bug compatible with previous versions.

      --
      Good, inexpensive web hosting
    4. Re:With those arguements, any platform can suck by dreamchaser · · Score: 4, Informative

      No I didn't miss the point. Using an undocumented API is another example of bad programming. Yes, even HAVING undocumented API's is bad as well. Like I said, I was not excusing the mess that is Win32, I was just sayin'...

    5. Re:With those arguements, any platform can suck by 0123456 · · Score: 4, Insightful

      Pretty much; if they stop supporting old bugs, a lot of old software will break. I'm sure I found an old Windows 3.1 bug in XP some time back, but I can't remember what it was (something to do with driver installation, I think).

      Linux, in comparison, provides a fair amount of backwards compatibility, but doesn't have to overly worry because most software comes in source form and can be fixed when a kernel or library change breaks it. Windows doesn't have that option.

    6. Re:With those arguements, any platform can suck by Opportunist · · Score: 1

      But I hope we agree that having to use undocumented API calls because it's the only way is the fault of the OS manufacturer, yes?

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    7. Re:With those arguements, any platform can suck by x00101010x · · Score: 2, Funny

      At least with Windows7, the backwards compatibility nightmare will be over with virtualization similar to what Apple did.

      --
      DONT PANIC
    8. Re:With those arguements, any platform can suck by RiotingPacifist · · Score: 1

      OTOH mac os x didn't have to worry because there was no software to break.

      --
      IranAir Flight 655 never forget!
    9. Re:With those arguements, any platform can suck by fimbulvetr · · Score: 5, Insightful

      Maybe the point was that MS fosters bad programming by keeping legacy API calls around indefintely, whilst other systems do not. I'm the last guy to ever go pro-apple on /., having "been there, done that", but he really does have a point. MS is afraid to deprecate bad ways in favor of keeping some minor share of customers happy.

      While this has short term benefits, the long term imposes a hefty penalty, the same penalty MS (and some of its developers) is paying now.

    10. Re:With those arguements, any platform can suck by countach · · Score: 1

      Inconsistent APIs make it too hard. And Windows has half a dozen contradictory conventions for how to treat memory passed to APIs.

    11. Re:With those arguements, any platform can suck by drinkypoo · · Score: 4, Insightful

      Yes, even HAVING undocumented API's is bad as well.

      I thought we discussed this when Apple did it? Undocumented APIs are there for the use of operating system developers and other people who feel the need to tickle the operating system at a low enough level to fool it into doing things that it was never intended to do for you. This is your prerogative; it's possible to sniff through the structure of the binaries to find new functions, and it's possible to debug functions to see what they're calling, so no one can really stop you anyway.

      At the same time, being upset when they stop functioning correctly is the mark of a whiny idiot, because let's face it, they're undocumented. If you want that functionality exposed, by all means, cry to the OS vendor. Or, you know, you could support open source and/or free software and work with an environment in which you have all the source code and can at least make relatively responsible use of the undocumented functions, and if you are feeling froggy, even submit patches which express this functionality consistently with a documented API.

      Seriously though, undocumented functions are par for the course. If the functions are never intended to be used by anything other than the operating system, and the functionality is expressed through the OS in some fashion (use of undocumented APIs in Win32 has often been done to work around a bug) then there's really no problem. The portions of the OS that need to be changed when the libraries change can be changed in such a situation (and hopefully will fail tests if someone doesn't think to do it beforehand.)

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    12. Re:With those arguements, any platform can suck by bcat24 · · Score: 0, Troll

      Maybe you were being sarcastic, but I think you hit the nail right on the head. Apple's primary concern for OS X seems to be getting their own software to work. If an OS upgrade breaks some third-party program, tough luck. For Microsoft, things are quite different. There are thousands of crappy one-shot Windows applications out there, and Microsoft just can't afford not to keep them working.

    13. Re:With those arguements, any platform can suck by fractoid · · Score: 3, Insightful

      MS is afraid to deprecate bad ways in favor of keeping some minor share of customers happy. This is true, but remember that when you sum up the minor share of customers that's made happy by each of these legacy APIs, you end up with a large number of developers. A very large number.
      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    14. Re:With those arguements, any platform can suck by gmack · · Score: 1

      And you believe they actually will? Jokes about Microsoft promising big things and then failing to deliver have been around since the 80s.

    15. Re:With those arguements, any platform can suck by Spy+der+Mann · · Score: 2, Interesting

      But I hope we agree that having to use undocumented API calls because it's the only way is the fault of the OS manufacturer, yes? Conclusion: Microsoft's greedy and dirty tactics are the very cause of its doom.

      Someone said once (I forgot who) that Bill Gates wasn't a programmer. He was a businessman, and his business was computer programming. A true programmer would of course care if unauthorized copies of his operating system would be one of the main causes for viruses, spyware, spam and whatnot. A true programmer would care about developers not following the design guidelines. A true programmer would care about the darn security holes.

      But neither Gates or Ballmer care about this important stuff. They're not programmers, they're businessmen, and the only thing they care about is the f***ing money.

      No wonder Windows users are in deep sh**. Fortunately for me, I'm using Linux.
    16. Re:With those arguements, any platform can suck by pimpimpim · · Score: 2, Insightful
      What's the use of legacy support anyway. If you have a windows 95 application, it will always have problems running under XP. If it needs to use special PC ports (e.g. access to serial connections) it will be hell to get it working.

      I understand the need at some places to keep running the old software, I've seen spectrophotometers that had to be connected to an OS/2 program, just because the software was only written for OS/2, but those cases you should either use virtualization, or treasure your old hardware.

      --
      molmod.com - computing tips from a molecular modeling
    17. Re:With those arguements, any platform can suck by Aranykai · · Score: 1

      Hey, wasnt vista going to be "new from the ground up"? Shame its the same OS they released years ago called NT 4...

      Honestly, Windows 2000 was the last major advancement in the OS IMHO. XP and Vista have just added bloatware and problems, and their so called features could have been added to 2000 just as easily.

      --
      If sharing a song makes you a pirate, what do I have to share to be a ninja?
    18. Re:With those arguements, any platform can suck by LLKrisJ · · Score: 1

      ...in favor of keeping some minor share of customers happy I think you might actually be surprised of how big the share of customers is that use undocumented and or bad coding practices. :S
    19. Re:With those arguements, any platform can suck by nguy · · Score: 1

      And how is this different from Carbon/Cocoa? Carbon/Cocoa libraries also don't check for the validity of memory passed to them, also have weird undocumented edge cases, etc.

      In contrast to Carbon/Cocoa, .NET actually fixes this. Wouldn't it be nice if Apple also had a managed runtime and libraries...

    20. Re:With those arguements, any platform can suck by eulernet · · Score: 1

      There is also a problem with games.

      When Microsoft releases a new OS, almost all previous games break, and need patches, and Microsoft also releases patches so that the games could work (nobody knows what they patch in their OS).

    21. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0

      >>The problem is that many major legacy applications depend on undocumented behavior because they make sloppy use of the Windows API

      Actually, win32 programming has always been this way. The api is poorly documented so you need to figure out how things work. This leads to people using win32 in ways that weren't necessarily intended, since to get something done you needed to figure it out. The first thing that works wins...

      As far as using the undocumented stuff... why is this bad programming? If you need to do something you need to do something. You do what your boss tells you to do.

      This is why I moved to linux 10 years ago. I got tired of guessing how something was supposed to work. Using linux, I can read the source and find out for sure.

      -AC

    22. Re:With those arguements, any platform can suck by Opportunist · · Score: 1

      I dare say I am a programmer, but unauthorized copies of my work don't bother me that much. Actually it makes me happy in an odd way to see one of my program being shared on bittorrent. But then, I make most of my money with services rather than the raw software. If I didn't provide any meaningful service, I might feel different...

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    23. Re:With those arguements, any platform can suck by petermgreen · · Score: 1

      What's the use of legacy support anyway. If you have a windows 95 application, it will always have problems running under XP
      If an application ran fine under 95 and contemporary versions of NT it has a very good chance of running fine under XP.

      OTOH if the application developer ignored NT (despite microsofts stated plans to migrate everyone to NT with 95 being a stepping stone release) and did naughty things like accessing hardware directly it probablly won't work.

      Hell correctly written win16 apps run just fine under XP

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    24. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0
      I recall Microsoft suing Stacker because stacker used undocumented APIs.


      At the same time Stacker were suing Microsoft because they claimed MS were locking out competitors from important information and thus unfairly leveraging their internal knowledge which MS denied.


      i.e. to win one case microsoft would have had to lose the other, well, that'd be situation if the law were rational.

    25. Re:With those arguements, any platform can suck by petermgreen · · Score: 1

      Unfortunately the problem is not just undocumented functions (I agree anyone who uses those without a very good reason is an idiot, unfortunately the people who suffer when it breaks are probablly different people from the idiot who did it in the first place.

      There are lots of subtulties in the windows API that just aren't well documented. (quick example, the behaviour of the windows messages system in a mixed ansi/unicode system).

      Also problematic are functions that simply do not behave like the documentation says they shuold. So you end up having to reverse engineer how they actually behave before you can use them.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    26. Re:With those arguements, any platform can suck by nine-times · · Score: 1

      Warning: I'm not a programmer...

      ... but I understood the author to be implying that there were undocumented behaviors of otherwise documented APIs, meaning that programmers could try to do something sensible and get unexpected results.

      Now I don't really know if that's true, but his comments about Microsofts UI choices are certainly true. OSX and Linux DEs may have some inconsistencies here and there, but that screenshot in the article is absurd.

    27. Re:With those arguements, any platform can suck by drinkypoo · · Score: 1

      Unfortunately the problem is not just undocumented functions (I agree anyone who uses those without a very good reason is an idiot, unfortunately the people who suffer when it breaks are probablly different people from the idiot who did it in the first place.

      Yet another argument against closed-source software.

      There are lots of subtulties in the windows API that just aren't well documented. (quick example, the behaviour of the windows messages system in a mixed ansi/unicode system).

      "Not well documented" is not a description which applies solely to Microsoft products.

      Also problematic are functions that simply do not behave like the documentation says they shuold. So you end up having to reverse engineer how they actually behave before you can use them.

      Also not a fault of hidden APIs, just a sign of someone, somewhere, being an asshole.

      I agree there's lots of reasons to shun Microsoft. Most of them also apply to Apple (though not all.) I run Linux, and I am content. Well, except when I want to play certain windows games...

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    28. Re:With those arguements, any platform can suck by ceoyoyo · · Score: 1

      I think his point was that by not actually dropping those deprecated bits, or fixing your bugs, because it might irritate a developer somewhere, you get left with a substandard platform to do NEW development on.

      Apple isn't afraid to deprecate then eliminate the old cruft. They seem to do it gleefully, and they're not really all that afraid of who it screws. But by doing so they make the API better, and they make the third party apps better, by forcing them into better practices.

      Apple just told Adobe that, after the better part of a decade, Carbon is going the way of the dodo. Carbon was a transitionary API, and now is going away. Personally I think Adobe has been lax in not updating their products to use Cocoa years go. But now they HAVE to. And the new Adobe apps will be much more consistent with the rest of the platform because of it.

    29. Re:With those arguements, any platform can suck by init100 · · Score: 1

      Linux, in comparison, provides a fair amount of backwards compatibility

      I'd say that it's better than fair (for userspace applications). I've been able to run old (binary) Loki games released around 1999-2000 on my pretty modern Fedora 7 desktop without as much as a hitch, despite all the new features such as NX, ExecShield, ASLR, SELinux, x86-64 architecture, etc.

    30. Re:With those arguements, any platform can suck by Aceticon · · Score: 2

      I remember when in Windows the only way for an application to receive a notification when a directory was change was using an undocumented API.

      Interestingly enough, at the time all Microsoft applications (like Office Word) seemed to have this "feature" while Microsoft's own Knowledge Base explicitly stated that Microsoft had no intention of making that API public.

      Some of Microsoft's undocumented API features were not there for the benefit of the OS developers, they were there to provide a competitive advantage to Microsoft's own in-house applications development teams.

    31. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0

      Linux, in comparison, provides a fair amount of backwards compatibility, but doesn't have to overly worry because most software comes in source form and can be fixed when a kernel or library change breaks it. Windows doesn't have that option.

      Linux also has the advantage, that at least on a systems level, the Unix api's it reimplements have been a known quantity for quite a long time.

      Of course, the desktop APIs like QT, GTK+ change fairly often, and some like DBus and HAL are almost disturbingly recent.
    32. Re:With those arguements, any platform can suck by sjames · · Score: 1

      Those are basically programming errors, not problems with the API. Don't get me wrong, I find Win32 to be a pain in the ass sometimes, but this article just reeks of flamebait.

      They ARE programming errors and if that was as far as things went it would be no big deal. The problem is that MS then bends over backwards to try to keep this sort of crap working when it SHOULD just let it crash like the crap that it is. Even better, the bad parameters SHOULD have resulted in an error from the start (EINVAL).

      It's not like all backward compatibility is bad, but it requires taste and sensibility. MS shows very little of either in it's systems "design".

    33. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0

      You, sir, have obviously never used Gentoo.

      When libexpat changes its soname, TONS of shit breaks, and you don't even get any warning. "OK, we've just fucked up your system, please run revdep-rebuild. Hopefully you'll have something working again by tomorrow." And this sort of thing happens ALL THE TIME.

      Or just try to drop Netscape 4 on any modern Linux distro....

    34. Re:With those arguements, any platform can suck by sjames · · Score: 1

      Actually, MS, Windows, and the many 3rd party vendors DO have that option, they just CHOOSE not to exercize it.

      Over the years, there have been many different schemes where source was distributed with licensed software without making it free as in beer. In the old mainframe days it was expected. Some have been based entirely on the honor system, others provided much of the source including a glue layer and a few key object files to be linked in.

      If MS and co would rather die than do that, I vote we grant their wish :-)

    35. Re:With those arguements, any platform can suck by DECS · · Score: 1

      No there was lots of software to break. Photoshop and Office were key among them. All classic Mac OS apps prior to OS X needed significant rewriting to run well on Mac OS X.

      What Apple did differently is to draw a line in the sand and offer compelling new frameworks that offered significant advantages to developers willing to target the entirely new Cocoa, while also bending backwards enough to meet developers in the middle in offering support for Carbon, which was largely the old Mac OS API.

      The result was something Microsoft could have done if it cleaned up Win32 to the point of being usable while offering .Net as a clean and modern future platform. Instead, Win32 is full of bugs intentionally as an effort to run the SimCity from 1995, while .Net hasn't really offered the clean break it was supposed to. The result: Vistapocalypse!

      Vista, Seven and Singularity bear a striking resemblance to mistakes in Apple's past: Copland, Gerswin and Taligent:

    36. Re:With those arguements, any platform can suck by DECS · · Score: 1

      Windows Enthusiasts keep saying that, but what's the advantage to waiting three years for Microsoft to introduce another way to run Windows XP in Parallels/VMWare?

      Windows Vista, 7, and Singularity: The New Copland, Gershwin, Taligent

    37. Re:With those arguements, any platform can suck by xenocide2 · · Score: 1

      And as usual, Apple is somewhere between just as bad or worse as MS. They do have undocumented APIs, which you're not supposed to use because of things like that. Of course they can use them, since they can fix it before the new library is released. Plus it gives them a competitive advantage over third parties.

      From what I've heard from developers who've left Mac behind, though, is that last straw was a user base that's impossible to deal with. Being called an idiot because someone disagrees with your UI, or because your software doesn't support the latest OS immediately is not fun, apparently.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    38. Re:With those arguements, any platform can suck by ckaminski · · Score: 1

      I don't know if you mean absurd in that it's a horrible argument to make, or absurd in that it's unbelievable that Microsoft could be so inconsistent. I would tend to argue that it's the latter. For all their UI guidelines, they do not present a consistent interface anywhere. MDI was in, now it's out and SDI or pseudo SDI is out, but opening a Word document brings the last opened Word document to the foreground which is a PITA if you're on multiple displays. Well now SDI is out, and the tabbed interface is king (SQL 2005 Management Studio, DevStudio, etc).

      Microsoft is schizo. They latch onto every new craze without for once considering if it's appropriate or meaningful or that they pain their end-users with horrendous retraining time.

      That screenshot was eyeopening. They want to present a consistent interface to their end users and want others to adhere to a specific set of guidelines to pass their vaunted Logo certifications - I wonder if there's a single Microsoft app today that could pass Logo certification.

      Do as I say and not as I do is the law at Microsoft.

      I love 'em, and I hate 'em. :-/

    39. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0

      Well, keeping old api calls around is one thing, but building the OS around it is another.

      Windows SHOULD have a library which gets loaded and has translates old API calls to NEW API calls for the NEW OS... but then they dont exactly have a NEW OS now do they?

      Dont get me wrong, I LOVE VISTA for what its worth, its fast clean and stable. More stable, dare i say, than Ubuntu which crashes my machine as soon as you install 8.04.

      BUT Microsoft should have those Libraries, and when they are needed they should give the option to "always run" or "run this time only" and they should POINT the finger back at the Crappy developer who REQUIRES them.

      Also, when using .NET you dont have these headaches. The only thing I've had to use this crap for is things like keyboard hooks (and there is prob a nice way to do it, that i have not found)... .NET gives a developer all the tools in an easy way to make whatever their heart desires.

      Thoughts?

    40. Re:With those arguements, any platform can suck by jafac · · Score: 1

      Undocumented API's are fine in common practice.

      But Microsoft is a CONVICTED MONOPOLIST.

      They are bound by law to expose their API to third party developers, and so far, the court has not bothered to enforce this ruling.

      However, judging by the craptacular performance of their latest offerings, my guess is that they're no longer reaping any effective benefit to leveraging any "hidden undocumented API".

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    41. Re:With those arguements, any platform can suck by nine-times · · Score: 1

      I don't know if you mean absurd in that it's a horrible argument to make, or absurd in that it's unbelievable that Microsoft could be so inconsistent. I would tend to argue that it's the latter.

      Yes, I intended the latter. To see that screenshot is bad enough, because it's not just that different applications have different skins. Worse than different skins, different applications are laid out differently, so very similar controls will be in different places. Even worse than that, different applications will behave differently. As the author notes, Different Vista applications from Microsoft hide the menu bar (including Office 2007 and IE7), but they all do it in different ways, and the user has to use a different method to gain access to them.

      You brought up weirdness with Microsoft Office and the MDI/SDI stuff. Now I'm using Office 2003, and I notice that when I open several Excel documents, they all open in sub-windows of the same window, but each document gets its own button on the taskbar. I don't know of any other applications that behave that way.

    42. Re:With those arguements, any platform can suck by drinkypoo · · Score: 1

      They are bound by law to expose their API to third party developers, and so far, the court has not bothered to enforce this ruling.

      In which country? In the US they've already pretty much been let off... Thanks, Ashcroft, for making the world a safe place for the Bill and Melinda Gates foundation, which makes for-profit investments in corporations which kill people. Whee!

      However, judging by the craptacular performance of their latest offerings, my guess is that they're no longer reaping any effective benefit to leveraging any "hidden undocumented API".

      Nope, they've changed a lot in Vista (to no good effect) and I bet this made all their backwards compatibility crap more expensive.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    43. Re:With those arguements, any platform can suck by fractoid · · Score: 1

      This is true. Apple is perfectly willing to break backwards compatibility, which causes massive problems to all four of their major developers, because Apple's market strength is its massive, koolaid-drinking fanbase. They can afford to screw their developers because it only strengthens their elitist image. People don't choose Apple to save money or to improve their business's bottom line or stock value. They choose Apple to make a statement.

      Microsoft has built a massive empire on being the cheapest way to do things. Their way of doing business is to make a solid business case for people buying their products, and if you can convince a big corporation that by spending $50k on your product they can save $60k, you have yourself a sale. And it's far easier to convince big corporations that they'll save money if they know that all the in-house software that they just spent half a million dollars developing will work on your operating system in 10 years time.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    44. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0

      No. It's not about "undocumented APIs", it's about undocumented behaviors in documented APIs.

    45. Re:With those arguements, any platform can suck by Anonymous Coward · · Score: 0

      It was written by someone who obviously has failed at becoming a successful programmer on the most used platform there is for personal (up through enterprise level) computing, in Win32 and .NET currently. For example: Does this Peter Bright have any applications that have done well over time even on the freeware and shareware circuits online (much less commercially sold wares)? No, nothing I could see or find upon trying using google or altavista. That alone, speaks for itself. Arstechnica is chock full of that kind (Big talking underachievers who cut & paste the words and findings of others and simply regurgitate them back after chewing them up, rearranging them). This is why that website has fallen into the gutter, and continues to do so. It amazes me slashdot considers them credible in fact. Another example is the fact that arstechnica has people writing for them as "authors" who have never even done the job themselves professionally much less for years or those without degrees or even certifications in computer sciences (e.g. Jeremy Reimer). I wonder if they seriously think anyone takes them seriously, because I do not, and simply because I do not listen to those who are not successful in a field since they are not qualified to talk about it via visible accomplishments they have earned, themselves. For instance, do you go to Doctors who have never operated on anyone at all (much less many times) for an operation? I don't. Anyone intelligent doesn't. People want the voice of successful experience, not of failures.

  4. Re:Yeah, yeah by Jeremiah+Cornelius · · Score: 3, Funny

    Ad?

    What is this "ad" of which you speak? Your words are strange to us, visitor.

    --
    "Flyin' in just a sweet place,
    Never been known to fail..."
  5. Unpleasant developer platform? by actionbastard · · Score: 1

    Having to deal with it everyday; now that's unpleasant.

    --
    Sig this!
  6. use the same techniques you learned 15 years ago by QuantumG · · Score: 1


    Umm.. that sounds great.. wtf are you on about? I guess some people just prefer a moving target.

    --
    How we know is more important than what we know.
  7. DOS/Windows programming culture by erroneus · · Score: 4, Informative

    The culture of DOS programming was corrupted from the beginning and you can partly blame IBM for a crappy BIOS. Were it not for the crappy BIOS, programmers wouldn't have had to resort to writing directly to hardware to get an acceptable speed on the screen. And it just kept going on from there. And now when a developer wants more "something" from the OS than they can get naturally, they write VxDs to help gain an advantage.

    The culture is all about writing code to get past deficiencies and shortcomings in DOS/Windows.

    Windows programmers don't respect the rules... and if they do, they write what appears to be crappy software.

    1. Re:DOS/Windows programming culture by frank_adrian314159 · · Score: 4, Interesting

      Yes, but making the hardware suck to scrape a couple of pennies off the price didn't help the BIOS. Actually, I blame IBM more for not choosing a better processor than the x86. There were sane architectures out there at the time (e.g., Motorola 68000). A lot of the craptacular nature of the BIOS (not to mention DOS and early Windows programming) came out of that particular decision. But, back then, IBM was a fairly craptacular company anyway. It seems to have improved a bit since then (although, it's hard to tell; with a company the size of IBM, you may be looking at the stern of the oil tanker and everything looks fine, while on the bow, fires are raging).

      --
      That is all.
    2. Re:DOS/Windows programming culture by larry+bagina · · Score: 2, Insightful

      My understanding was that they didn't expect much of the PC market, so they threw together a bunch of cheap parts from other vendors and stamped their name on it. Based on their Apple II CP/M card, they asked MicroSoft for an OS instead of buying or writing one.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    3. Re:DOS/Windows programming culture by rs79 · · Score: 1

      " The culture of DOS programming was corrupted from the beginning and you can partly blame IBM for a crappy BIOS. Were it not for the crappy BIOS, programmers wouldn't have had to resort to writing directly to hardware to get an acceptable speed on the screen."

      Are you talking about games?

      I once, back in the dark ages, reverse engineered Lotus 1-2-3 for Bell abnd Howell and never had a problem using the bios at all. I was used to cp/m and assembly and it was so simnilar to that there wasn't much of a learning curve.

      I dsid write a grapohics hack once that talked directly to PC screen memory; PC's didn't do animation well. In the day you bought an Amiga if that's what your schtick was. In fact Flash can trace it's lineage back to a certain Amiga program, but it was years before a PC had the hardware to do those sorts of things. It just wasn't meant for animation.

      All the other I/O stuff seemed to work ok via the Bios though.

      Oh yeah and as of last week count me in as another "no more windows machines here, just mac's now". Buh bye Bill. It hasn't been fun. More like 18 years of pure unadulterated suckage. I haven't RTFA yetm but in true /. style I agree with it nonetheless. Snark.

      --
      Need Mercedes parts ?
    4. Re:DOS/Windows programming culture by icydog · · Score: 1

      And now when a developer wants more "something" from the OS than they can get naturally, they write VxDs to help gain an advantage. With apologies to Roy from the IT Crowd: Excuse me, are you from the past?
    5. Re:DOS/Windows programming culture by Sentry21 · · Score: 2, Interesting

      The Motorola 68k was their first choice, but unfortunately it wasn't ready in time for them to use it for their systems. Intel's 8086 processor was their unfortunate second choice.

    6. Re:DOS/Windows programming culture by Anonymous Coward · · Score: 0

      The front fell off!

      http://www.youtube.com/watch?v=WcU4t6zRAKg

    7. Re:DOS/Windows programming culture by MojoStan · · Score: 5, Interesting

      My understanding was that they didn't expect much of the PC market, so they threw together a bunch of cheap parts from other vendors and stamped their name on it. Triumph of the Nerds: The Transcripts, Part II

      According to the guys that created the IBM PC (Bill Lowe and Jack Sams), they did it this way because they thought they were running out of time in an important new market (PCs). The Apple II had been introduced in 1977 and was a runaway success. IBM noticed Apple IIs being used in the engineering departments of their clients.

      IBM's top management met in August 1979 to discuss their "PC crisis." In another year, the PC industry might be too big for even IBM to take on. IBM chairman Frank Carey knew that it took "four years and three hundred people to do anything" at IBM. Bill Lowe, who would lead the IBM PC development team, claimed that his team could provide their product in a year. Carey gave Lowe two weeks to set up a proposal. Two weeks later, Carey bought it.

      From the transcript:

      • [Cringely narrating] He knew the company was in a quandary. Wait another year and the PC industry would be too big even for IBM to take on. Chairman Frank Carey turned to the department heads and said HELP!!!

        Bill Lowe: Head, IBM IBM PC Development Team 1980: He kind of said well, what should we do, and I said well, we think we know what we would like to do if we were going to proceed with our own product and he said no, he said at IBM it would take four years and three hundred people to do anything, I mean it's just a fact of life. And I said no sir, we can provide with product in a year. And he abruptly ended the meeting, he said you're on Lowe, come back in two weeks and tell me what you need.

        [Cringely narrating] An IBM product in a year! Ridiculous! Down in the basement Bill still has the plan. To save time, instead of building a computer from scratch, they would buy components off the shelf and assemble them -- what in IBM speak was called 'open architecture.' IBM never did this. Two weeks later Bill proposed his heresy to the Chairman.

        Bill Lowe: And frankly this is it. The key decisions were to go with an open architecture, non IBM technology, non IBM software, non IBM sales and non IBM service. And we probably spent a full half of the presentation carrying the corporate management committee into this concept. Because this was a new concept for IBM at that point.

      The documentary goes on to describe how Microsoft (a computer language company at the time) ended up providing the operating system after the company that should have provided the OS (Digital Research) blew it when they met with IBM. Interesting documentary with interviews with the key guys involved.
      --
      TO START
      PRESS ANY KEY

      Where's the 'ANY' key? I see Esk, Kitarl, and Pig-Up...

    8. Re:DOS/Windows programming culture by rs79 · · Score: 4, Informative

      I worked at a computer manufacturor in the late 70's and early 80s in LA and started on 8-bit micros and was there for ther introduction of 16 bit chips.

      I was used to PDP-11s keep in mind.

      The problem wasn't the 68000 wasn't ready, it was ready. There were just no support chips yet. Intel actually delivered a complete solution: CTC chips, PIC's, serial ports, dma controllers, i/o processors (that nobody but us used).

      Motorola had a CPU and that's it. A vastly *superior* CPU, but the hardware guys wanted to build systems not wait for the rest of the stuff they needed. So we all held our noses and went x86. And bought Amigas as soon as they were out (I have serial #11. Still.)

      This crap as all in one chip these days, but back then computers had several large black chips inside them.

      --
      Need Mercedes parts ?
    9. Re:DOS/Windows programming culture by gmack · · Score: 1

      What your missing here is that you never should have had to go to the BIOS at all. That was DOS job.

      The fact DOS functions were so blasted slow that everyone just bypassed them was something that would come to haunt MicroSoft for years. Why did MS have to come up with the abortion known as VFAT? Every text book and programming guide for DOS that I've ever owned has come with instructions on how to write to the FAT tables directly. That's bad.. very bad. It made things inflexible and provided no way for the OS to make sure things were done right.

    10. Re:DOS/Windows programming culture by Anonymous Coward · · Score: 0

      There was nothing particularly wrong with the BIOS calls themselves. They actually did a lot of work, and were reasonably sane. The problem was that the time to execute an INTterupt instruction to get to these calls was horrendous. You *could* have argued for a call/jump table implementation, I suppose (and some developers did do this to speed their code up from time to time - simply toss an extra parameter on the stack and JMP to the interrupt vector instead of using INT, that way you only paid the price for the RETI.)

      Remember, advanced functions like graphics APIs/etc. were not in demand when the original BIOS was developed by IBM. The PC was a *business* computer, and displayed text in 1-2-3 (remember that one?) just fine.

    11. Re:DOS/Windows programming culture by Anonymous Coward · · Score: 0

      A lot of the craptacular nature of the BIOS (not to mention DOS and early Windows programming) came out of that particular decision.


      You are missing a big part of history. Look up on
      "IBM PC" on Wikipedia:


      They developed the PC in about a year. To achieve this they first decided to build the machine with "off-the-shelf" parts from a variety of different original equipment manufacturers (OEMs) and countries. Previously IBM had developed their own components. Secondly, they decided on an open architecture so that other manufacturers could produce and sell peripheral components and compatible software. IBM also sold an IBM PC Technical Reference Manual which included a listing of the ROM BIOS source code.


      IBM was perfectly able to build a decent computer and OS. What they did is gathered various existing crap and build a quick Frankenstein computer in order to deliver a product fast, and more importantly they had open hardware.


      The entire success of the PC architecture comes from the last point: the invasion of IBM PC clones.

    12. Re:DOS/Windows programming culture by Weedlekin · · Score: 1

      "Are you talking about games?"

      No, he isn't talking about games. Text screen updates using BIOS calls were so slow on the IBM PC and most clones that it felt like using CP/M with a 9K6 baud serial terminal, so just about anyone who wrote professional shrink-wrapped software built their own libraries for putting characters directly into text screen memory. There were two base memory areas that text buffers mapped to, each of which was up to 32K in size:

      The monochrome text buffer lay between B000 and B7FF, although only the first 4K was significant in the most common 80x25 mode. A colour buffer was also present between B800 and BFFF; the use of two separate buffers was intentional, because it allowed both monochrome and colour cards to be present in the same machine, with each being connected to a different monitor.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    13. Re:DOS/Windows programming culture by slashdot.org · · Score: 1

      The culture of DOS programming was corrupted from the beginning and you can partly blame IBM for a crappy BIOS. Were it not for the crappy BIOS, programmers wouldn't have had to resort to writing directly to hardware to get an acceptable speed on the screen. And it just kept going on from there.

      Of course programmers did exactly the same thing on every other platform at the time. Never mind the insane amount of time it took for example Apple to understand virtual/protected memory and preemptive multitasking.

      And now when a developer wants more "something" from the OS than they can get naturally, they write VxDs to help gain an advantage.

      Yeah, in the circle-jerk definition of 'now'. VxDs died with WinME. The NT kernel never supported or understood them. (yes, that includes NT4, 2K, XP and Vista). In other words, you are talking about 10 years ago.

      It would be so much more constructive if people knew what they were talking about. The Win32 API has plenty of flaws, but it's also pretty powerful. If you want to have a real discussion, let's talk about some of the 'recent' API calls that allows canceling pending IO requests from another thread (pre-Vista is lacking the necessary API - CancelIoEx). That was a major deficiency. Let's see how well that sort of stuff works on other platforms (I should perhaps give you a hint)

      Windows programmers don't respect the rules... and if they do, they write what appears to be crappy software.

      Man, let me hand you the KY...

    14. Re:DOS/Windows programming culture by Anonymous Coward · · Score: 0

      Of course programmers did exactly the same thing on every other platform at the time.
      Games maybe, but on the Mac or Amiga your program had better use the OS APIs or suffer an early death. Programmers were happy to use the OS APIs on those platforms, because they didn't suck.
    15. Re:DOS/Windows programming culture by poot_rootbeer · · Score: 1

      Were it not for the crappy BIOS, programmers wouldn't have had to resort to writing directly to hardware to get an acceptable speed on the screen.

      You seem to be implying that programs doing direct hardware access for performance was not the norm across all platforms in the early 1980s.

      In those days, hard disk drives were optional, CPU clocks ran at less than 10 MHz, and unless you were a "power user" you probably didn't even have the full 640KiB of RAM that DOS could use to run programs. With resources that tight, there wasn't really a lot of room for implementing the abstracted multi-layer system models that we now consider good practice.

    16. Re:DOS/Windows programming culture by Megane · · Score: 1

      I've heard two stories:

      First was the "not ready in time" story. The way I heard it was that IBM asked both Intel and Motorola to commit to a certain date for availability of their CPUs. Motorola, being an older company with more attention to detail, refused to commit. Intel, being the upstart, and probably seeing a future in making this deal, was happy to commit.

      Motorola did end up releasing the 68000 by the deadline, but by then it was too late.

      Second is the story I got by reading the DTACK Grounded archive. Apparently the "advanced processors" division at Motorola wanted to sell tens of thousands of chips at a high price for $10,000+ Unix computers, rather than selling millions to the consumer and embedded markets. Basically, that division's management didn't understand that a small profit margin will still get you big profits if you can sell a lot of widgets. But the big problem was that they actively discouraged the consumer and embedded markets from using the 68000.

      Motorola had a better and faster CPU, they had a better math co-processor, and Intel was having trouble making higher-speed (as in more than 5-8MHz!) versions of the 80x86 and 80x87. And Intel also had missteps with the 80186 (I think that was due to exception vector conflicts with PrtScr), and the 80286 (enforcing the segment model with no consideration for data blocks larger than 64K).

      But the $10,000+ Unix computers were flops, and by the time Motorola wised up, it was too late.

      (Before everybody says "What about the Mac, Amiga, and Atari ST?", that was after Motorola wised up. Look at the dates on DTACK Grounded. "But the Mac was already in development then!" Remember the Lisa? It wasn't Unix, but it was a $10,000+ 68000-based computer, wasn't it? So Apple already had a head start with the 68000. The 128K Mac started at $2,500 anyhow. And the first design for the Macintosh used a 6809.)

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    17. Re:DOS/Windows programming culture by Megane · · Score: 1

      In fact Flash can trace it's lineage back to a certain Amiga program

      I thought its lineage went back to Macromind VideoWorks (later Macromind Director), which was a Mac program.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    18. Re:DOS/Windows programming culture by Megane · · Score: 1

      Ah, now I remember the days of "use CRT;" in Turbo Pascal. So why exactly were the BIOS text routines so slow anyhow?

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    19. Re:DOS/Windows programming culture by Weedlekin · · Score: 1

      "why exactly were the BIOS text routines so slow anyhow?"

      They used a software interrupt to output each character, which made them extremely inefficient (strings had to be fed to them character by character because they lacked the capability to handle more than one character at a time).

      --
      I'm not going to change your sheets again, Mr. Hastings.
    20. Re:DOS/Windows programming culture by Lally+Singh · · Score: 1

      The key decisions were to go with an open architecture, non IBM technology, non IBM software, non IBM sales and non IBM service


      The irony here is that MS never got past their Not-Invented-Here syndrome.

      Imagine if Windows had embraced POSIX and open source tools.
      --
      Care about electronic freedom? Consider donating to the EFF!
    21. Re:DOS/Windows programming culture by jafac · · Score: 1

      IBM was an awesome company.

      Too awesome, in fact. I attribute many of their lame decisions in the design of the original IBM PC, to the fact that they were freaking IBM for bob's sake. They had their mainframe monopoly, and a good proportion of the consultancy and field services market tied up. They had no real competition, and were betting on the fact that they would own the PC market all by themselves, based on the IBM street-cred alone.

      (this turned out to be not true; just arrogant speculation on their part - Compaq saved their asses by reverse engineering the BIOS and opening up the platform - otherwise, the x86 platform would just be another footnote in the ugly history that was the early PC-age.)

      My guess is that Commodore would have been the eventual victor. Remember the Amiga?

      Monopolies don't try hard to make awesome products, because they don't have to. This usually ends up being their downfall. As we have seen with IBM, and we are apparently seeing with Microsoft.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  8. Cry babies by Anonymous Coward · · Score: 0

    I make my own tools. I don't want for someone to make them for me.

    Sounds like the cries of a 2nd year CS student at DeVry.

    1. Re:Cry babies by story645 · · Score: 1

      So long as someone else can use the stuff you make with those tools, go for it-but if the code has to play nicely with other peoples (like any team coding project/distributed project/whatever) working with the bad tools is often easier than making yours be multifaceted.

      --
      open source modern art: laser taggi
  9. Comment removed by account_deleted · · Score: 3, Funny

    Comment removed based on user account deletion

  10. how much MS bashing can you fit in? by timmarhy · · Score: 3, Funny
    "And that software is usually buggy. It passes bad parameters to API calls, uses memory that it has released, assumes that files live in particular hard-coded locations, all sorts of things that it shouldn't do.'"

    and this has exactly what to do with MS? the coding habits of programmers has NOTHING to do with MS.

    --
    If you mod me down, I will become more powerful than you can imagine....
    1. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      and this has exactly what to do with MS? the coding habits of programmers has NOTHING to do with MS.

      Indeed, this is not MS's fault. But they're stuck holding the ball, trying to maintain backwards compatibility with programmer errors. And it is one of the many reasons their APIs suck.

    2. Re:how much MS bashing can you fit in? by Adambomb · · Score: 4, Interesting

      well, it does indirectly but not as blatantly as the article would have one believe. Don't forget that if the API's were properly designed to begin with, it would have been impossible to give invalid parameters to the function or allow the use memory that has been released.

      I have no idea what hes on about with the hard-pathed file references.

      The problem is so many corporate coders back in the day (and still) would use whatever shortcuts they could within the api including "undocumented features" like the former two issues. If Microsoft were to fix these issues without compatibility for these "features", it would break tons of legacy applications. Therefore, ongoing developing must include these already-incorrectly-designed portions of the API as well as whatever they really want to be working on.

      Just because a company does something poorly to begin with and people adapted to it, doesnt mean the company isnt to blame for the issues.

      Course that doesnt make this article NOT a flaming pile of rhetoric, it just makes it slightly less than complete and utter bullshit.

      --
      Ice Cream has no bones.
    3. Re:how much MS bashing can you fit in? by glebd · · Score: 2, Interesting

      Windows includes myriads of patches to adapt to buggy third-party applications and just make them work. I don't know of any other OS that chooses to silently ignore application bugs or modifies API behaviour to avoid crashing defective applications. So if an application is used or manufactured by a major business entity and is buggy, unsupported, or programmed by lazy/incompetent developers, chances are MS has one or two fixes for its bugs _permanently_ built right into Windows. Because if old and unsupported applications stop working in the next version of Windows, chances are MS will lose customers to other platforms. Application compatibility is the only thing that ensures continuous market share of Windows. MS is prepared to break the OS to support buggy and old third-party code. Now tell me how does all this improve your confidence in the quality of the Windows platform.

    4. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      Therefore, ongoing developing must include these already-incorrectly-designed portions of the API as well as whatever they really want to be working on.

      That as the focus of the article might have been interesting to me. As it was, I completely missed how OpenFile, System32, and bad dev habits add up to dropping the ball. The only interesting part seemed to be the bit about Ribbon - a very recent feature which it sounds like is undergoing some sort of ongoing integration process into the API set.

      It would seem to have been a more valuable link once they published part three so we could all enjoy the full scope of the argument on hand. As it was, it seems too shallow to be of much interest.

    5. Re:how much MS bashing can you fit in? by timmarhy · · Score: 2, Interesting

      it's only just better then total bullshit though. using his own benchmarks linux is a piece of crap for dropping features, and we should bash it for each any every poorly coded OSS project (believe me there is a LOT)

      --
      If you mod me down, I will become more powerful than you can imagine....
    6. Re:how much MS bashing can you fit in? by jcr · · Score: 1

      Well, they got rich by being all about the status quo, didn't they? IBM made an attempt to move the legacy customers to OS/2, and MS was 100% on board for that, but when the drones said "just rev windows again", MS complied.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    7. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 1, Insightful

      People seem to be missing this particular point. He's not bashing Microsoft for third parties writing poor software. He's bashing them for accepting it, making it easy for them to screw up (or hard not to screw up), and never taking decent steps forward for fear of breaking third party crapware.

    8. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      That's an interesting statement to make against Vista which makes some hard quality choices that seem to stand in sharp contrast to your contentions. DEP and UAC seem to favor platform quality over buggy old third-party code. Could you clarify your specific references here?

    9. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      > and this has exactly what to do with MS? the coding habits of programmers has NOTHING to do with MS.

      It have plenty to do with MS. MS is supporting this behavior.

      MS should break badly written apps when releasing new versions of windows. People will scream, but the apps on the new platform would be better, and, release after release, only correctly written apps will survive. It would then be much easier to evolve, and the platform would be much less messy.

      They should take example on apple. Focus on compatibility is low. They give migration path, and users and developers use them or perish. And they don't do kludge to keep old APIs afloat (well, that is not 100% true, the OS6 toolbox patched the traps when loading some big name applications to prevent them from crashing -- but at least you noname application that did some no kosher stuff was borken).

    10. Re:how much MS bashing can you fit in? by techno-vampire · · Score: 4, Informative
      I have no idea what hes on about with the hard-pathed file references.


      This goes back even before Windows. I used to have some DOS programs that would only let you save a file to a floppy. Not just games, a poster-creating program had A:> built into the path for saving files, and there was no way to change it. Granted, even the most rabid Microsoft-basher can't blame that on them, but it's part of the way programs used to be written. It's the same type of mindset as caused game designers in the early DOS days to hardcode timing loops because, of course, the PC would always run at 4.77Mhz.

      --
      Good, inexpensive web hosting
    11. Re:how much MS bashing can you fit in? by 644bd346996 · · Score: 1

      How many programs or installers still break if you try to install to somewhere other than C:\Program Files\? Not many, but there used to be a lot.

      How about if you want to store your documents somewhere other than C:\My Documents\ (on win9x) or C:\Documents and Settings\[username]\My Documents\? NTFS supports mount points, but Microsoft didn't expose that functionality to users, so it is very difficult to get an stock Windows install to store all user-specific files and settings on a different physical drive from the core OS.

    12. Re:how much MS bashing can you fit in? by TJamieson · · Score: 1

      I have no idea what hes on about with the hard-pathed file references.
       
      This used to be much more apparent on earlier NT systems that installed to \winnt rather than \windows. Sure enough, after installing some software, I suddenly had a windows dir, in addition to my winnt dir, created by the software assuming \windows was correct to use.
       
      Further, his overall point there is that it is a programmer problem here; there have been APIs in-place forever to address all "special folders" as tokens.

      --
      For the last time, PIN Number and ATM Machine are redundancies!
    13. Re:how much MS bashing can you fit in? by RiotingPacifist · · Score: 1

      When your at the top you just cant afford to innovate.

      Im sure MS hate their OS as much as we do, but their cool stuff like singularity isn't going to be accepted by the masses used to windows. They try and do something right with the UAC & new driver models and everybody hates vista (they're also implemented badly, but that's not my point). I think an interview with the Novell CEO over at openvoices summed it up quite well saying that while they need to keep offering the community the cutting edge technology they also have to remember that its the businesses (who cant risk being 'cutting edge') that are paying for the development, the same applies to windows.

      OFC i think this is an area where linux would suffer a lot less if it ever got on top, because while the big distros would be pinned down unable to innovate, the smaller distros would still be able to innovate and the changes would be able to get back into the big distros if the businesses want/need them while the bug fixes of the big distros still filter out to the home users/innovators.

      --
      IranAir Flight 655 never forget!
    14. Re:how much MS bashing can you fit in? by lgw · · Score: 1

      People seem to be missing this particular point. He's not bashing Microsoft for third parties writing poor software. He's bashing them for accepting it, making it easy for them to screw up (or hard not to screw up), and never taking decent steps forward for fear of breaking third party crapware. And this is exactly how Microsoft Won. Microsoft gained their position of dominance specifically because they worked very hard to make popular applications continue to work, especially at the Win31/Win95 boundary. Windows 95 was a truly spectacular piece of engineering -- Microsoft had really top-notch talent at the time, and a lot of it -- and while everyone complained (rightly) about its lack of reliability, that was a direct result of their enormous effort at backwards compatability for crappy (but popular) software.

      While laughing at Win95 for the unreliable piece of crap that it was, it's easy to lose sight of the fact that the exact design decision that made it so crappy were what enabled Microsoft to Win, and dominate the market for a solid decade afterwards just on the strength of Win9x compatibility.

      Now MS no longer values that, and is going for quality at the expense of compatibility. It's an interesting choice: MS proved they were *good* at compatibility, while we've yet to see much evidence that they can do quality. Hubris, maybe?
      --
      Socialism: a lie told by totalitarians and believed by fools.
    15. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      "I don't know of any other OS that chooses to silently ignore application bugs or modifies API behaviour to avoid crashing defective applications."

      Because businesses and users do not understand the technology, the fact is they want something that "just works" they don't care about the technical, logical and scientific reasons why. When there crappy scanner software wont work, etc, they just want it to work, they don't want to have to hunt down the latest update and whatnot, people and businesses are cheap so they get what they deserve. The fact is software engineering as a whole is still horrible, you would never accept a car built and shipped like modern software is.

      Right now software is prone to breaking with updates or every advance, there is no reason why any software at all should break, period, from a scientific standpoint, especially if users/businesses could have access to the source of the programs they buy. The whole way software is sold is part of the problems, liscenses, instead of ownership to source.

      Software "owners" are perpetual serfs to corporations, they can't modify their software or get bugs fixed by willing persons. A lot of software is chucked thats perfectly usable due to greed and the way our economic system hinders software engineering progress.

      Modern software breaks for the most mundane and hairbrained of reasons.

    16. Re:how much MS bashing can you fit in? by mdarksbane · · Score: 3, Interesting

      The difference is that Mac OS X was a cutoff line for all of that backwards compatible crap. A whole lot of stuff broke with Mac OS X, and it sucked for a while.

      Then everyone started using the new shiny API's and it started getting a lot better.

      He's complaining that the windows API's are still hauling along cruft and junk and nastiness from 15 years ago. It hurts MS's ability to improve them, it hurts developers ability to use them, because they have to wade through pages of deprecated functions to find the correct ones, or hit strange inconsistencies that have been hanging around for years. It's also just bad for the general consistency of the experience - see the comment about the system32 on Windows 64.

      He knows that bad developers doing stupid things isn't Microsoft's fault. But how you react to bad developers is. It's a tough decision to make - do you slap the bad developers on the wrist and break things because *they* were doing something stupid, or do you keep letting them have their way until it's their decisions that rule the API and the platform?

    17. Re:how much MS bashing can you fit in? by Qbertino · · Score: 1

      >> and this has exactly what to do with MS? the coding habits of programmers has NOTHING to do with MS.
      >It have plenty to do with MS. MS is supporting this behavior.

      Gosh, am I happy that all the lib-paths and libCs are so consistent on Linux. ... *Ta-Dum!* *Crash!* *Thud!* Thank you, thank you, I'm here all week. Try the fish.

      --
      We suffer more in our imagination than in reality. - Seneca
    18. Re:how much MS bashing can you fit in? by slashtivus · · Score: 1

      No disagreement on my end, but the .NET framework complains pretty loudly if you attempt to use a method marked as 'deprecated'. A quick search will usually give you a solution that works well with the newer framework. It at least seems that MS is putting forth some effort to stop programmers from using the old stuff and move on to better ways / methods. Their next version of windows needs to put all old code into a virtual machine and move forward with a cleaner API, which seems like what they are working towards.

    19. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      Parent is well-deserving of its "Funny" mod.

      There's a lot of "fun" code in Windows just to keep previous versions of the first-party apps afloat.

      Why does ole32.dll in Windows need to have special code paths for when the process image name is "EXCEL.EXE"?

      Buggy first-party apps are the first ones to break; they get noticed before the next release, and they get to leave their mark on the code.

      D

    20. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      Modded down by accident. posting to undo. Sorry :/

    21. Re:how much MS bashing can you fit in? by jcr · · Score: 1

      Im sure MS hate their OS as much as we do,

      I don't hate their OS at all. I wouldn't use it voluntarily, but to really hate it I think I'd have to be one of the unfortunate people who has to suffer with it on a daily basis.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    22. Re:how much MS bashing can you fit in? by IntlHarvester · · Score: 1

      There seems to be a ton of windows code that looks kinda like this: "$WINDIR\System32\..."

      Like they got it half right and then just went ahead and hardcoded the other half.

      --
      Business. Numbers. Money. People. Computer World.
    23. Re:how much MS bashing can you fit in? by Gadget_Guy · · Score: 1

      How about if you want to store your documents somewhere other than C:\My Documents\ (on win9x) or C:\Documents and Settings\[username]\My Documents\?

      Right click on you My Documents icon and select Properties. You can use any path you want, including network folders. I just tried it in Windows 98, XP and Vista, and all versions allows the documents folder to be moved. In Vista you have to click on the Locations tab.

    24. Re:how much MS bashing can you fit in? by Gadget_Guy · · Score: 1

      Their next version of windows needs to put all old code into a virtual machine and move forward with a cleaner API, which seems like what they are working towards.

      It is also what they have done in the past. The Win16 code lived in its own subsystem for years just for backwards compatibility.

      Microsoft move very slowly in this respect, but it with good reason. How many years has Microsoft been telling developers not to assume that they were running as an administrator. Vista comes along and everyone is shocked when their software fails or constantly triggers the UAC prompts.

    25. Re:how much MS bashing can you fit in? by jabjoe · · Score: 2, Insightful

      but it's part of the way programs used to be written. What's this use to be written?
      We had a script kiddy here who made a horrid tangled mess, hard pathing everything, including to a directory called "Not_Used_Anymore". He didn't know better.
      The horrors of hard pathing are alive and well.
      Hard pathing is just coding in a path into your source like any other constant. Sometimes it makes sense to do it (small personal batch script for instance) and some will always do it where they shouldn't (in something compiled or large).
    26. Re:how much MS bashing can you fit in? by Tenebrousedge · · Score: 1

      Hubris, maybe?

      You misspelled "Vista".

      --
      Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
    27. Re:how much MS bashing can you fit in? by ceoyoyo · · Score: 1

      If the coding habits of programmers on other platforms are different, then it is likely that the coding habits of Windows programmers DOES have something to do with MS. The article argues that Windows programmers have bad habits because Microsoft supports those habits instead of slapping their hands by fixing bugs and eliminating deprecated bits of the API.

    28. Re:how much MS bashing can you fit in? by Lonewolf666 · · Score: 1

      At some point, supporting the accumulated cruft will be just as painful as breaking things. I have read about how introducing Mac OS X gave Apple a hard time, but recently Microsoft had just as much difficulties in getting Vista to run.

      In hindsight, I think Apple made the smarter decision and Microsoft should have done the same instead of Vista. Now they finally seem to plan a similar move for Windows 7, but it may give them a temporary suckage effect, Mac OS X style, on top of the years they lost with Vista.

      --
      C - the footgun of programming languages
    29. Re:how much MS bashing can you fit in? by init100 · · Score: 1

      This reminds me of the recent situation when Windows XP SP3 was put on hold because of an incompatibility with Microsoft Dynamics. Let me guess that they added some backwards compatibility fix for Dynamics to SP3 rather than fixing Dynamics itself.

    30. Re:how much MS bashing can you fit in? by DECS · · Score: 1

      "When your at the top you just cant afford to innovate" is a total cop out. While it might take more balls to challenge the status quo once you own the game, it clearly is possible to be better than Microsoft has been.

      Look at Apple's iPod: virtually unchallenged over the last 7-8 years. Yes there's competition, but none of it matters. Apple could have sat back and grown comfortable, releasing gold plated iPods or ones with graphics printed on the case or some other non-features, but that would have allowed others to catch up.

      Instead, Apple chose to jump ahead several times when it was already on top. The iPod Mini was a super popular top seller when Apple dropped it and replaced it with the Nano. That took balls, and was widely criticized.

      However, had Apple kept milking the Mini for another two years, the small players that came out in 2006-7 would have looked far more competitive than they did. Instead, Apple bumped the iPod ahead of everything and maintained its dominant share of the market. It's still growing in unit and dollar numbers in a rough economy where competitors are failing.

      So could Microsoft have taken stronger stabs with Windows and its related APIs? It's a different market, but judging from the weak performance of its status quo maintenance strategy, it certainly should have done something more ballsy.

      Unlike Apple's iPod, which resisted competition from larger and more entrenched rivals like Sony and MS, Microsoft's Windows is being eaten into by Mac sales and by community efforts with Linux. Microsoft is becoming the old Apple.

      How Microsoft has become the Beleaguered Apple â96

    31. Re:how much MS bashing can you fit in? by Anonymous Coward · · Score: 0

      "I have no idea what hes on about with the hard-pathed file references."

      The many, many hard coded references to C:\WINDOWS\ C:\WINDOWS\SYSTEM32 and C:\Program Files\..

      Too many apps still dump crap dll's and stuff in the system folders rather than their app folder path. I really love the ones that hard code the windows folder paths. They're fun to deal with, just like my in-laws...

    32. Re:how much MS bashing can you fit in? by petermgreen · · Score: 1

      it would have been impossible to ............ allow the use memory that has been released.

      given a conventional language and a page based VM architecture there isn't much you can do about this. You can't release the page back to the OS until everything in that page has been freed, while some stuff is still allocated within the page the application can still access all of the page.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    33. Re:how much MS bashing can you fit in? by ckaminski · · Score: 1

      I'll give you a great example. Access 2000 (Office). DateTimePicker Control. Allows you to put a control widget on your dialog that lets you pick a date and time for something. Useful tool, right? Only available as an ActiveX control in particular versions of Office. Withdrawn from Office 2003. Not replaced. I spent about 4 hours of an Access contract porting this and rewriting a DateTimePicker widget (badly, I only spent four hours :->)

      But which Ribbon is the right Ribbon? Which semantics are going to win? Which are good, which are bad? Which will eventually get forced into the OS in the manner of comctl32, remember that bastard? Or how about the myriad shitstorm of MDAC versions getting installed on your system.

      Microsoft is entirely too dependent on the "redistributable" market, where everyone and their sister has a particular version of something that has to be installed and clobbers other software that has particular requirements. We *THOUGHT* they stopped this with MDAC (we being *I*) - they obviously haven't.

  11. So what? by bobwrit · · Score: 0

    OS's come and go. You cannot be the top dog forever. You have to fail sometime. Maybe,just maybe, it's time for Microsoft. Does that make me a apple fan boy? NO. Does it mean that it's Mac OS's turn? Not nessicarily. People need to learn that. ---(this is my signature)

    --
    -- (this is a sig) My Computer Programming Forumhttp://www.programers.co.nr/
  12. Mac zealot hates Windows, news at 11 by Anonymous Coward · · Score: 0

    I'm sure his next article will be all about how his iPhone is the greatest phone ever made, and how AppleTV rocks, and how his Macbook Air is so thin he can fit it in an envelope. This hype and "grassroots" marketing shit, all promoted and paid for by Apple, gets boring VERY quickly.

  13. As a dev who makes his living writing for .Net... by Anonymous Coward · · Score: 5, Interesting

    I am 'this' close to jumping ship. I use Ubuntu on machines at home and find it fast and clean, even on older hardware.

    I have access to all MS software as our MSDN and Gold Certified Partner plan administrator. I have tried Vista on a couple machines. Even on a brand new Dell dual core laptop with 2 gigs of ram, it was sluggish and still could not use the full aero interface. Yet I installed Ubuntu on a 4 year old 600m with 512MB ram and got a full interface with snappy performance.

    I don't need aero to develop code. The features I was most interested in all got cut from Vista... most notably the filesystem upgrades. Now add frequent updates to the framework that require $1200 software packages to use to the fullest extent. Then add the insane cost of a legit SQL Server license on which to deploy it. Plus as a domain admin, I find the administration to be a drag. And I still don't trust them for a second on security. It all adds up to a monumental drag.

    I am a frustrated .Net developer. I don't know that it is that much better on the other side of the fence frankly, at least as far of the coding environments go. But I KNOW for a fact that I prefer linux to Windows.

  14. Same techniques 15 years ago? Not just Windows... by Goody · · Score: 5, Funny

    It's quite nice if you want to use the same techniques you learned 15 years ago and not bother to change how you do, well, anything

    Apparently the author never heard of vi and gcc on Linux...

    --
    Tired of being "punished" by the Slashdot $rtbl since 2002. I'm now over at http://soylentnews.org/ .
  15. But Don't You Mean... by morari · · Score: 2, Funny

    How Microsoft Dropped the Ball With... Developers Developers Developers *insert techno beat* Developers Developers Developers Developers Developers Developers Developers Developers Developers Developers?

    --
    "He who can destroy a thing, controls a thing." --Paul Atreides, Dune
    1. Re:But Don't You Mean... by ExploHD · · Score: 4, Funny

      *dhut* *dhut* *dhut* The System is Down! The System is Down! The System is Down"! *dhut* *dhut* *dhut*

  16. How can this be? by AnotherBrian · · Score: 0, Redundant

    But Steve Ballmer made such a wonderfully eloquent speech about them he loves them.

    I even found this video of it:
    http://www.youtube.com/watch?v=KMU0tzLwhbE

  17. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    i smell some bullshit here. the poster doesn't even touch on development. what a troll.

  18. Re:As a dev who makes his living writing for .Net. by LordMyren · · Score: 1

    .Net is portable to *nix.

  19. But give them credit where credit is due... by crt · · Score: 5, Interesting

    Microsoft has dropped the ball in a number of areas, particularly with regard to user-interface APIs which this article focuses mostly on, but in other ways it is far and away the easiest platform to develop for - mainly because of the quality of their development tools. Having done lots of development across Windows, Mac, and Linux with all kinds of editors, IDEs and debuggers, nothing comes close to Visual Studio in terms of functionality, quality, and just being solid. It's not perfect, but it's way better than anything else out there. For that reason alone Microsoft deserves some kudos from developers.

    1. Re:But give them credit where credit is due... by Mongoose+Disciple · · Score: 1

      Having done lots of development across Windows, Mac, and Linux with all kinds of editors, IDEs and debuggers, nothing comes close to Visual Studio in terms of functionality, quality, and just being solid. It's not perfect, but it's way better than anything else out there. For that reason alone Microsoft deserves some kudos from developers.

      Agree with this 100%. (Although I can admit I don't have much exposure to anything you'd use for Mac development that isn't also available on Windows or Linux, e.g. Eclipse.)

      I don't love everything or even most things about Windows, but spending more of my work time on the interesting parts of the problem and less time fighting with my IDE or other dev tools is worth a lot to me.

    2. Re:But give them credit where credit is due... by pebs · · Score: 2, Insightful

      nothing comes close to Visual Studio in terms of functionality, quality, and just being solid

      Are you using the same Visual Studio I am? Because the one I use may have some decent functionality that you'd expect from an IDE, despite being crippled by a lousy interface (with some exceptions, they do some things very nicely). But when you're used to using Eclipse, Visual Studio feels like a cheap, buggy toy. I use both at my day job. I would never use Visual Studio unless paid to do so. Eclipse I use for fun on my hobby projects.

      Yes, there are much worse IDE's than Visual Studio, but that doesn't mean its good.

      --
      #!/
    3. Re:But give them credit where credit is due... by vandit2k6 · · Score: 0

      Maybe its just me that I am new to Visual Studio. But having done a lot of work with Eclipse/MyEclipse before I can not say Visual Studio is all that great. But again maybe its just me and my lack of knowledge in Visual Studio.

      --
      Its nice to be important but its more important to be nice
    4. Re:But give them credit where credit is due... by nojomofo · · Score: 3, Insightful

      Holy shit, you've got to be kidding me! Even VS 2008 needs Resharper to even be close to Eclipse in functionality. Have you ever used a different IDE?

    5. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      Holy shit, you have got to be kidding *me*! Have you ever used CDT? Have you ever had an IDE use more memory than all other applications combined (except firefox, of course :-)?

      Eclipse is great for some things, but C/C++ work certainly isn't it. The amount of time it takes to do auto-complete is abysmal, resource usage is astronomical, and the IDE itself is so convoluted I am afraid to press any buttons for fear of what crazy windowing mode I may get punted into next.

    6. Re:But give them credit where credit is due... by pembo13 · · Score: 1

      People who haven't given Eclipse much of a chance often think Eclipse is a piece of crap.

      --
      "Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
    7. Re:But give them credit where credit is due... by Z34107 · · Score: 1

      I agree with you! I worked with an older version of Solaris for an operating systems class - we were studying POSIX things like pipes, sockets, processes, forking, fun little things like that.

      I did my development and debugging on Visual Studio 2005 on Vista. (No, this is not a troll.) When it compiled OK, I'd FTP my source over to the Solaris box, open a TTY, run gcc and go.

      Not that we did anything all that complicated - the most interesting thing we did was write a multiprocess talk-style chat server. But, Visual Studio sure beats the heck out of ed, the closest thing to an "IDE" they had installed for us to develop on.

      --
      DATABASE WOW WOW
    8. Re:But give them credit where credit is due... by Profane+MuthaFucka · · Score: 1

      If you learn to use your tools, that would solve your problem. Eclipse is huge and complicated, but it's also the best. It's not for everybody, so it's probably not for you.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    9. Re:But give them credit where credit is due... by imess · · Score: 1

      It'd be beneficial to other readers and add more substances to the argument by listing examples of strengths and weaknesses of Eclipse/Visual Studio, then merely saying "yours sucks, I use mine everyday and it's way better."

      This applies to parent, GP, GGP, etc.

    10. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      Are you using the same Eclipse as me?

      Visual Studio 2005 and 2008 do have a few quirks but they totally outshine Eclipse.

    11. Re:But give them credit where credit is due... by nojomofo · · Score: 1

      Well, considering that we're talking about Visual Studio, I don't think that you can count astronomical resource usage against Eclipse - VS is a multi-gigabyte install and has a huge footprint. I haven't used Eclipse with C/C++, but it is great for Java.

    12. Re:But give them credit where credit is due... by dmn · · Score: 1

      Good development tools are of little consolation to developers forced to deal with crappy software as basis for their work. It's like bringing up comfortable seats in a discussion about failing engines.

    13. Re:But give them credit where credit is due... by HeroreV · · Score: 2, Insightful

      What languages do you use with Eclipse? Just Java? Because everything else I've tried with Eclipse totally sucked.

    14. Re:But give them credit where credit is due... by Mongoose+Disciple · · Score: 1


      Well, considering that we're talking about Visual Studio, I don't think that you can count astronomical resource usage against Eclipse - VS is a multi-gigabyte install and has a huge footprint. I haven't used Eclipse with C/C++, but it is great for Java.


      I don't have the numbers to back this up, but my experience (having spent multiple years using Eclipse for Java and Visual Studio) is that Eclipse is a MUCH bigger resource hog. I've had machines that could handle 2 or 3 instances of VS running at a time without problems that were brought to their knees by 1 instance of Eclipse.

    15. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      Eclipse is amazing as an IDE, not doubt, but nothing is on par with Visual Studio when it comes to the enterprise tools that comes with it.

      The community offers tons of plugins for Eclipse, but most of the time, they are just half baked garbage.

      Visual Studio will all its problems lets you do 99% of what you want to do faster than any other IDE. It's just point and click. It's for the other 1% that it really sucks.

    16. Re:But give them credit where credit is due... by Mongoose+Disciple · · Score: 2, Interesting

      I think it's just one of those personal preference things, honestly.

      I used Eclipse for years (still do, when I'm on a Java project) and I generally hate it. I can't back that up with any kind of empirical reason for the dislike besides its resource-hogginess -- it's just designed in such a way that whatever feels like the intuitive way to do something to me is wrong. It's like I've stepped into a bizarro world where the knob marked 'H' in the shower makes cold water come out of the nozzle and the knob marked 'C' makes hot water come out, and no matter how many times I do it it always feels confusing and backwards to me. People whose opinions I greatly value think it's the best thing since sliced bread, and more power to them.

      I can almost always get more done with less time with VS, even though I've done Java development and used Eclipse twice as long. Your mileage may (and clearly does) vary.

    17. Re:But give them credit where credit is due... by HRbnjR · · Score: 1

      In the first afternoon on a new project for a company, in the time it takes me to download, install, and configure Eclipse, and use it to create and check-in the project structure, they will have already payed me enough money to buy more RAM than Eclipse will use during the rest of the year I spend coding with it.

      aka: Get some better hardware - the cost is _irrelevant_ compared to quality programming labor!

    18. Re:But give them credit where credit is due... by Vectronic · · Score: 2, Insightful

      People who haven't given Visual Studio much of a chance often think Visual Studio is a piece of crap.

    19. Re:But give them credit where credit is due... by Deef · · Score: 1

      If you think Eclipse is clunky (and I agree) you should try giving IntelliJ Idea a try. Not free, but totally worth the money, IMHO. So many things in Idea are just more intuitive and streamlined than in Eclipse, that I find it a much more productive environment to work in. (If you buy a personal license between approximately December and January each year, you can get it for half price, by the way.)

      No, I don't work for JetBrains. I'm just a satisfied customer, who has to use Eclipse for my day job, and misses Idea very much...

    20. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      You should really look at Apple's debuggers. They have a graphical GDB console with stepping, fix-and-continue, and all the other standard stuff you would expect. They also have a tool called Shark. It was specifically created to help optimize code and does so by tracking how long a program spends in each of its functions. Then there's Instruments.

      Instruments is perhaps the coolest thing to happen to debugging and profiling since fix-and-continue. You can record a series of UI events and play them back into different versions of your program to see how the changes between versions affect performance. It can track all kinds of statistics such as memory usage, object leaks, memory leaks, processor statistics, stack traces, frames per second of OpenGL, etc.

    21. Re:But give them credit where credit is due... by CharlieG · · Score: 1

      Yeah, but we HAVE Resharper or Refactor!pro (name your posion). That's the story. Visual Studio 2005/2008 with easily available add ins (Refactor, nUnit, CruiseControl etc) plus your choice of say svn, TFS or gasp VSS (for smaller projects) is great (wish SVN was as well integrated as say TFS, but...)

      A LOT of the issues in the main article go away when you go to a pure "Managed code" developemnt model, except that there is a HELL of a lot of software to be ported to .NET, and a LOT of it is fairly poorly written VB6 code (or earlier - there were companies that did not move mission critical apps past VB3)

      Like it or not, in the real word, there are a LOT of VB6 applications out there. They are becoming real dogs to maintain. Porting them is a dog (as Microsoft says, figure 2/3rds the effort of writing from scratch), and a BIG part of the problem in porting these legacy applications is that there really ARE no VB6 tools to do basic refactoring/writing test cases BEFORE you make the port, so you are less likely to break things

      I have a lot of posts (relatively anyway) in my Blog on this subject, including some places where I think Microsoft failed the developer community (and therefore shooting themselves in the foot RE Vista and the like)

      Take a look
      kg2v.blogspot.com
      (yeah - shameless plug, but I have NO Ads on my site, so you can't accuse me of link whoring - link slutting, yeah, but I'm not getting paid ;) )

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    22. Re:But give them credit where credit is due... by Phantom+of+the+Opera · · Score: 1

      aka: Get some better hardware - the cost is _irrelevant_ compared to quality programming labor! More hardware is the easy, seductive path to inefficient bloated code.

      If there was a dual between a vi (or even emacs) veteran coder and a IDE wiz, I'd put my money on the vi coder.

      Why? Because getting close to the code makes you think of the problem at hand, rather than think of the fastest way to get the IDE to tackle the problem.

      I once spent 2 hours debugging some code by stepping through it. I put aside the IDE for a moment, _looked_ at the code, saw the >= that should have been an . I've not been back to IDEs and my code has been tighter and much more organized since.
    23. Re:But give them credit where credit is due... by Mongoose+Disciple · · Score: 1

      Thanks for the recommendation. I'll have to give that a shot for my next Java project.

    24. Re:But give them credit where credit is due... by drew · · Score: 1

      Visual Studio is great if you only ever use one language. Until recently I did web development using ASP.NET, and I spent maybe a quarter of my time at most in Visual Studio (2005). I used VS anytime I was editing one of the C# web services because the IntelliSense was invaluable, but for literally everything else, I would go back to ViM. VS is tolerable for editing CSS (if you disable validation so you don't drown in fake "errors") but only barely passable for editing XML/XHTML and just plain awful when it comes to doing anything at all in JavaScript.

      While being able to use C# web services on the backend was a godsend in many ways, the most frustrating changes were when I'd spend half a day tweaking JavaScript only to discover that some minor change I made was going to require me to fire up Visual Studio in order to (eventually) rebuild some server component. I mean even if you're not going to bother with the auto completion, would a little bit of context sensitive auto-indent be too much to ask? Sometimes I was surprised they even bothered with syntax highlighting in JavaScript files because they certainly didn't put any other effort into it.

      --
      If I don't put anything here, will anyone recognize me anymore?
    25. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      I couldn't agree more. I've been developing software for the past twelve years on Solaris, Linux, Windows and the Mac. Visual Studio is the reason that Windows remains the dominant OS on the Market. I've used other IDE's during that time but there really isn't anything else out there that comes close. I do use Eclipse on occasion currently. Borland had some nice development tools for Linux a few years ago but I have used them in the Last few years.

    26. Re:But give them credit where credit is due... by igomaniac · · Score: 1

      Holy shit! Maybe it's time to stop using printf()'s to debug your code and try to use the debugger in the IDE? The Visual Studio debugger is just so far ahead of anything else out there (for C++) it's not even funny.

      --

      The interactive way to Go -- http://www.playgo.to/iwtg/en/
    27. Re:But give them credit where credit is due... by SenFo · · Score: 1

      In what way would you describe Visual Studio as crippled? Are you comparing Eclipse to Visual Studio 6 (or earlier versions)?

      For a free IDE, Eclipse is one of the better ones; however, it's a far cry from what you get from Visual Studio.

    28. Re:But give them credit where credit is due... by cyborch · · Score: 1

      I once spent 2 hours debugging some code by stepping through it. I put aside the IDE for a moment, _looked_ at the code, saw the >= that should have been an . I've not been back to IDEs and my code has been tighter and much more organized since.

      In what language can you insert ">=" in stead of "." and even have it compile?

    29. Re:But give them credit where credit is due... by cyborch · · Score: 1

      Sorry for replying to myself, but I should have thought of it immediately. The answer is perl, of cause. The followup question becomes, which IDE lets you single-step through perl code?

    30. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      Actually, C++ will do the job. Such is the wonder of operator overloading, including the standard committee's infinite wisdom in making operators like & overloadable.

      (And you can single step through Perl code via the interpreter's built-in debugger; I'm sure any Perl IDEs, if they exist, would have that feature, if only as a front end.)

    31. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      Both people are right, because vi is the one true way.

    32. Re:But give them credit where credit is due... by Aceticon · · Score: 1

      Having done lots of development across Windows, Mac, and Linux with all kinds of editors, IDEs and debuggers, nothing comes close to Visual Studio in terms of functionality, quality, and just being solid. It's not perfect, but it's way better than anything else out there.


      You clearly have never used Java IDEs (like Eclipse).

      Sure, if you're comparing Visual Studio .NET 2005 with vi/gcc, then VS.NET will come out as top of the pile ....

      As far as i can tell, the current 2 most fashionable/popular languages in corporate environments (Java and C#) are served by very good development environments and tools. This is mostly because so many people are interested in those languages (thus making tools and libraries for them) and because software companies actually have a market to make money from developing stuff for them. Others languages are usually less well served.

      As it happens, in the Windows environment the same IDE that supports C# also supports C and C++, mostly because Visual Studio and all the APIs and Libraries that come with it was born for C/C++. This is the only reason why development in C/C++ in a Windows environment is usually a lot easier than in other environments.

      PS: I do development in both C#.NET and Java
    33. Re:But give them credit where credit is due... by AndyCR · · Score: 1

      I use C++ with it day in and day out and it's far and above better in my eyes.

      --
      If there's anyone I hate more than stupid people, it's intellectuals.
    34. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      ...nothing comes close to Visual Studio in terms of functionality, quality, and just being solid. It's not perfect, but it's way better than anything else out there. I disagree. VS.NET is a drag to use compared to either Eclipse or Netbeans.

    35. Re:But give them credit where credit is due... by Anonymous Coward · · Score: 0

      Microsoft has dropped the ball in a number of areas, particularly with regard to user-interface APIs which this article focuses mostly on, but in other ways it is far and away the easiest platform to develop for - mainly because of the quality of their development tools. Having done lots of development across Windows, Mac, and Linux with all kinds of editors, IDEs and debuggers, nothing comes close to Visual Studio in terms of functionality, quality, and just being solid. It's not perfect, but it's way better than anything else out there. For that reason alone Microsoft deserves some kudos from developers. Sorry, but eclipse > VS
    36. Re:But give them credit where credit is due... by shutdown+-p+now · · Score: 1
      For Eclipse/Java vs VS2008/C#, this is debateful.

      But for C++, VS2008 (and even 2005) beats everything else hands down, if only because of the maturity of code completion engine, and convenience of debugger.

    37. Re:But give them credit where credit is due... by shutdown+-p+now · · Score: 1
      I think you might be comparing code editors here, not IDEs proper. When Eclipse has a decent GUI form editor for either SWT out of the box (something like, say, Matisse), then you'll have a point. But as it is, you still have to decorate Eclipse with quite a few plugins to get all the visual designers and browsers you get in VS2008 straight away, so I guess that evens out the need for R#.

      On a side note, VS2008 can actually do quite a lot of refactoring, but for whatever reason they've hidden the commands from both toolbars and menus - you have to go into "Customize toolbars" and drag the more esoteric ones out to use them.

    38. Re:But give them credit where credit is due... by Phantom+of+the+Opera · · Score: 1

      It was java, actually, and it was the greater than or equals operator, and I think slashdot ate my less than sign in my post, or I didn't see it missing in the preview.

    39. Re:But give them credit where credit is due... by cyborch · · Score: 1

      Oh, it's been way too long since I've done C++! I actually miss operator overloading in my day job. Maybe I should start a C++ project on the side, just for fun :)

    40. Re:But give them credit where credit is due... by ckaminski · · Score: 1

      I don't know if you're comparing IDEs to Wizards, but in a world where your platform does not have decent job control (Windows - god how I wish they'd fix tty and job control, a decent copy of CTRL-Z would be awesome), I need an IDE. I can't manage shit-tons of vi windows and a shell on my modest amount of laptop screen display - for me in this scenario, Eclipse is my savior.

      If I'm at home on my opensuse or centos (proper unix hosts (arguably :->)), with proper job control, my brain can grok 15 background vi windows, make or maven, and all the source control tools I need. I can map things very well, I just can't stand the mouse + keyboard switching I have to do on my laptop to just peruse code, without an IDE. :-/

    41. Re:But give them credit where credit is due... by ckaminski · · Score: 1

      No, it's not. The reason is Office, Outlook, and backwards compatibility, and not necessarily in that order.

    42. Re:But give them credit where credit is due... by LurkingAbout · · Score: 1

      > ... nothing comes close to Visual Studio in terms of functionality, quality, and just being solid. Ha! I'm busting a gut string on this one. VC++ 2008 is hardly solid. We have to disable "browse information" just to keep it from crapping out on large builds. It doesn't support basic C99 standard headers like stdint.h. Hell, it doesn't even give me useful build progress info such as "compiled 89 out of 344 files." VC++ 2008 is as mediocre as every version of VC++ that came before it. Xcode, on the other hand, leaps ahead with each major version. Just like the OS it runs on. I work full-time in Xcode and VC++ writing cross-platform commercial apps. Xcode blows VC++ out of the water. Beyond that, finding technical info. at developer.apple.com beats the crap out of msdn.microsoft.com every time. This is as important as the tools. Like the author of the article says, developing for Windows is like suffering "a death of a thousand cuts."

  20. "one developer" by Whitemice · · Score: 5, Interesting

    "how one developer migrated from Windows to OS X"

    That pretty much says it all: "one developer"

    The argument about old krufty code in Windows and the Win32 API has been around since.... the Win16 API! It didn't really seem to slow down Win32.

    On the flip side is the argument that the need for backwards compatibility is holding back Windows - yet developers complain about the migration from XP to Vista?

    All smells like we-will-find-anyway-to-condemn-Windows to me. Note: I do all of my development on LINUX, so I'm not a Windows booster. I think lots about Windows just stinks but there is an issue of credibility here.

    If you want a clean new coherent API and you want to develop on Windows Microsoft has provided an option: .NET

    --
    Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    1. Re:"one developer" by Drishmung · · Score: 2, Interesting

      From TFA, he claims that .NET is neither clean nor coherent, i.e., that MS squandered an opportunity.

      --
      Protoplasm. Quiet Protoplasm. I like quiet protoplasm.
    2. Re:"one developer" by Anonymous Coward · · Score: 0

      What's up with all the Microsoft apologists not reading The Fine Article? Are they employees or something?

    3. Re:"one developer" by Anonymous Coward · · Score: 0

      You talk of credibility but comment on an article you obviously didn't read. Good work.

    4. Re:"one developer" by Whitemice · · Score: 1

      I read the article. His arguments about .NET are non-specific and in context rather humorous. I do about 50% of my development in Objective-C so I'm well aware of his proposed alternative. You want to talk about simplistic? The Objective-C toolkits are pretty darn simplistic. .NET isn't perfect but it is a highly productive environment - and this is if we don't include generics, LINQ, and namespaces - none of which Obj-C provides (or only extremely primitive alternatives). I would suggest the developer in the article look into C# a little deeper.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    5. Re:"one developer" by Whitemice · · Score: 0, Flamebait

      And fanboys booster "Open Source" in any and all arguments for free in order to stoke their desperate need for an indentity.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    6. Re:"one developer" by RiotingPacifist · · Score: 1

      Actually its more that the article has no content.

      --
      IranAir Flight 655 never forget!
    7. Re:"one developer" by Anonymous Coward · · Score: 0

      Well, sure ... this IS just one developer's story. But that doesn't make it any less relevant. I think it provides some insight into why someone might attempt to "jump platforms" and code for a new one, despite it having much smaller market-share.

      I'm more of a "user" than a "developer" myself, but because I have developer buddies and I work in corporate I.T. for a living, I do try to keep up with at least a rough idea of what's going on in the world of coding.

      It seems pretty clear to me that developing for .NET is a "shaky" proposition, overall. Yeah, it's ONE way to get a clean, new API to start out with -- but it's provided to you by the same folks with a LONG track record of adding on and adding on to code-bases until they've made a HUGE mess out of them. The .NET framework for Windows itself has already gone through several revisions, with service packs between each of them. Last time I loaded an HP printer/scanner driver, for example, I had to wait like 20 minutes extra for it to upgrade the .NET framework, because it needed at least 1.1 and the PC in question only had 1.0 on it. This doesn't seem that "attractive" to me.

      As for the whole XP to Vista migration thing, the move breaking a lot of compatibility would have been FAR easier for folks to swallow without a fuss if Vista clearly provided VALUE. MS promised so many great things for Vista that were removed during its development and scrapped, many people were left feeling like all the upgrade gave them was pretty new GUI looks, and some supposedly enhanced security that would get broken by hackers again anyway, given enough time.

    8. Re:"one developer" by Abcd1234 · · Score: 1

      I can't disagree with this. There are a number of places in the .NET APIs where things seem half finished or just poorly implemented (it took them until .NET *3.5* before they had support for handling time zones other than UTC and local, if you can believe that... I know I couldn't) And, as sad and pathetic as this is, already, .NET has a large number of bugs that Microsoft won't fix. Why? Because applications depend on the behaviour! Sound familiar?

      That said, I don't think anyone will argue that .NET is anything but a major step forward in Windows application development.

      OTOH, I suppose that's just an excellent example of damning with faint praise.

    9. Re:"one developer" by Anonymous Coward · · Score: 0

      If you want a clean new coherent API and you want to develop on Windows Microsoft has provided an option: .NET Good thing everyone on slashdot reads the article, since .NET is certainly not what most of the material was actually about.
    10. Re:"one developer" by FishWithAHammer · · Score: 1

      Ars has veered pretty hard toward "OMG MACS R SO GR8" over the last couple years. I mean, they always covered Macs, which is fine, but the drooling adoration is becoming way too annoying.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    11. Re:"one developer" by nine-times · · Score: 1

      The argument about old krufty code in Windows and the Win32 API has been around since.... the Win16 API!

      ... so you're saying that people shouldn't complain anymore because they've already been complaining for decades?

    12. Re:"one developer" by Whitemice · · Score: 1

      No, I'm just saying this article doesn't offer anything new and is (a) primarily a rehash and (b) the arguements against .NET and for Cocoa don't offer much substance.

      There are lots of legitimate critiques of various technology - this one isn't and doesn't merit being carried on Slashdot.

      Should Slashdot carry every rehash published on the web that supports its political/technological agenda? How boring.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    13. Re:"one developer" by Whitemice · · Score: 1

      I read the article. His arguments about .NET are non-specific and in context rather humorous. I do about 50% of my development in Objective-C so I'm well aware of his proposed alternative. You want to talk about simplistic? The Objective-C toolkits are pretty darn simplistic. .NET isn't perfect but it is a highly productive environment - and this is if we don't include generics, LINQ, and namespaces - none of which Obj-C provides (or only extremely primitive alternatives). I would suggest the developer in the article look into C# a little deeper.

      And yes, there is a ribbon library for .NET; and it is Open Source! (although I personally do not like the whole ribbon movement)

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    14. Re:"one developer" by nine-times · · Score: 1

      So you came all the way in here just to complain that the article is correct but not all that interesting to you?

    15. Re:"one developer" by Whitemice · · Score: 1

      No, I think the article puts forth an incorrect premise, makes a big deal of that premise, and that the [incorrect] premise is based on old much-hashed gripes. Many of which can be leveled against any development environment (UNIX & glibc have their own share of cruft and then there is the ugly mess that is things like the openssl and/or gnutls APIs).

      Posting this on Slashdot was just elevating a typical and dreary fanboy article to an inappropriate level.

      His premise being that the .NET API refelects old & krufty Win32 [it doesn't], that Objective-C [with which I'm very familiar] is more advanced [despite no equivalent to generic, LINQ, or namespaces, etc..], and that he can't make pretty applications on Windows. Among the various incorrect, or at least substanceless statements, is that there is no ribbon library for .NET - which isn't true.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    16. Re:"one developer" by CAIMLAS · · Score: 1

      Did you read the article? Or even maybe glance at one of the other posts in this thread? .NET is largely the nonsense he's complaining about. .NET is a massive kludge, and even s

      As someone familiar with VC++, C++, perl, php, VB, and a number of other languages, it took me over half an hour to try and figure out how to do several different list/array type functions in .NET. This was not because it wasn't possible - it was because there were so many additional/useless/crappy abstracted functions and classes, many of which did much of the same thing, poorly, with poor documentation for all of it.

      And then there's the gross inconsistency of object/container reference methods which make Java's inception look almost divinely inspired. Why does one particular function call work on one data type, but not on one which is almost identical and a child of the prior one? And so on and so forth... .NET is really appealing when you first get into it, but it quickly becomes a nightmare if you're trying to develop something original or unique. As far as I can tell, the language was designed with the "cookie cutter 'solution' providing" software development segment - where all the meat is written in C or C++, and referenced by entry-level programmers in a repetitive manner, day in and day out.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    17. Re:"one developer" by ckaminski · · Score: 1

      .Net had one purpose, and one purpose only - stop the bleeding from the onslaught of VB/C++ programmers moving to J2EE and breaking their desktop lock-in. That's it. It's no major improvement on Windows development, IMNSHO. It's better, but not radically, and not enough to move me from Java.

    18. Re:"one developer" by Abcd1234 · · Score: 1

      Yeah, I definitely agree with that.

      However, I gotta admit, the .NET language has some very nice features that are only now making it to Java (and this is coming from someone who, traditionally, has been a pretty heavy Java programmer). The syntactic sugar, while just sugar, for accessors/mutators is really nice. And Java is just now moving toward supporting proper lexical closures (a feature I love to use when it's available), which .NET has supported for quite a while now (and, no, anonymous inner classes *don't* count).

      All that said, at least Java is finally moving to pick up these features (eg, generics), and we can thank .NET for that.

  21. Cult of Backward Compatibility by clintp · · Score: 4, Insightful

    The False God of Backward Compatibility has Microsoft by the short hairs. Even new programming environments like .Net have Win32, Win16, and DOS lurking right around the corner. There's no fresh start anywhere in the Microsoft environment, everything reeks of DOS.

    Which would have been find if DOS (Win16, Win32, etc..) were a multi-platform, extensible OS to begin with -- but it wasn't. It was a quick hack that lives on and on.

    I'm a developer that works primarily in Windows, with 15 years of heavy-hitting Unix programming experience behind me.

    --
    Get off my lawn.
    1. Re:Cult of Backward Compatibility by sien · · Score: 1

      Yeah. All that false god ever got them was 95% of the desktop operating system market.....

      Microsoft did have a multi-platform extensible OS, Xenix but it wasn't what the market wanted.

      You never know, perhaps their monopoly will be broken, but you would not bet on it.

    2. Re:Cult of Backward Compatibility by Bill,+Shooter+of+Bul · · Score: 1

      Were exactly do you find remnants of dos in .net? And as everyone older than 16 remembers, Windows NT 4.0 ran on alphas. I escaped the windows prison years ago. It sucks eggs. You don't need to make up stuff up.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    3. Re:Cult of Backward Compatibility by VGPowerlord · · Score: 1

      I don't work with VisualStudio, but I remember reading documentation that it takes a toggle of one property to compile a 64-bit application instead of a 32-bit application.

      If Win64 were radically different from Win32, that simply wouldn't happen.

      Having said that, didn't the 64-bit versions of Windows drop support for Win16?

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    4. Re:Cult of Backward Compatibility by daemonenwind · · Score: 4, Insightful

      It's not a false god, not when you're coding for a business that has to meet both regulators and profitability expectations.

      Code written for Windows 95/NT (back in 1996) still works today on the Windows platform. 12 years later.

      Try that with System 7 code on OS X.

      Yes, this is part of why writing business-logic code sucks. You seldom get to just re-write anything to be really, truly good instead of something perennially built-upon and increasingly hacked-together. No one will pay for a change that doesn't deliver "business value". (And no, greater stability/performance is almost never enough, as that argument usually demands an associated headcount reduction) But at least the app still works and can continue to deliver. And since some will doubt, yes, I do maintain/enhance such code.

      The market speaks - this sort of backwards compatibility is a conscious choice by MS, and it does sell their OS. Not concidentially, it also sells mainframes and *UX systems. And I'm convinced it's one of the big reasons Apple isn't bigger in the corporate world. Steve's demands for newer/better/faster totally supplanting the old are well known, and rightly feared.

    5. Re:Cult of Backward Compatibility by burgundysizzle · · Score: 1

      Backward compatibility is not a bad thing in itself.

      MS seems to have wanted to keep bug/quirks compatibility not just simply backward compatibility. Strict backwards compatibility would have meant that only documented functionality must be kept and must work from version to version. Other bugs, quirks, and inconsistencies could be removed - this didn't happen.

    6. Re:Cult of Backward Compatibility by Whitemice · · Score: 1

      Other than the way the slashes point in file paths there is nothing DOS in .NET but the fanboys are incapable of surrendering one their favorite cards.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    7. Re:Cult of Backward Compatibility by Whitemice · · Score: 1

      And the same thing happens in glibc - very non-optimal behavior gets carried forward for backwards compatibility. The calls used by NSS are a prime example of this. Every platforms suffers from this issue.

      On the other hand, I've got lots of 12+ year old UNIX code that works just fine today.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
    8. Re:Cult of Backward Compatibility by TropicalCoder · · Score: 1

      I heard that Windows 7 is supposed to get a new API. Old programs would run in a sort of virtual machine designed to support backward compatibility, while new apps could be developed directly for "native mode". I think this is a great idea.

      On the other hand, if the API is going 100% .Net like was suggest in the FA, I'm gone from developing on Windows. I generally work in C/C++ or even assembler and I like being close to the bare metal. I don't want to program wearing a condom like the .Net people do. Beyond that, to me 100% .Net means 100% lock-in and a non-portable skill set

    9. Re:Cult of Backward Compatibility by domatic · · Score: 1

      I don't know about .NET but I see remnants of DOS (or is that CP/M) every time I open "My Computer" and every time I save a file to a local disk (and usually a network share) on Windows.

      The drive letter thing sucked in 1981 and it never did stop sucking.

    10. Re:Cult of Backward Compatibility by domatic · · Score: 1

      Actually, it seems to me that API cruft is dealt with in UNIX like OSes thusly:

      "system call foo is in maintenance mode. no new features will be added"

      2 years later: "system call foo is deprecated. new applications should not
      use it. maintained old apps should be migrated to new call foo.so.2 whichs
      solves the following issues...."

      4 years later: "We really mean it this time. In the next release of libbar,
      foo.h will be removed."

      5 years later: flamewar on developers list continues.....

      5 1/2 years later: 2 or 3 devs stalk off in disgust. foo removed from libbar.

      6 years later: distros remove unmaintained old apps frobnosticator,
      flubbertron, and happyfunball because no one can be bothered to cure foo
      dependency. Pundits hold this will be death of Linux on Desktop.

    11. Re:Cult of Backward Compatibility by sp332 · · Score: 1

      If it were just business code, I wouldn't mind. But the fact that MS's new, flagship framework, .Net, fails to make a clean break from Win32 and Win16 (examples given in TFA), is what bugs me. The backward-compatibility-at-all-costs mindset pervades and cripples significant amounts of consumer-grade commercial and gratis software.

    12. Re:Cult of Backward Compatibility by mcfedr · · Score: 1

      yea, there surely comes a point, like the break from system 9 to osx, where you need to leave behind what was, and start with something new, that works now...With all the virtulising that is happenning these day there is surely no reason to keep that old windows 95 code running on a windows 95 machine

    13. Re:Cult of Backward Compatibility by Bill,+Shooter+of+Bul · · Score: 1

      Okay, I'll grant you that one. I've always hated the drive letters. Always. From my first AT, hated the drive letter. If i had been in charge there would have been a way around that. Something like having the drive letters map to a hidden folder( /.A/, /.C/ etc) right around DOS 4 or so. Hell, do it for Windows 7 and kill my complaint, better late than never.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    14. Re:Cult of Backward Compatibility by 0100010001010011 · · Score: 1

      And Apple figured out how to do it so you could release for 4 platforms by checking or unchecking different boxes.

      Why can't Microsoft figure out how to make it idiot proof for 2?

    15. Re:Cult of Backward Compatibility by Daengbo · · Score: 1

      Code written for Windows 95/NT (back in 1996) still works today on the Windows platform. 12 years later.

      Try that with System 7 code on OS X.

      I'm pretty sure you could take code that would compile on Linux 2.0 and compile it on Linux 2.6.

    16. Re:Cult of Backward Compatibility by ratboy666 · · Score: 1

      Generally, yes.

      Code that won't work generally breaks because Linux 2.0 used BSD style ptys, and Linux 2.6 uses System V style ptys. No great issue, but you do have to do a little work...

      Beyond that? I think everything else in 2.0 is still ok (but I may have missed a little something).

      However, open() was never "deprecated" and yet carried forward. The original design was strong enough to accommodate the changes over the years. POSIX is, of course, your friend.

      But we speak of Windows. I really believe that Microsoft is in an "API hell" now. Partly, it's an issue of being a closed source operating system. A dumb idea, because applications can only go by documentation, and by the actual API behaviour. To give an example (simplified, so not be in the Windows domain), p = malloc(0); p = realloc(p, 100); is supposed to work.

      But say the application was written before the behavior of malloc(0) (and thus the behavior of the subsequent realloc) was not really documented. Did this work? Didn't it? Before it was documented, the only way was "try and see". If applications then relied on that behaviour, what should be done if the API is updated? If the old (undocumented) behavior does not fit into the new model, do you force the application vendor to change? In the closed software world, both the API implementation and the usage are likely closed source. The application vendor may not even be in business anymore! So the API is forced into an accommodation. Maybe for just one application. This leads to cruft.

      Of course, anal programmers would have done:

      p = (n == 0) ? NULL : malloc(n);
      p = (p == NULL) ? malloc(100) : realloc(p, 100);

      if that behavior had not been mentioned. But, there is the drive to write the most efficient and readable code! Especially for the Windows API where calls can have LOTS of parameters, each of which would need suitable checking.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    17. Re:Cult of Backward Compatibility by macslas'hole · · Score: 1

      Code written for Windows 95/NT (back in 1996) still works today on the Windows platform. 12 years later. Try that with System 7 code on OS X. I have a G4 Powerbook running 10.5; I have an old game, Hellcats Over the Pacific that was published in 1991 (that's like 17 years later), that runs just fine full screen in OS X. That is System 7 code running on OS X. I once fired up LoadRunner on it; that's System 5 or 6 code. I think you do not know of that which you speak.
      --
      Life's a tale told by an idiot, full of sound and fury, signifying nothing.
    18. Re:Cult of Backward Compatibility by walshy007 · · Score: 1

      depends on the project, I frequently find some open source app that hasn't been updated in years, but is handy, go to compile from source only to find gcc syntax rules have ever so slightly changed during that time, just enough to break the compile.

      Usually the fix is very simple, but it's still breakage.

    19. Re:Cult of Backward Compatibility by Daengbo · · Score: 1

      If you change the compiler, then yes, it could break, but if you use EGCS or whatever was from that period, then I'd assume the code would compile.

    20. Re:Cult of Backward Compatibility by Anonymous Coward · · Score: 0

      I run five different business and accounting apps developed for System 7 on Mac OS X. In fact, the IT staff just forced me to move to a new Mac last year, and copied the binaries directly from the old Mac running System 7 to my new Mac. I haven't had any problems at all running the old apps on the new computer.

    21. Re:Cult of Backward Compatibility by drerwk · · Score: 1

      Loved Hell Cats. My own IIci apps from Sys 6 in 1990 ran on my G5 until the upgrade to 10.5. Are you sure your running Hell Cats on 10.5? It would make me likely to upgrade my Powerbook.

    22. Re:Cult of Backward Compatibility by plague3106 · · Score: 1

      There are no examples in the article of .Net not making a clean break from Win32.

    23. Re:Cult of Backward Compatibility by Anonymous Coward · · Score: 0

      Code written for Windows 95/NT (back in 1996) still works today on the Windows platform. 12 years later.

      Try that with System 7 code on OS X. You can do that, if you're running on a PowerPC machine on OS X 10.4 or earlier.

      You may be able, with some contortions, to do it on OS X 10.5 or an Intel Mac with SheepSaver.
    24. Re:Cult of Backward Compatibility by Anonymous Coward · · Score: 0

      You've been able to use forward slashes since ... ever. Since DOS even.

      Registry paths on the other hand, those are annoying.

  22. Developers? by ralf1 · · Score: 0

    Developers!! Developers!! Developers!! Developers!! Developers!! Developers!!

    (insert sweat stains here)

    --
    "Would you, could you, with a goat?" Dr Seuss
  23. What Problem? ;) by kmsigel · · Score: 1

    My standard requirement when doing Windows programming is that the API must have existed since Windows 95 and Windows NT 3.51. Once or twice I have used a particularly handy API that started with 95/NT4, but that's as "recent" as I've ever gone. A surprising number of my users are still on 95 (or its ugly sisters, 98 and ME). I find that it just isn't worth the effort to try to use some "new" API feature, even if compatability with old Windows flavors wasn't a concern.

    1. Re:What Problem? ;) by techno-vampire · · Score: 1
      A surprising number of my users are still on 95 (or its ugly sisters, 98 and ME)


      Personally, I've always felt that '98 is what '95 would have been if Microsoft knew when they wrote it what they learned in the next few years. Me, OTOH (And yes, it's Me, not ME.) was inexcusable.

      --
      Good, inexpensive web hosting
    2. Re:What Problem? ;) by afidel · · Score: 1

      98SE was the best of the 9x/ME generation followed by 95 OSR 2.1.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  24. Re:As a dev who makes his living writing for .Net. by korbin_dallas · · Score: 1

    He also seems to indicate that his company PAYS FOR ALL THE MSDN and TOOLS.

    THATS what will kill M$, charging a GD bloody fortune for the compiler, docs, and tools. Its up to what now $3000 per year per seat.

    And yeah, I purposely ignore the pirate copies and the 'educational institutional copies' because if you are a business, then you should pay. As a pro developer, I refuse to pay that kind of money to legally write windows apps.

    --
    They Live, We Sleep
  25. Developers is really the wrong word by AHuxley · · Score: 1

    Microsoft has real marketing and purchasing power.
    Developers are not really needed if you just want
    re package an acquisition and get it in a box year after year.

    Microsofts real skill is to push an older product
    they have total control over.
    Or diminish the appeal of any emerging product.
    Embrace and extend what you need, extinguish the rest.

    --
    Domestic spying is now "Benign Information Gathering"
  26. Glory days are here by icepick72 · · Score: 4, Interesting
    Despite what's underneath Windows, programming it through the .NET platform is very slick. Most of what had to classically be linked to in obscure ways is wrapped in the Framework Class Library. Most people complain it's large but after you learn the basic structure you can find immediately what you need using the documentation. Microsoft has also abstracted away the trickyness of DLLs and you can program against mostly any functionality using your language of choice.

    When articles claim Microsoft dropped the ball I think it's more wishful thinking than anything, because Windows programmers are in their Enterprise glory days right now, no longer restricted to VB and half-assed object models. Not anymore. We now have full OO features and much much more, and Java is playing cathup feature-wise. It's nice for a change.

    I don't care how messy Microsoft's underlying code is, as long as they've tested it and ensure it works enough for me to program against it. The Microsoft security updates help a lot too. They're very frequent which means there are a lot of security flaws but they take care of them quickly (I'm sure I will get numerous examples where they didn't take care of security quickly but if you're on Windows update you see them coming thought all the time).

    1. Re:Glory days are here by ronark · · Score: 3, Interesting

      Sorry, but I must disagree with you. I program daily with .NET at work, and the number of times a P/Invoke is required to get advanced functionality is simply shocking. Not to mention the fact that despite the claim of being purely an object oriented framework, many parts of its design spit in the face of OO. I'm not talking about rarely used classes either. File, Directory, Math, Convert, Encoding, to name a few major players, cannot be instanced as they are declared static. How this is different from a simple function in C is beyond me. .NET might have a few things going for it (though the more I use it the harder they are to remember), but slickness is not one of them. Microsoft dropped the ball with .NET.

    2. Re:Glory days are here by icepick72 · · Score: 2, Insightful

      Because some classes are static or sealed does not mean the CLR doesn't support full OO features. I known you recognize that but some people reading your post might misinterpret it so I'm clarifying. What it means is some class designers made some arguably bad decisions about how to allow their classes to be used. Sometimes the class designer is Microsoft. But I'm there with you buddy. If only I could count the number of times I've cursed a class designer because they didn't let me instance it. In the cases you mentioned I noticed you didn't talk about System.IO.FileInfo or System.IO.DirectoryInfo classes which are the instanceable counterparts of the static System.IO.File or System.IO.Directory classes you listed. Use the static classes for speed against multiple files and directories but if you want an instance wrapper around a file or directory you can easily do that with those other classes. As for the P/Invokes, well... I don't have a great answer except it's not a perfect world ... yet. .NET is a strong leap towards there.

    3. Re:Glory days are here by MechaBlue · · Score: 1

      A polished turd still reeks. Messy code is inefficient and prone to bugs.

      .NET can be inconsistent with itself. For example, generic vs. non-generic data structures (e.g., lists, vectors, etc.) have different member functions. Why?

      .NET lacks the mandatory exception handling of Java. Rather than have the compiler complain that I'm not handling my errors, I have to sort through buckets of documentation. The reason for this? "We found too many Java developers were using empty catch statements." So the answer was to make shoddy exception handling easier and good error handling harder?

      I hope these have been addressed but I doubt it.

      In general, C# and .NET are a breath of fresh air for those used to Win32. Compared to any of dozens of alternate languages and tools (e.g., Python, Ruby, Haskell, Java, etc.), it's stale fare.

      The new VM is pretty slick but, otherwise, C# and .NET are just a cheap copy of Java.

    4. Re:Glory days are here by pherthyl · · Score: 1

      I think you're right in that .NET is a huge step up for Windows devs. But it's still basically for windows devs, and it still requires a virtual machine. Even though the rhetoric is that performance doesn't matter in most cases, every single project I've worked on came to a point where performance was important, and it would have been extremely difficult to achieve the desired level of performance with a JIT compiled language.
      The other problem is that you're more or less locked onto windows platforms. Yes, mono exists, but it's not an official port and the legal situation is still hazy, so I would never rely on it for real projects delivered to real clients.

      So all my stuff is done with C++/Qt. I get C++ speed, .NET/Java style simplicity in the framework, seamless portability to all desktop and now also some embedded platforms (Linux/WinCE), and good platform integration. For my own business I pay for the proprietary license, and at work we use the open source version and write OSS apps (we're a non-profit). Works fine for us.. The license fee is peanuts anyway compared to the time savings in development and cross platform porting effort.

    5. Re:Glory days are here by Anonymous Coward · · Score: 0

      Please don't read the article.

    6. Re:Glory days are here by jesterzog · · Score: 1

      Despite what's underneath Windows, programming it through the .NET platform is very slick. Most of what had to classically be linked to in obscure ways is wrapped in the Framework Class Library.

      .NET is nice when you can stay inside .NET, but I've found this is very difficult unless you're developing a relatively simple application. As soon as you want to do anything fancy to interact with the underlying OS or other apps, it usually becomes necessary to start playing with COM wrappers and P/Invoke on at least some level. If you're lucky you might find a third party .NET wrapper library someone's written to do approximately what you want, but quality of those kind of things varies and it usually still requires some interaction with the less-safe APIs.

      My experience trying to write a toolbar for use within our organisation would have been horrendous if I hadn't come across BandObjects (or the original), which is clearly popular if you look at the forum below, even though it's not actively maintained by its original author. I still came up with a variety of issues trying to get it to work in Vista, particularly involving getting popup menus that would overlap the Window taskbar properly, and detecting Windows colour themes in a nice way to make sure text was readable. Both of these things need some additional coding that bypasses .NET completely to talk directly to the Windows API using ugly hard-coded constants that mimic definitions in some anonymous Microsoft C++ header file (thus will probably lose compatibility sooner or later), and I still haven't gotten them to work nicely.

    7. Re:Glory days are here by bcat24 · · Score: 1

      .NET lacks the mandatory exception handling of Java. Rather than have the compiler complain that I'm not handling my errors, I have to sort through buckets of documentation. The reason for this? "We found too many Java developers were using empty catch statements." So the answer was to make shoddy exception handling easier and good error handling harder?
      I admit I haven't programmed much in Java, but I hate checked exceptions. They do absolutely nothing to improve the final quality of programs. It seems to me that they're good for one thing and one thing only: making things harder for programmers.
    8. Re:Glory days are here by WitfulThinking · · Score: 1

      I am not necessarily a fan of checked exceptions either, but the mess that exists now is much worse. In an ideal world people would know what sorts of exceptions are likely to arise from what they call. Checked exceptions make the developer quite clear of what happens at compile time, but they can be a pain for trivial exceptions.

      The problem that exists now in my experience is that junior people are using functions without regard for what type of exceptions they may throw, and nothing shows up till run time. I've seen so many "unchecked exception in..." error messages it is disgusting, and every single one could of been caught by the compiler with checked exceptions.

      I think the best probably lies somewhere in between the Java - check everything and the .NET - check nothing until the program crashes philosophies. But .NET does not have the functionality to force checking. It is not a "feature" as they claim (Yes I read their little paper on why they aren't there and no I don't think it holds water). In Java, when creating new code they are optional, unfortunately they are over used in many libraries, but atleast the option is there if I want to use it.

    9. Re:Glory days are here by bar-agent · · Score: 1

      As soon as you want to do anything fancy to interact with the underlying OS or other apps, it usually becomes necessary to start playing with COM wrappers and P/Invoke on at least some level.

      It doesn't even have to be anything fancy. I wanted to break a command-line parameter up into into directories, filenames, and extensions. I wanted the OS to make the decisions about what the drive is, which part was the extension, and whether the thing was quoted. I had to use P/Invoke to do this.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    10. Re:Glory days are here by Anonymous Coward · · Score: 2, Insightful

      >> How this is different from a simple function in C is beyond me

      It's no different. But do you really need it to be different or you are just a blind OOP fanatic ?

      Describe the sin function. Why the hell should it need an instanced class ? Takes a number, spit a number everytime with the same logic. No different than the - operator.

      I find the static class choice makes much more sense than instanced objects. OOP is a tool and a solution.. not THE solution everytime.

    11. Re:Glory days are here by Anonymous Coward · · Score: 0

      In what way is the Encoding class static? True, you rarely create new instances directly - you use factory methods/properties instead. That's fine by me. You can write your own class derived from Encoding with no problems - I did exactly that for EBCDIC at one point.

      File and Directory are indeed full of static methods - but frankly that's more convenient than creating a new FileInfo or DirectoryInfo object and then asking whether or not the actual file/directory exists.

      What would you like to happen to the contents of the Math class? Sure, we *could* have a Sin method as part of double (and float), but I don't think that would actually make life any better.

      There are certainly some design issues with .NET (and the fact that they've taken three shots at getting date/time stuff right is a shame) but none of the "issues" you've mentioned bother me overly.

    12. Re:Glory days are here by Anonymous Coward · · Score: 0

      Why the hell would you want to instance the System.Math class? Name one other language that allows it and most importantly WHY?!?

    13. Re:Glory days are here by weicco · · Score: 1

      Could you be a little more specific? I've written .NET apps for some years now at work and I've never had to use P/Invoke. At least not at work. And I really don't see your problem with static classes. If you don't want to use for example File class there's always FileInfo class which can be instantiated.

      Only thing where MS dropped the ball, in my opinion of course, was that they dragged the abomination of VB to the .NET world. Now there's a heck load of VB.NET programmers who don't know a shit about object oriented programming and are doing everything in the old god forsaken ASP way.

      --
      You don't know what you don't know.
    14. Re:Glory days are here by Badaro · · Score: 1

      I can see the point on File and Directory, it always bugged me that they're just static methods, though I'm not sure why would one need to instance a Math object.

      You're wrong about Encoding though, it's not a static class. You can't create an instance of the Encoding class only because it's marked as abstract/mustinherit, but you can instance of the derived classes (UnicodeEncoding, ASCIIEncoding, UTF8Encoding, and so on).

      --
      My sig became obsolete, and I lack the imagination to create a new one. :(
    15. Re:Glory days are here by VoidEngineer · · Score: 1

      Sounds like you're confusing design decisions of your project with functionality of .NET. If you made a design decision to recode the parts that require P/Invoke, you'd be doing alot more inside the NET framework, and you'd be talking about how it does everything you want. If you're using P/Invoke to get at Win32 calls, it sounds like you haven't ported code or made the necessary design decisions to support a clean NET environment. Of course, those kinds of design decisions have to take into account budgets, skill sets, experience, legacy code, and all the rest. So maybe it's easier said than done.

    16. Re:Glory days are here by Westley · · Score: 1

      A polished turd still reeks. Messy code is inefficient and prone to bugs. .NET can be inconsistent with itself. For example, generic vs. non-generic data structures (e.g., lists, vectors, etc.) have different member functions. Why? Presumably because when they redesigned the collections for generics, they found some things they could improve on. Would you rather things didn't get improved?

      .NET lacks the mandatory exception handling of Java. Rather than have the compiler complain that I'm not handling my errors, I have to sort through buckets of documentation. The reason for this? "We found too many Java developers were using empty catch statements." So the answer was to make shoddy exception handling easier and good error handling harder? I used to support checked exceptions. After significant time in both C# and Java, I now regard checked exceptions as a failed experiment. There are very few times when you should actually catch an exception without rethrowing it unless you're at some reasonable top level of the stack - and when you can genuinely handle it, you're likely to know that without the compiler telling you.

      I hope these have been addressed but I doubt it. I hope C# never "gains" checked exceptions. Indeed, I hope Java might lose checked exceptions (which are only a compile-time feature, unenforced by the VM) at some point. It would simplify new features as well...

      In general, C# and .NET are a breath of fresh air for those used to Win32. Compared to any of dozens of alternate languages and tools (e.g., Python, Ruby, Haskell, Java, etc.), it's stale fare. My guess is you haven't written too much C# 2 or 3. Compared with those, Java is the language which is going stale. The number of common patterns supported well by C# but not by Java has come as something of a blow to me recently, moving back to Java from C#.

      Jon
    17. Re:Glory days are here by shutdown+-p+now · · Score: 1

      File, Directory, Math, Convert, Encoding, to name a few major players, cannot be instanced as they are declared static. How this is different from a simple function in C is beyond me.
      Encoding isn't static, it's abstract - classes like UTF8Encoding inherit from it, and of course you cannot instantiate abstract classes.

      As for the rest of them - if you code C#, you should know what "static class" is (basically, it's local lingo for "global functions are handy, but we'll badly pretend we don't have them"). This is because OOP is not always the best paradigm. Java suffers from the same problem in its class library, and I've yet to see a "purely OO" language that doesn't lead developers to create static-member-only "FooUtil" classes sooner or later.

    18. Re:Glory days are here by jesterzog · · Score: 1

      Only thing where MS dropped the ball, in my opinion of course, was that they dragged the abomination of VB to the .NET world. Now there's a heck load of VB.NET programmers who don't know a shit about object oriented programming and are doing everything in the old god forsaken ASP way.

      I'm not sure they had much choice in all honesty. There are so many VB developers out there that there would have been an outcry if Microsoft hadn't given them some kind of clear path to move to .NET. Furthermore, many of those developers would have avoided moving to .NET at all, and would be writing awful code in just as awful programming frameworks that were no longer supported. At least Microsoft has cleaned up a lot of the worst VB quirks and inconsistencies when they moved it to VB.NET, such that it's now almost possible to write good code in VB.NET if you're so inclined. (Although why would you when C# is so much easier to write with once you understand it?). Bad code tends to be more predictable and do less damage on average.

    19. Re:Glory days are here by jesterzog · · Score: 1

      Describe the sin function. Why the hell should it need an instanced class ? Takes a number, spit a number everytime with the same logic. No different than the - operator.

      I'm not personally a proponent of OO-for-everything being practical today, but there are ways that languages can do things nicely if you're willing to think about it in a different mindset. OO is about thinking in terms of objects, not about spinning out annoying extra object instantiations all over the place. (Actually OO is about a lot of abstract and controversial things that go well beyond simply having objects, depending on who you ask.)

      If I was trying to design a sin() function in an OO way, I'd probably put a .sin() method on the number class, to return another number object. If this idea is going to require too many thousands of mostly-redundant methods available on every Number object, then perhaps the language (which might allow for custom extensions of existing classes) would require that the programmer import a Math library of some kind before the .sin() method became available on those objects.

  27. COM - VB 6 redux by Anonymous Coward · · Score: 0

    The .NET library does work. It more or less has all the main pieces you need, but it's full of areas where you have to deal, directly or indirectly, with the obsolescent mediocrity of Win32.

    Many years ago I read a book on developing VB COM components by a guy named Ted Pattison, who worked for the DevelopMentor training outfit at the time. I remember thinking, in other words, in order to develop these widgets in VB you have to be as knowledgeable and tenacious as a C++ COM developer... and then have to deal with rinky dink syntax and get (dis)respected like a VB developer! It was the worst of both worlds.

    I guess that part hasn't changed much.

  28. MS should follow Apple? by Anonymous Coward · · Score: 2, Insightful

    What exactly is this guy recommending? He trumpets Apple for overhauling their platform and releasing a rapid succession of new OSes in order to advance the platform, which retaining absolutely no backwards compatibility. Meanwhile, Microsoft releases new runtimes for it's existing platforms, not requiring the purchase of a new OS, meanwhile retaining nearly full legacy support. How many 10 year old applications can you run on a new Macintosh right now, without relying on third-party emulators? You can count them on no hands. However, you can run the majority of 10, 15 and 20 year old Windows applications on Windows Vista.

    And to claim that .NET is hobbled due to Win32 is just silly. He targets WinForms specifically, which, sure, is a wrapper around Win32. But to claim that you need to know Win32 to program WinForms is just ludicrous. It makes me think that he's never programmed for either platform. WinForms hides the details of Win32 a great deal, and it's very rare to ever have to rely on platform invoke calls. And if WinForms is such a problem, why not use Gtk#? Or WPF? .NET is not one monotonous entity, and there are several UI libraries.

    He complains that the Win32 API for finding a file size requires you to deal with two 32-bit values, stating that on Win64 that it should return a 64-bit value instead. Well, if he wasn't such an idiot, he could use the newer version of that same API which does return a 64-bit value, on Win32 and Win64.

    All this dumb shit seems to do is claim that the platform should be constantly broken, because that would be the most convenient for him. If you think that the developer experience on Windows is bad then I posit that you've never programmed before, for any platform, ever. Either that or you are a fucking retard who has failed so badly as trying to hack together code that you're only possible saving grace is to write an inflammatory article and try to eek a living out of click ads.

    It's actually kind of funny watching retards like this rant. They have no clue what they're talking about yet they are so sure that the problem must be something other than themselves. Fuckwits like this make it much easier for me to find work cleaning up after their garbage, and make a small fortune doing so.

    1. Re:MS should follow Apple? by Concerned+Onlooker · · Score: 3, Insightful

      "He trumpets Apple for overhauling their platform and releasing a rapid succession of new OSes in order to advance the platform, which retaining absolutely no backwards compatibility."

      This is a false statement. Or at best misleading. Yes, Apple did finally ditch OS 9 after many years of offering backwards compatibility. Their succession of OSes, or OS X as some of us call it, are all backward compatible. Unless I'm mistaking your definition of backward compatible.

      Apple's decision to make a break with their old OS was a good one, and I'm sure just about anyone would agree with that. I liken it to when the camera manufacturer Canon abandoned their old twist-lock lens mounts in favor of the electro-mechanical mount. That allowed them to develop the best autofocus lenses on the market and to finally overtake Nikon in a big way, whom they'd been playing second fiddle to since forever.

      --
      http://www.rootstrikers.org/
    2. Re:MS should follow Apple? by MightyYar · · Score: 1

      without relying on third-party emulators Just curious, why do you include this restriction? I would think that dropping 16 bit Windows and allowing Win16 applications to run in a window like DOS stuff would be the way to go. Indeed it sounds like the direction that they are heading with 2007.

      Look how much cleaner OSX is since they were able to drop the ability to run old binaries. It would be even cleaner if they didn't have to support the "Carbon" apps leftover from the classic MacOS, but folks like Adobe never would have stood for that.
      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    3. Re:MS should follow Apple? by Anonymous Coward · · Score: 0

      As a Panther user, I strongly disagree with you. Most newer stuff won't work.

    4. Re:MS should follow Apple? by ceoyoyo · · Score: 1

      It seems MS has decided to do just that: follow Apple and support old apps through virtualization. They're calling it Windows 7. Whether they pull it off or not is still to be seen, but they think it's a pretty good idea.

  29. Hey! I like it, but I use the Win32 API by Anonymous Coward · · Score: 0

    And compared to, well, Linux, it's a masterpiece. Linux tools (that c/c++ compiler) are, well, out of the 80s for sure. It's so backward it makes me feel like a, well, commie ruskie! Not that commie ruskies didn't do some good stuff (great ejection seat technology, for one), but I don't want to be made to feel like one.

    Win32 API is not dshow and d3d and the other middleware crap with a god-awful black-box interface, the kind that might do well for those that can, well, memorize what to do but have no inkling of why they are doing it. Stick to the basics, and if you have decent tools, and a good head, and skill, and experience, well, it works.

    Know one thing. Most programmers, aren't. I seem them all the time. I wouldn't trust them to run a lawn mower (but would let them cut mine, well, if they did it for free).

  30. Compatibility... by etinin · · Score: 0

    The problem is Microsoft's policy to keep compatibility with software made for DOS/Windows 3.11... In my opinion, they'll only be able (not that I think they'll do it properly) to really get rid of the old API and create a new one would be by abandoning binary compatibility, which they might do in the next version of Windows. Keeping 2 APIs (*cough* .NET, which also isn't a great deal) would also be redundant and would require lots of maintenance efforts, killing all old crap is the only way to go.

    --
    "I decided I could write something better than everything out there in two weeks. And I was right." - Linus Torvalds
  31. Amen brother!! by Anonymous Coward · · Score: 0

    It's quite nice if you want to use the same techniques you learned 15 years ago and not bother to change how you do, well, anything...

    15 years ago, an essay or exposition written for a website would have been all on a single page that you scrolled through. Nowadays though, folks like you know that pumping adviews is FAR more important that ANY content or opinion that someone like you can offer. NOTHING says "Boy, I must really know what I'm talking about" like having to load a new page every couple of paragraphs.

    Perhaps Peter Bright should jump back into the useless fuck circle-jerk with kdawson, Steve Gibson, Jack Thompson and Roland Piquepaille and leave those of us who want CONTENT alone.

  32. Let's make a bet... by prxp · · Score: 1

    on how many "developers developers developers" jokes are gonna pop up here? I say at least 10...

    1. Re:Let's make a bet... by Jon+Abbott · · Score: 1

      I was surprised to only find three. I was hoping to find a gut-busting score 5 funny comment, but instead the mod squad showed no mercy.

  33. uh... by Anonymous Coward · · Score: 0

    Windows has the most apps and coders. Therefore Windows also has the most crap apps and crap coders.

    Get it?

    Geez.

  34. In other news.. by 4D6963 · · Score: 1

    how one developer migrated from Windows to OS X

    In other news, the number of OS X developers increased by 33.33% since 2007. Is 2008 the Year of OS X Development? More at 11!

    --
    You just got troll'd!
  35. Inconsistencies by neokushan · · Score: 1, Insightful

    I'm not exactly what you'd call a hardcore developer (I make games, not Applications), nor am I in any way familiar with developing on Mac OS X, but this article definitely seemed pretty inconsistent.

    For those of you who CBA to RTFA, FYI here's a small summary of it:

    It starts off saying there's basically 3 kinds of developers, 2 kinds that don't care what the code does as long as it works and 1 kind that cares deeply about "doing it right". It then says that this kind of developer doesn't matter because it's all hobbyists anyway. It says the first 2 kinds just want to get the job done and don't particularly want to or care to learn anything new to do it.

    Next, the article has a complete bitchfest about the .Net framework. Nothing new there, but it's main complaint is that it's meant to be a shiny, new API, but it's roots are still buried deep within the old API's of Win32.

    Then it bitches a bit about said Win32 API, but it's main point is that you don't learn anything new, it's just the same thing you've been doing "for the last 15 years", as the summary points out.

    Then, curiously, it states that this suits the first two kinds of developer just fine and this is where I get a bit confused. It's trying to bitch about the framework, it's trying to point out how it's flawed, but all it's really done is point out that it works just fine for the only developers that (in the article's own words) "matter".

    This leads me to the conclusion that the author really was just trying to start a flame war but instead of coming up with a reasonable argument (Of which, on the Windows platform, there are many - just like any other), he sort of just throws in a few keywords, rambles on without re-reading what he's wrote and then finishes it off by bitching about some of the quirks of the platform, quirks that are only there because people REFUSE to do anything different than what they've been doing for the last 15 years.

    In other words, he's blaming Microsoft for catering to lazy, underpaid developers.

    Does that make them the bad guys? Not if you've got a multi-million $$$ business to run and want to keep costs to a minimum so you can give yourself a big raise at the end of the year.

    --
    +1 IDisagreeSoHeMustBeATrollOrAnAstroturferOrAShill
    1. Re:Inconsistencies by icydog · · Score: 2, Informative

      The author is not saying the third type of developer is unimportant; rather, he is saying the opposite. He downplays their importance in a tongue-in-cheek manner, mocking Microsoft. If the author were to categorize himself as one of the three types of developers, he would probably associate with the third type.

  36. Re:As a dev who makes his living writing for .Net. by Kalriath · · Score: 1, Insightful

    Are you mad? The compiler itself is free with the platform (.NET Framework in its bin folder has programs called CSC and VBC. Run them sometime). The documentation is free to access. Visual Studio itself can be bought and paid for at anywhere between $500 and $1000 depending on the edition you want.

    MSDN is just an added bonus because it gives access to every development oriented Microsoft product in existence, including Operating Systems, Servers, and Office. That sort of stuff for that price ($1000 or so I believe) is pretty good really.

    I should probably also add that you can also write Windows apps for free using compilers like GCC and cygwin or similar, and IDEs like Eclipse - if you don't want to use Microsoft tools. It isn't necessary and never has been to use Visual Studio to make Windows apps.

    Or to sum up the parent poster... "troll troll troll, troll troll troll troll".

    --
    For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
  37. This is dumb. by Anonymous Coward · · Score: 0

    He only made two valid points: Windows is hindered by design decisions made 20+ years ago, and many of the APIs are inconsistent. The rest of his complains basically boil down to lazy developers, a problem not specific to any platform. Yawn.

  38. Re:As a dev who makes his living writing for .Net. by glassware · · Score: 5, Informative

    I want to second this concept. Back in 1998, when I started a company of my own, I insisted that my partners and I purchase a $500 MSDN license so we could do current development on Microsoft platforms.

    In 2004, when I joined a company that was well funded by venture capitalists, they required that I cost-justify the $2000 MSDN license cost. I argued that we were developing consumer applications and we needed the license.

    In 2007, I can no longer justify $3500ish for MSDN. It just doesn't work anymore. They offer reduced versions of MSDN, each of which eliminates all the reasons why a person would subscribe to MSDN. They offer only 10 application installs for your $3500. They offer only a few OS installs. After you've installed a few, they stop letting you install more development copies and insist that you call them for more authorization. It just doesn't work anymore, and I'm sad because I really liked being able to develop code without artificial roadblocks in my path.

  39. Sun did something right with Java by thammoud · · Score: 0, Offtopic

    The ability to simply run your Java code under 32 and/or 64 bit versions of the VM without recompiling and without the silly 32/64 prefixes/suffixes attached to the API is simply priceless. Good job Sun.

    1. Re:Sun did something right with Java by bcat24 · · Score: 1

      Now if only Sun could give us a GUI toolkit that doesn't royally suck...

  40. Author is misleading at best.... by TheNetAvenger · · Score: 4, Interesting

    No concept of what .NET really is, misleading users.

    No mention or acknowledgement of WPF/WCF or the new APIs that are and 'set' to replace Win32/Win64

    Completely misleads users about API concepts and features of OS X compared to Windows, for example XAML/XPS concepts compared to Display Postscript is a massive difference in display technologies that are part of the new Windows API sets, that Carbon or Cocoa cannot provide to developers. (Go to Channel 10 and watch videos on why XAML/XPS was created and how it trumps every aspect of other display/print technologies. - Let alone how it is an integrated aspect of the video API system in Vista, making programming freaky simple for advanced features and new UI platforms like 3D.)

    The author then jumps into UI consistency with dialog wording, and doesn't mention OS Xs lack of keyboard support, consistency of delete/backspace or 100 other things more important than dialog wording which is also NOT PART of Win32 inherently.

    Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today.

    Office 2007 is a new direction in GUI paradigms, and is WELL accepted in the business world. Not something to make fun of when OS X is still using old MENU (textual word lists) concepts. Menus were a hack to make features available in a GUI context, but are a draw back to non-graphical UIs. Vista and Office 2007 moving away from word lists (MENUS) is the right direction, too bad Apple isn't innovating on UI and just keeps throwing the same UI slop at users and telling them it is good. (And don't even mention multi-touch UI, go watch the freaking TED conferences Apple ripped the ideas off from several years ago, let alone the MS multi-touch work that also preceded the TED conference. MS Research has and is doing more with UI than any other think tank in the world.)

    Author also totally ignores Adobe not providing any 64bit support for OS X because Apple dropped the ball on Carbon x64bit support that has been promised forever from Apple. In contrast 64bit development on Windows in both Win32/Win64 and .NET/WPF is easy, transparent and has clear and easy paths for migration. (Let alone OS X is still a hybrid 64bit OS, using 32bit code throughout the OS, unlike Vista x64)

    So for 'real developers' like Adobe (OS X) is a failure, and has failed paths. Which means if you want a 64bit version of Adobe products, you will have to move to Windows for the peformance and benefits. Oh, how brilliant Apple and OS X is...

    This brings up the horrid Carbon/Cocoa platforms and migration paths, and even then not even touching on the development tool constrast between the two platforms.

    I challenge Mr. Bright to a real debate on the topics covered, maybe he can try to justify some of his misleading and outrageous claims.

    1. Re:Author is misleading at best.... by Macgrrl · · Score: 1

      Not something to make fun of when OS X is still using old MENU (textual word lists) concepts.

      Ok, I'm not a developer, and haven't studied GUI design to any degree of expertise - but what is the problem with menus?

      I would have thought the goal was unambiguous communication of options - word lists if chosen with care should be the lease ambiguous choice to perform this function as icons etc... are far more open to interpretation - especially where there are fine graduations between options (e.g. Print, Print Preview & Page Setup or Save & Save As.)

      This is a genuine question and not an attempt to mock.

      --
      Sara
      Designer, Gamer, Macgrrl in an XP World
    2. Re:Author is misleading at best.... by dhavleak · · Score: 1

      Thanks for the insightful post. I wanted to reply along the same lines but you covered it pretty well.

    3. Re:Author is misleading at best.... by Guy+Harris · · Score: 1

      (Let alone OS X is still a hybrid 64bit OS, using 32bit code throughout the OS, unlike Vista x64)

      Define "throughout the OS". In Leopard, almost all the libraries come in 32-bit and 64-bit forms; it's just the kernel and a lot of executables that come with the OS that are 32-bit only. 64-bit userland code can talk to 32-bit kernel code just fine.

    4. Re:Author is misleading at best.... by tclgeek · · Score: 2, Interesting

      You are correct and the parent is mistaken. Menus serve a very important function which is to allow the user to easily browse all the available functionality available to them. Note that menus are generally not the fastest way to perform a function, but as you said, it is the most unambiguous.

    5. Re:Author is misleading at best.... by TheNetAvenger · · Score: 1

      Ok, I'm not a developer, and haven't studied GUI design to any degree of expertise - but what is the problem with menus?


      Menus were implemented because there was no 'good' graphical UI concept at the time to provide a large amount of features in the screen real estate available. Some ideas were thrown around, but Apple and others came back to Menus as they were 'easy' even though they break the GRAPHICAL UI concepts.

      Just like icons, it is easier for the human mind to remember a small picture than the text associated with it.

      Toolbars were a first step in assiting with the problems of menus, by providing some of the features and associating graphical representations for these features. Toolbars were a good step forward as screen real estate and computing power allowed for them.

      The ideal metaphor though is to remove as much of the 'word lists/menus' as you can from an application. An application should be 'intelligent' enough to know more of what you are doing and not rely on you to click through a series of words to 'speak to it' as one might put it.

      Microsoft has worked a long time on replacement concepts for Menus, from their first toolbar implementations to finally moving up the 'audience' so to speak by ripping out as many menus as they can from Vista and Office 2007. There are still menus in Vista, but they are hidden by default (although hitting the ALT key makes them magically appear), and there are very few features in the Menus that are not available in the graphical representation of the application or the UI in Vista.

      Vista's successor will even be smarter and require fewer menus as contextual toolbar concepts we have now will move to being more intelligently assistive and the OS or applications will start helping and knowing instead of waiting for specific commands. It will also move more of the UI concepts developed from the Office 2007 research and even the other GUI research teams at Microsoft. (Look at the XBox 360 Blade interface, it is quite good and simplistic for what it offers, and is from another area of Microsoft Research.)

      One day you will look back at Menu based GUIs and go, OMG that is so outdated, just like looking at a Command Line/DOS application in comparison to usability of modern applications.

      In the near future the OS and applications will be smarter and KNOW what you are doing and assist instead of having to be guided through a series of commands. The computing power is here to do this, and it is time for the GUI metaphor to move forward.

      So far Microsoft is on the right track, and they for the last several years have been the ones pushing the GUI and UI forward. You don't see Microsoft imitating OS X or KDE, it is more them imitating Microsoft. (Even iTunes' interface is based off of a Longhorn Preview of Windows Media Player that became WMP11 - including the integrated search, library features, etc.) MS does spend more on testing and UI research than any company out there by several factors, and there are several competing research teams so they don't get stuck in one conceptual rut. There is even a team that is focusing on removing the concept of Windowed applications and the pros and cons, even if nothing from it ever sees the light of day.

      So, ya, menus are not a GUI element, but became one. They are command word list concept used in GUIs because of the lack of other solutions that fit the hardware of the time, as well as the thinking of the time.

      So UI change is a product of technology and conversion of thinking. The last one being the hardest.

      Even early versions of Finder and Windows FileManager worked like a visual command line folder tree, and today you can still see these trees in OS X and Vista on the left hand pane if you turn it on. But it is there for people that haven't moved on to the newer way of thinking, it is not there because it is a good method or even efficient.

      And Ironically, OS X back stepped and implemented an 'explorer' type view for Finder, when they shou

    6. Re:Author is misleading at best.... by pherthyl · · Score: 0, Troll

      Oh dear.. so much blind buyin to the Microsoft marketing.

      >> No mention or acknowledgement of WPF/WCF or the new APIs that are and 'set' to replace Win32/Win64

      Those API's haven't been proven. Yes they look promising, but until there are a significant set of apps out there using them fully, we won't know if they're any good. And there are signs of that not everything is peachy there: http://www.istartedsomething.com/20071206/yahoo-messenger-vista-launches/

      >> Go to Channel 10 and watch videos on why XAML/XPS was created and how it trumps every aspect of other display/print technologies

      Shocking that microsoft would say their technologies are better than the competition.

      >> Let alone how it is an integrated aspect of the video API system in Vista, making programming freaky simple for advanced features and new UI platforms like 3D.

      Blah blah blah. We heard plenty of hype about how the compositing in Vista was so wickedly advanced and it allowed effects that couldn't be done on other platforms. That may or may not be true, I haven't studied it in detail so I'm not going to say. And yet in reality it doesn't make a damn bit of difference. Vista doesn't have anything that doesn't exist on other platforms as well, requiring less resources. So even if it is more advanced, the actual benefits are not there.

      >> doesn't mention OS Xs lack of keyboard support

      Bullshit and you know it.

      >> Office 2007 is a new direction in GUI paradigms, and is WELL accepted in the business world

      And you know this via your crystal ball? Stop making statements you can't back up.

      >> Menus were a hack to make features available in a GUI context, but are a draw back to non-graphical UIs.

      Armchair usability experts are funny...

      >> Let alone OS X is still a hybrid 64bit OS, using 32bit code throughout the OS, unlike Vista x64

      Of course every windows app is still 32 bit, so your 64bit OS doesn't really make much difference in performance. The only way to really take advantage of 64 bit these days is to run Linux, where ~95% of your apps will be native 64bit (aside from some proprietary apps).

    7. Re:Author is misleading at best.... by MechaBlue · · Score: 2, Interesting

      MS invents an idea, Apple profits from it. That demonstrates the difference between invention and innovation. MS spends way more than Apple on R&D and, somehow, Apple is able to seem more cutting edge and profits as a result. Marketing plays a role, of course, but it's not the whole story.

      From my experience, .NET feels like a cheap knock off of Java. There are nifty things but API issues, missing features, etc. detract from the experience. Overall, I can sum up my feelings onC# and .NET as "I started with Java 8 years ago. Why do I want to learn it all over again?"

      Mac OS X may not be the most pragmatic route but it is more fun than Windows. If I'm going to study a programming toolset on my own time, it needs to be fun. That's why OS X will draw more enthusiastic programmers than Windows. The only semi-exciting thing .NET has going for it is XNA.

    8. Re:Author is misleading at best.... by dhavleak · · Score: 2, Interesting

      what is the problem with menus? ... unambiguous communication of options ... Menu's have their purpose and their limitations. As apps get more functionality, the choice-lists get longer and longer, you get more nesting of menus, sub-menus, sub-sub-menus, until finding stuff becomes hard. Cases in point: Photoshop (and cousins), and MS Office (and cousins). Another side-effect: most feature requests MS gets for Office, are for things that already exist - users just don't know they're there.


      The ribbon is not a new paradigm but it is a significant evolution. Menus do exist in Office 2k7 but the ribbon works so well, you rarely use the menus (in my case, practically never), even for advanced functionality.

      The grouping of functions is very obvious - your eye can pick out options faster. Icon sizes are dramatically larger (when necessary), and are designed to form a visual association with the picture and the action (this is always the idea - but it's embraced completely in the ribbon). Scrolling takes you back/forward through different sections of the ribbon -- so the entire UI is accessible without any clicks/sub-menus, and without taking over the whole screen.

      Template icons are dynamic, making it easier to associate a choice with the effect it has on your doc. Depending on your template, the icons change to reflect the styles - so no guessing what a particular style looks like (this might sound confusing - but when you use it, it even passes the grandma test). When you hover over one of the styles, the active line in the doc changes to that style (just a preview - the change doesn't take effect until you click) - so its super-simple to see what different styles will look like by just moving your mouse over a few icons.

      The idea is to enhance the visual association as much as possible, and to make the options as accessible as possible. Not so different from normal menu design, but (at least) I still experienced a very significant bump in efficiency, and reduction in menu item clicks and searching.

    9. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      "Vista and Office 2007 moving away from word lists (MENUS) is the right direction."

      Quite right. The last thing I want in my word processor is words.

    10. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      No concept of what .NET really is, misleading users.
      What is .NET? Every time I've looked it up I've gotten a different answer. It seems today it's a ".NET Framework" which is much different from what I got last time I searched. Please explain without using marketing buzzwords what .NET really is and how long you expect that definition to stay the same.
    11. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      Office 2007 is a new direction in GUI paradigms...

      It's a toolbar, dude. A toolbar.

      Office always overloaded the toolbar, and now it's tabbed. "It's the dawn of a New Age, I tells ya!"
    12. Re:Author is misleading at best.... by Kyle · · Score: 1

      If you want to debate Mr Bright, feel free to jump into the Ars forums any time.

      With some 60,000 posts under his belt, I'm sure you won't find him reticent to discuss the perceived shortcomings of .Net with you. In fact, you can start here :
      http://episteme.arstechnica.com/eve/forums/a/tpc/f/6330927813/m/917004181931/p/1

      --
      The previous comments are only true, if no-one says they're wrong.
    13. Re:Author is misleading at best.... by Homburg · · Score: 2, Insightful

      "Vista and Office 2007 moving away from word lists (MENUS) is the right direction."

      Quite right. The last thing I want in my word processor is words.

    14. Re:Author is misleading at best.... by TheNetAvenger · · Score: 2, Informative

      Define "throughout the OS". In Leopard, almost all the libraries come in 32-bit and 64-bit forms; it's just the kernel and a lot of executables that come with the OS that are 32-bit only. 64-bit userland code can talk to 32-bit kernel code just fine.


      Leopard's idea of 64bit is providing a 64bit version of Cocoa for applicaiton development. Like Tiger there are a few OS level 64bit pieces for addressing more RAM than 32bit, but the majority of the OS kernel itself is 32bit still. (Carbon was supposed to be moved to 64bit as well, but Apple gave up on it.)

      So this is why you only get 32bit drivers with OS X, because that is what the OS is. Apple tries to use this as a marketing tool, from their own web site:

      "Leopard is the first universal operating system to seamlessly support both 64-bit and 32-bit applications. There's no need to upgrade drivers, and you can even stick with your existing printers, storage devices, and PCI Express cards." http://www.apple.com/macpro/technology/leopard.html

      However, because you there are areas where 64bits at the OS level DOES help that Apple is not using, it a hybrid at best and a 32bit OS with 64bit application support and a few kernel level *nix 64bit flags to be more generic.

      For example, one area where Apple would benefit from full 64bits would be in Video Drivers, as shoving data to GPUs in 64bit chunks is much more efficient and faster. (There are other areas, that can be seen if you contrast Vista x64 vs Vista x32, as Vistax64 with 2GB of RAM runs even 32bit applications 5-15% faster, especially gaming applications because of the 64bit driver support.)

      Unlike a lot of fanbois would like people to believe 64bit is not slower, even if it is allocating or shoving twice the bits around, as the other benefits of the 64bit CPUs of today more than make up for it, just like the process scheduler in the 386 was worth the 16-32bit jump, in addition to additional registers less internal tracking and paging, etc.

    15. Re:Author is misleading at best.... by Lehk228 · · Score: 1

      please go work for microsoft, if they implement all of your ideas it will be much easier for linux to take over

      --
      Snowden and Manning are heroes.
    16. Re:Author is misleading at best.... by Guy+Harris · · Score: 2, Informative

      Leopard's idea of 64bit is providing a 64bit version of Cocoa for applicaiton development.

      Leopard's idea of 64-bit is providing 64-bit versions of most frameworks and libraries for application development. The one big exception is Carbon, and, yes, that's a big exception, but it's not as if there's not much you can do in 64-bit mode (as was the case in Tiger).

      Like Tiger there are a few OS level 64bit pieces for addressing more RAM than 32bit, but the majority of the OS kernel itself is 32bit still.

      Yes, as I said in the posting to which you're replying. I also said, however, "64-bit userland code can talk to 32-bit kernel code just fine." There might be performance boosts from running in 64-bit mode in the kernel, but it's not as if you'd gain much in the way of application functionality, as opposed to application performance, from having a 64-bit kernel.

    17. Re:Author is misleading at best.... by TheNetAvenger · · Score: 1

      From my experience, .NET feels like a cheap knock off of Java. There are nifty things but API issues, missing features, etc. detract from the experience. Overall, I can sum up my feelings onC# and .NET as "I started with Java 8 years ago. Why do I want to learn it all over again?"


      I have friend that took this position as well until they stepped back and realized that .NET is really nothing like Java other than the managed framework. .NET is also more than just the generic application platform people see it as, since it ties into many areas people don't even realize. For example parts of DirectX9.0c are running on .NET and keeps performance inline with previous version of DirectX. Additionally Silverlight uses .NET but it is NOT .NET if that makes sense.


      Mac OS X may not be the most pragmatic route but it is more fun than Windows. If I'm going to study a programming toolset on my own time, it needs to be fun. That's why OS X will draw more enthusiastic programmers than Windows. The only semi-exciting thing .NET has going for it is XNA.


      Go try Blend or some of the XAML samples. I would bet good money you would find it more fun, especially if you have a design background, as you will have an application running without code in a couple of minutes and doing things you can't even do on OS X without diving into OpenGL.

      XNA is actually one of the more 'boring' aspects of .NET, even though it is an advanced framework for gaming. Coding in XNA is more old school, unlike creating a WPF.NET based application that takes the fun of AI/CorelDraw/Flash/3D Studio and lets you play while creating a real and effective application.

      The XAML properties/binding/animation inherent abilities that allows application development without a line of code is an impressive concept and great first step in the emerging world of super rich UI applications.

      OS X is hip right now, and that is ok, but in a year or so when multi-GPU and other new hardware concepts start appearing that Vista is already designed for and works with, OS X users will be left behind, Apple needs to think different 'ahead' of time a bit more rather than meeting the current hardware conceptual needs. Microsoft tends to design for things others aren't even considering or thinking about, and they keep kind of quiet about it, because it isn't a current selling point in general terms, and it lets them keep leapfrogging other OSes.

      Also Apple's marketing is so good they are evil. They can take a bad thing and make it an awesome selling point. (See my posts above about 64bit for example) :)

    18. Re:Author is misleading at best.... by Anonymous Coward · · Score: 1, Insightful

      So for 'real developers' like Adobe (OS X) is a failure, and has failed paths."

      This brings up the horrid Carbon/Cocoa Dear Mr. Warthog, (thats you TheNetAvenger) If you don't read anything else I've written read this. One of the main points of this article was to detail how maintaining backwards compatibility can actually hurt a platform and its developers instead of help them.

      Apple and Microsoft are antitheses of each other in this regard. Apple has forced developers to move forward, kicking and screaming, over and over again, while maintaining a reasonable degree of backwards compatibility each step of the way, while Microsoft has to remain compatible to a million different quirks.

      In the case of Apple, this includes two architecture changes, Moto 48xxx -> PPC -> x86, and a complete overhaul of their original API set, that became carbon, and the platform for the future based on objective C (and java at the beginning, but developers have spoken on that, and nobody sans Azureus wants it) that is cocoa.

      I personally find it amazing that on a Intel Mac today you can (1) run programs that were originally coded for Mac System 7 running on Moto 48xxx with a moderate degree of work, and (2) run carbonized programs that were originally coded for OX X PPC on intel through emulation without any recode, and very little performance hit.

      With regards to your claims about Adobe, I suggest you put your foot down, and next time do your homework.

      Thank you Madonna. LoL

      Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today. I'm not going to argue who came up with the idea first, as it is completely irrelevant. As the author of the article clearly points out, what is important is now the guidelines themselves, but how well a company implements them. The author also clearly demonstrates how Microsoft is decade behind Apple in this regard, but is making an effort with Vista.

      These claims are fully supported, you must be a blind ignorant fool not to see this.

      The author then jumps into UI consistency with dialog wording, and doesn't mention OS Xs lack of keyboard support. Oh you did see his support, you just choose to ignore it, how convenient. You then go on to provide further evidence of your ignorance by stating that OS X has no keyboard support???

      Please do enlighten us, what is this device that I am typing on right now called??? OH yeah, a keyboard, DOH!!!

      Office 2007 is a new direction in GUI paradigms, and is WELL accepted in the business world. Perhaps the business world of borg cubes, but most of us here on planet earth find Office 2007 a product with interesting ideas, but very much so confusing for reasons author clearly demonstrates in his article.

      You sir, are a warthog faced buffoon.

    19. Re:Author is misleading at best.... by TheNetAvenger · · Score: 1

      Those API's haven't been proven. Yes they look promising, but until there are a significant set of apps out there using them fully, we won't know if they're any good. And there are signs of that not everything is peachy there:

      Vista itself using the XAML aspects of these API throughout the OS, from the WDDM to the printing subsystem. These are very proven technologies, and work beyond what OS X can even do at this point. Just having accelerated 3D development that a graphic designer can create with no coding is quite a testament to these APIs, let alone all the communication and other aspects of these APIs built into Vista and used in Vista. (On OS X to get to the WPF levels of features, you literally have to create it yourself and drop to OpenGL.)

      Shocking that microsoft would say their technologies are better than the competition.

      Actually video is from reserach team and Xerox (you would think Xerox knows something about printing uh?) Go watch the video instead of slamming what you don't even know.

      Blah blah blah. We heard plenty of hype about how the compositing in Vista was so wickedly advanced and it allowed effects that couldn't be done on other platforms. That may or may not be true, I haven't studied it in detail so I'm not going to say. And yet in reality it doesn't make a damn bit of difference. Vista doesn't have anything that doesn't exist on other platforms as well, requiring less resources. So even if it is more advanced, the actual benefits are not there.


      Do you have a point other than you don't like Vista? Vista is already supassed all Macs ever sold in the history of Apple, and you act like it is unproven crap? Strange...

      As for the performance and features of the APIs and concepts introduced in Vista, you should maybe know a bit about them before you assume they are crap.

      Hell let's even talk the WDDM in Vista, I can name 10 things it can do that no OTHER OS can do. From a shared 3D Surface texture composer, vector composer, to GPU RAM sharing, to even GPU multi-tasking, and multi-GPU threading...

      Just because you don't know what this does, doesn't mean these are crap concepts or a highly advanced development platform that would take OS X to be re-engineered at the kernel level to attempt to implement because of the legacy BSD API kernel interfaces.

      And you know this via your crystal ball? Stop making statements you can't back up.

      I know this because I have worked in the UI research industry for many years. If you want innovative User Interaction, you look at what Microsoft Research is doing, not Apple.

      Armchair usability experts are funny...
      And an idiot that thinks giving an OS commands via a word list is 'graphical' or innovative is just damn funny.

      Of course every windows app is still 32 bit, so your 64bit OS doesn't really make much difference in performance. The only way to really take advantage of 64 bit these days is to run Linux, where ~95% of your apps will be native 64bit (aside from some proprietary apps).

      Really every one? Vista x64's applications are all 64bit, additionally 64bit development from Adobe is nothing to sneeze at. Besides, if you actually looked around, you would have noticed that there are more Vista x64bit applications than all the OS X applications ever developed. (And Vista is only a year old. Does this make Mac Zealots cry?)

      Oh, and Vista x64 is a full 64bit OS from the ground up... No hybrid, no 32bit layers thunking 64bit code, etc.

    20. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      Author also totally ignores Adobe not providing any 64bit support for OS X because Apple dropped the ball on Carbon x64bit support that has been promised forever from Apple. That is absolutely the fault of the NeXT-heads who did the reverse takeover of Apple. After all these years they still can't get over the fact that the world hasn't yet bowed down and worshiped their long-suffering, unrecognized works of genius from the 80s. They stomp around the company trumpeting how many dinky little no-name shareware apps have been written in Cocoa, while all the time secretly stewing about the fact that the big app suites from Adobe, MS, and even Maya are written in Carbon. They hate that.

      So, in order to "prove" that their stuff is better, they eliminated the competition. And they didn't just cut Carbon 64-bit, they waited until it was finished, and then cancelled it. After a whole team of people spent years working on it. Needless to say, the people who worked on it were furious. Some of them left to work on other teams. Some are still around, although I'm sure heavily demoralized.

      As a result, Apple is stuck with no real strategy for 3rd party 64-bit pro apps, aside from "rewrite your stuff in Cocoa", which will just piss off devs and make everything take longer. Way to go NeXT-heads, you sure proved you were better!

    21. Re:Author is misleading at best.... by TheNetAvenger · · Score: 1

      It's a toolbar, dude. A toolbar.


      LOL, ya kind of... But it also has virtually NO menus and there are NO menu equivalents for the features on the 'toolbars/ribbon', this is where they step off the cliff beyond toolbars, as there is no Menus as a backup if the UI sucked.

    22. Re:Author is misleading at best.... by TheNetAvenger · · Score: 1

      Yes, as I said in the posting to which you're replying. I also said, however, "64-bit userland code can talk to 32-bit kernel code just fine." There might be performance boosts from running in 64-bit mode in the kernel, but it's not as if you'd gain much in the way of application functionality, as opposed to application performance, from having a 64-bit kernel.


      Actually having 64bit in the kernel does have massive advantages, from maintaining memory paging pools, tracking space, virtualization tracking, and this isn't even getting into the use of 64bit registers and other aspects that the OS can take advantage of.

      Also the 64bit driver aspect is big, even things like HD controllers to chipsets, mainboard drivers, etc can benefit greatly from 64bit bandwidth. (Let alone Video like I mentioned before)

      I personally don't disagree that what Apple did with Leopard is probably the right thing for them, it is however very misleading to tell people they are the 'first 64bit OS', or even today's marketing that they are a 64bit OS. Leopard is a 32bit OS that can run 64bit Applications, and without full OS support the thunking for the Applications kills the 64bit application performance advantages except with regard to RAM address space.

      Apple should at least try to be somewhat honest, even though their marketing team is far from truth tellers. (Places that don't allow deceptive adverstising like the UK bans Apple Ads almost as fast as Apple puts them out. And 64bit OS is one area they stretch the truth to where most Mac users don't know they are using a 32bit OS even.)

    23. Re:Author is misleading at best.... by TheNetAvenger · · Score: 0, Flamebait

      Wow, you are the first post that is so full of crap.

      Your assumption that dropping legacy support is always good should tell everyone you are insane or stupid. If this is true, they OS X should drop that 1970/1980 BSD UNIX API interface, and move forward to an Object based kernel technology like NT. Oh, that would break a lot of *nix and NEXT applications.

      Apple is more guilty of legacy backbending in terms of reusing old technolgy. Microsoft at least uses new technology and makes it appear to work like the old technology for the legacy applications. (Vista works so much like XP, people don't even realize that even how the screen is draw and fonts are rendered is new code, but it works flawlessly with old applications.) This is a win for the developers and users on Microsoft's part, and a lose for them on Apple's part.

      Truly, at least be consistent if you are going to take a side..

    24. Re:Author is misleading at best.... by TheNetAvenger · · Score: 3, Informative

      What is .NET? Every time I've looked it up I've gotten a different answer

      I completely agree that Microsoft and the .NET naming period was insane and poor marketing. .NET is several things, from a managed framework to extended technology ideas, to even API sets.

      Generally it is an application framework that is rich, managed (apps easier to write and won't suck memory as it cleans itself up), and programming agnostic. So if you write in C, C#, Pascal, VB, Python, even ASP or PHP, you can write .NET based applications that can be stand alone programs, web applications, HTML pre-processors, Games, virtually anything, even Silverlight is a variant of .NET technology. It is also highly extensive, as the Vista APIs were added to .NET seamlessly without even changing the core components of the .NET framework. This gave .NET the ability to do XAML, 3D, etc overnight.

      It is kind of complex, so this is a very generic description, and hope it helps a bit. .NET has some advanced stuff no one else is doing, and there are also some things that suck like all platform/frameworks.

    25. Re:Author is misleading at best.... by pherthyl · · Score: 1

      >> Vista itself using the XAML aspects of these API throughout the OS, from the WDDM to the printing subsystem. These are very proven technologies, and work beyond what OS X can even do at this point.

      And Vista has been such a success... :)
      You can't claim an API is successful based on the company that created it using it in their own products. If they didn't eat their own dogfood it would be pretty staggering.

      >> (On OS X to get to the WPF levels of features, you literally have to create it yourself and drop to OpenGL.)

      You probably know more about it than me, so I'll take your word for it. But at the end of the day what I care about as an application developer is what gives me real features that I can use and make my app better? So far I don't see WPF giving me any advantages. Yes it has all sorts of power to do crazy 3D stuff, but 90% of the time, that's not what I want at all. I want useful, practical APIs to perform the common tasks for today's desktop apps. WPF's success in that regard will be proven or disproven by its acceptance in the industry.
      For now it's a complete non-starter, because I have to still support at least Win98-Vista, let alone Linux, OSX, and embedded platforms. With WPF I would be limiting myself.

      >> Actually video is from reserach team and Xerox

      Yes, the _Microsoft_ research team. Yes the videos are interesting, but don't think they're not biased.

      >> Do you have a point other than you don't like Vista? Vista is already supassed all Macs ever sold in the history of Apple, and you act like it is unproven crap? Strange...

      I don't mind Vista. But its sales numbers have nothing to do with its quality. It's just about impossible to buy a new computer without it these days.

      >> Hell let's even talk the WDDM in Vista, I can name 10 things it can do that no OTHER OS can do. From a shared 3D Surface texture composer, vector composer, to GPU RAM sharing, to even GPU multi-tasking, and multi-GPU threading...

      Exactly the sort of thing I'm talking about. I don't care. That kind of thing is technical masturbation. Once I see the end-user benefit of those technical features, I will reconsider, but until then the capabilities of other platforms are just as good (since the result is indistinguishable).

      >> Just because you don't know what this does, doesn't mean these are crap concepts or a highly advanced development platform that would take OS X to be re-engineered at the kernel level to attempt to implement because of the legacy BSD API kernel interfaces.

      Well I'm not an expert in these technologies, but I understand the basics. I also understand (apparently you don't) that superior technical ability means nothing without meaningful applications of that ability. Also you obviously know little of kernel design, since you're mixing all sorts of concepts here. (re-engineered at the kernel level? who cares, happens all the time, also in windows)

      >> I know this because I have worked in the UI research industry for many years. If you want innovative User Interaction, you look at what Microsoft Research is doing, not Apple.

      If you really worked in the UI research area, you would know how ridiculous that is. Every company has some innovations there, and they all build on each other.

      >> And an idiot that thinks giving an OS commands via a word list is 'graphical' or innovative is just damn funny.

      And we devolve to name-calling :)

      >> Besides, if you actually looked around, you would have noticed that there are more Vista x64bit applications than all the OS X applications ever developed.

      Why bother making statements if you can't prove them? Most third party apps on windows are compiled for 32bit. The vast majority of Linux apps will be compiled for 64 bit. I don't know why you bother to argue.

      >> Does this make Mac Zealots cry?

      I dunno. I don't even use a Mac. I just smell radical windows supporter and had to inject some reality into the situation.

    26. Re:Author is misleading at best.... by pavera · · Score: 1

      This sounds insane... So basically we don't need menus any more because the applications will become self aware?!?

      Every time MS has ever tried to use their software to "figure out" what I'm trying to do, or "be smart" I spend hundreds of hours undoing what the application thought I wanted. If their "AI" is off by just a little bit, it is a failure. Think about the annoyance that is clippy!

      Maybe if "everything was a file" in windows like it is in *nix you could have your "create a file, then go word process on it" paradigm. Unfortunately, in windows you have to make sure and create that file as the right type or the os won't know what to do with it, and the user has to know what type to make the file.. which is a whole lot more training than just saving a file from word.

    27. Re:Author is misleading at best.... by shplorb · · Score: 1

      For example, one area where Apple would benefit from full 64bits would be in Video Drivers, as shoving data to GPUs in 64bit chunks is much more efficient and faster.

      It is better to remain quiet and have everyone think you a fool than to open your mouth and remove all doubt.

      Smart people use DMA for shuffling around large blocks of data.

    28. Re:Author is misleading at best.... by magus_melchior · · Score: 1

      If he's this emotionally invested in Microsoft R&D, and if he's willing to chase down everyone who disagrees, what makes you think he isn't working there already? The man says that people shouldn't give Apple all the credit (and rightly so), but he isn't willing to say the same for Microsoft.

      --
      "We are Microsoft. You shall be assimilated. Competition is futile."
    29. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      Yeah, it sounds like a total nightmare. Apps are bad enough as it is, now we're going to make them even harder to use? Many developers can't even make menus work correctly!

    30. Re:Author is misleading at best.... by mamer-retrogamer · · Score: 1
      I stopped reading as soon as I got to:

      Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today.
      Puh-leez.
      --
      Schrödinger's cat is not amused—maybe.
    31. Re:Author is misleading at best.... by msuarezalvarez · · Score: 1

      [...] is an impressive concept and great first step in the emerging world of super rich UI applications.

      Oh, come on. Whoever let the marketeer loose will now have to catch him again and put him back in the jar!

    32. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      "MS Research has and is doing more with UI than any other think tank in the world."

      That's great if you're comparing think tanks. But how about product? Apple (not Apple Research, not Apple Think Tank -- just Apple) actually comes out with products. MS Research might be able to run its computer on pure thought waves but what does that do for me? I prefer to see products that actually exist.

    33. Re:Author is misleading at best.... by Doctor+Faustus · · Score: 1

      Just like icons, it is easier for the human mind to remember a small picture than the text associated with it.
      Can people really tell what those small pictures actually are more than half the time? The bigger ones on the desktop might have some value, but I'd be happy to get all the hieroglyphics out of the applications I have to use.

      And I have yet to meet anyone in person who actually likes the Office Ribbon.

    34. Re:Author is misleading at best.... by Free+the+Cowards · · Score: 1

      Not to mention that most 32-bit CPUs are perfectly capable of moving data around in 64-bit chunks. 64-bit CPUs running in 32-bit mode doubly so. Grandparent poster clearly does not actually know what he's talking about.

      --
      If you mod me Overrated, you are admitting that you have no penis.
    35. Re:Author is misleading at best.... by Guy+Harris · · Score: 1

      OS Xs lack of keyboard support

      I.e., that you can't call up menu items from the keyboard? (OS X's UI isn't completely mouse-driven; see, for example, the "Full keyboard access" item in the "Keyboard & Mouse" pane in System Preferences.)

      Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today.

      What part of the Apple Human Interface Guidelines come from the CUA Basic Interface Design Guide and other Microsoft and/or IBM guidelines without Microsoft and/or IBM having, in turn, gotten them from earlier Macintosh guidelines?

    36. Re:Author is misleading at best.... by SuperKendall · · Score: 1

      LOL, ya kind of... But it also has virtually NO menus and there are NO menu equivalents for the features on the 'toolbars/ribbon', this is where they step off the cliff beyond toolbars, as there is no Menus as a backup if the UI sucked.

      There are plenty of apps I've used that had things in toolbars (or context menus) that the primary menus did not expose.

      I'm still on the fence about the ribbon, on the one hand it is better at helping users discover new features. On the other hand I think once you have discovered or know what features you want to use, the modality of the tab bar can be very frustrating mandating that you learn the keys.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    37. Re:Author is misleading at best.... by Guy+Harris · · Score: 1

      Actually having 64bit in the kernel does have massive advantages, from maintaining memory paging pools, tracking space, virtualization tracking, and this isn't even getting into the use of 64bit registers and other aspects that the OS can take advantage of.

      I already mentioned the performance benefits in the post to which you were replying. Are there any functionality benefits, such that a 64-bit application on a 32-bit kernel simply can't do stuff that the same application could do on a 64-bit kernel? Yes, you can have bigger kernel memory pools with a 64-bit kernel address space, and can have more page tables etc. to back more physical memory, but do any current Macs have enough memory for that to matter? And what do you mean by "virtualization tracking"? (You clearly saying that you need a 64-bit kernel to run 64-bit OSes on virtual machines, as I do that all the time on my Core 2-based MacBook Pro with its boring old 32-bit kernel.)

      Also the 64bit driver aspect is big, even things like HD controllers to chipsets, mainboard drivers, etc can benefit greatly from 64bit bandwidth. (Let alone Video like I mentioned before)

      Presumably you're not referring to DMA transfers, as they can be 64-bit even on Boring Old 32-Bit kernels.

      it is however very misleading to tell people they are the 'first 64bit OS'

      Where did Apple say Leopard was the "first 64-bit OS", with no qualifications? They do describe it as "the first mainstream OS to completely and seamlessly support both 64-bit and 32-bit applications on the same platform, making use of all your existing devices" on the "UNIX" page, but that's a rather qualified statement - if "mainstream" refers to OSes that most people are likely to use, that arguably rules out what might have been one of the first, if not the first, 64-bit OS (Digital UNIX), and "making use of all your existing devices" presumably refers to third-party drivers.

    38. Re:Author is misleading at best.... by Brandybuck · · Score: 0

      And yet... the users hate the ribbon.

      The menu used to work well. But then Microsoft decided to "improve" it by making it dynamic. Old familiar menu items were gone, replaced by items that would be in different positions everytime the software would run. Half of usability is familiarity, and Microsoft damaged familiarity with constantly changing menus. How did they fix the problem? By introducing the Ribbon, a cluttered mass of ever-shifting buttons and controls. It's an insult to users.

      --
      Don't blame me, I didn't vote for either of them!
    39. Re:Author is misleading at best.... by Brandybuck · · Score: 1

      The user can't remember more than a limited amount of icons. Menus are far more efficient than having to hover over icons to see what they are.

      --
      Don't blame me, I didn't vote for either of them!
    40. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      I find this interesting that I see people posting that users hate the ribbon. I work in an IT department in a large government department that trialled office 2007, initially we got a mass of complaints, but come 2 months into the trial you would not have been able to get a single user to go back to the old office menus if you paid them and I understand our departmnet is not the only one finding this. So where are all these users that hate it?

    41. Re:Author is misleading at best.... by random0xff · · Score: 1

      Apple ripped the ideas off from several years ago, let alone the MS multi-touch work that also preceded the TED conference. MS Research has and is doing more with UI than any other think tank in the world. Yeah, because everybody knows the most important thing is if an idea was stolen from someone else. Forget about functioning iPhones or multi-touch mac books, that's not important. Consumers decide based on wether a feature was invented before or after a TED conference...
    42. Re:Author is misleading at best.... by dhavleak · · Score: 1

      The menu used to work well. But then Microsoft decided to "improve" it by making it dynamic. Old familiar menu items were gone, replaced by items that would be in different positions everytime the software would run. That's not what happens. The icons don't change position, and certainly not when you launch the app.

      Half of usability is familiarity, and Microsoft damaged familiarity with constantly changing menus. How did they fix the problem? By introducing the Ribbon, a cluttered mass of ever-shifting buttons and controls. Like I said, nothing shifts. You don't seem to have ever used the ribbon. It drastically reduces the clutter of menus and icons from previous versions of office. The familiarity issue exists with all software. Familiarity is a good reason to avoid change for its own sake. Its not a good reason to stifle innovation. The ribbon is true UI innovation.

      It's an insult to users. It enables users (makes it easier to use the apps full functionality). And it boosts efficiency.

      And yet... the users hate the ribbon. I doubt you have any data to back that up. Even anecdotally speaking, your post makes it very clear you have never used the ribbon and you have no idea what you're talking about.
    43. Re:Author is misleading at best.... by random0xff · · Score: 1

      Adobe not providing any 64bit support for OS X because Apple dropped the ball on Carbon x64bit support Yeah, doesn't it suck that the ancient framework Adobe used that was supposed to not be used anymore in the future is not upgraded. Totally somebody else's fault! I mean, Adobe had to spend a lot of time developing a shiny new interface with collapsing panes, so no way did they have time to do anything else. Apple should do the hard work so Adobe can just recompile. It's so unfair :'(
    44. Re:Author is misleading at best.... by TheNetAvenger · · Score: 1


      Smart people use DMA for shuffling around large blocks of data.


      Really? So explain to us mortals how you would move a large set of data being processed by the CPU to the GPU via DMA? Do you even know what DMA is?

      I can't believe people are this stupid and race to post crap like this to demonstrate their ignorance.

      DMA and 32bit/64bit Diagram for you...

      32bit All Around - 32bit OS
                / 32bit DRAM \
      32bit CPU - 32bit Host Bridge - 32Bit Bus

      32bit CPU/64bit Bus - 32bit OS
                / 64bit DRAM \
      32bit CPU - 32bit Host Bridge - 32Bit Bus

      64bit CPU/64bit Bus - 32bit OS
                / 64bit DRAM \
      64bit CPU - 32bit Host Bridge - 64Bit Bus
      (note 64bit CPU is restricted to 32bit mode, and 32bit transfer to Host Bridge)

      64bit CPU/64bit Bus - 64bit OS
                / 64bit DRAM \
      64bit CPU - 64bit Host Bridge - 64Bit Bus

      But hey, maybe you know more about OSes and 32bit/64bit than Microsoft:
      "Performing direct memory access (DMA)
      Adding 64-bit addressing support to a driver can significantly improve overall system performance." from http://www.microsoft.com/whdc/system/platform/64bit/64bitsystems.mspx

      And if case you don't realize how DMA and drivers and a 64bit OS relate, here:
      "DMA Support
      Use the PHYSICAL_ADDRESS typedef to access physical addresses. PHYSICAL_ADDRESS is 64 bits long.
      Treat all 64 bits as a valid physical address. Do not ignore the high-end 32 bits.
      Use the Windows DMA APIs to ensure correct operation on all platforms. These routines include: Use the new scatter/gather DMA APIs when appropriate.

      Significantly improve performance by using devices with 64-bit addressing capability.
      " from http://www.microsoft.com/whdc/driver/kernel/64bit_chklist.mspx

      The only time 64bit Drivers don't benefit the performance of a system is when the device itself only has 32bits, then the 64bit OS has to double bounce/buffer. But this is not so common anymore, and is a tiny performance hit. Also considering Video cards, and all performance related devices of a modern system are not 32bit limited, it would not apply in the example you are responding to.

      Now go somewhere else to troll, and maybe listen to your own advice, this can apply to the idiot that agreed with your post as well:
      It is better to remain quiet and have everyone think you a fool than to open your mouth and remove all doubt.

    45. Re:Author is misleading at best.... by Pecisk · · Score: 1

      Because it doesn't matter anymore for them. They hate it, but they understand that they will be forced to use it anyway, so they don't give you any hints.

      You should try to study a user's psychology more.

      And yes, calling "Ribbon" a evolution is a big strech. It is just a step in very very wrong direction.

      p.s. I had to use Defrag tool wich uses Ribbon style interface now too. Talk about wasting time to find SIMPLE FUNCTION in that mess.

      --
      user@ubuntubox:~$ stfu This server is going down for shutdown NOW!
    46. Re:Author is misleading at best.... by master_p · · Score: 1

      No concept of what .NET really is, misleading users.

      Actually, the article is very accurate on what .NET is. He even says that .NET could run in other operating systems, because it's a virtual machine.

      No mention or acknowledgement of WPF/WCF or the new APIs that are and 'set' to replace Win32/Win64

      Why are new APIs needed? if .NET 2.0 was good, then new APIs would not be required.

      But wait a minute. Is WPF/XAML really the API or is it a layer on top of a managed API that does the job? according to this article, the Media Integration Layer, the media codecs, the presentation framework are unmanaged code! And the whole thing is nothing more than an API over DirectX!

      So Microsoft does provide some new APIs, but the O/S is really a mess. DirectX does not know about Win32 and vice versa. So perhaps the article is right after all...

      Completely misleads users about API concepts and features of OS X compared to Windows, for example XAML/XPS concepts compared to Display Postscript is a massive difference in display technologies that are part of the new Windows API sets, that Carbon or Cocoa cannot provide to developers.

      XAML is a markup language for graphical displays. Display Postscript is a markup language for graphical displays. The concept is exactly the same, the implementation is different.

      Let alone how it is an integrated aspect of the video API system in Vista, making programming freaky simple for advanced features and new UI platforms like 3D

      It's not an integrated aspect, it's a simple layer over DirectX.

      The author then jumps into UI consistency with dialog wording, and doesn't mention OS Xs lack of keyboard support, consistency of delete/backspace or 100 other things more important than dialog wording which is also NOT PART of Win32 inherently.

      True, and the Mac interface has many problems as well. But the article is about Windows. As a Windows programmer, I feel the author is right. Programming for Windows is a mess.

      Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today.

      Nope. Xerox did.

      Office 2007 is a new direction in GUI paradigms, and is WELL accepted in the business world. Not something to make fun of when OS X is still using old MENU (textual word lists) concepts

      Well accepted? who's saying that? do you have any numbers to back that up? I've tried it, I was not impressed. So have my colleagues, and almost every person I know above 25 that uses a computer.

      Menus were a hack to make features available in a GUI context, but are a draw back to non-graphical UIs. Vista and Office 2007 moving away from word lists (MENUS) is the right direction, too bad Apple isn't innovating on UI and just keeps throwing the same UI slop at users and telling them it is good.

      Last time I checked, humanity still uses text to communicate. Pretty pictures add glitz to a user interface, but when I want to work, I prefer text, because it's much easier to distinguish than pictures. For this reason, the Dock sucks, and the Task Bar is better (and yes, I am a Mac user as well as a Windows and Linux user).

      (And don't even mention multi-touch UI, go watch the freaking TED conferences Apple ripped the ideas off from several years ago, let alone the MS multi-touch work that also preceded the TED conference. MS Research has and is doing more with UI than any other think tank in the world.)

      The multitouch screen is a nice gimmick, but I don't want to use both hands on the screen (or two pens for that matter), I don't w

    47. Re:Author is misleading at best.... by ncryptd · · Score: 1

      XAML/XPS concepts compared to Display Postscript is a massive difference in display technologies that are part of the new Windows API sets, that Carbon or Cocoa cannot provide to developers. (Go to Channel 10 and watch videos on why XAML/XPS was created and how it trumps every aspect of other display/print technologies. - Let alone how it is an integrated aspect of the video API system in Vista, making programming freaky simple for advanced features and new UI platforms like 3D.)

      While I haven't used XAML/XPS, I have used Display Postscript -- at least I have through Apples other UI-related APIs. See Display Postscript is pretty much never used by applications themselves. Instead, apps use the Core ___ libraries for their graphics needs (Core Graphics, Core Video, and Core Animation). These libraries provide functionality that is an "integrated part of the video API system" -- and they have been for 4+ years. (Core Graphics, Core Video have -- Core Animation is new). And yes, Core Animation provides the much-touted 3D that XAML/XPS offers.

      Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today.

      Writing guidelines doesn't mean jack if you ignore them at every turn. Microsoft may have written the guidelines, but it doesn't look like their programmers consult them.

      Vista and Office 2007 moving away from word lists (MENUS) is the right direction, too bad Apple isn't innovating on UI and just keeps throwing the same UI slop at users and telling them it is good.

      You realize newer doesn't automatically mean better, right? At some point, the existence of a UI standard for 20+ years gives it the advantage of familiarity amongst most users; even if a newer concept is technically superior, user's familiarity with the old concept may outweigh that superiority. To use a class ./ car analogy: There are much better control systems out there than the same old steering wheel/pedals arrangement. But that boring wheel/pedals setup has one advantage: with the exception of a few cosmetic differences, it basically works the same on all cars. Sure the position, font, and color of menus are different on different platforms -- but they basically work the same. If you know how to work a drop-down menu on one platform, you can work it on any platform.

      Carbon x64bit support that has been promised forever from Apple

      I don't remember them promising that. I remember them nagging developers to change to Cocoa since about 2002. It doesn't surprise me that they're trying to get rid of Carbon -- it was designed as a transition API from Mac OS 8/9 to OS X -- and that transition was complete a _long_ time ago.

      Plus, 64-bit Carbon support isn't completely absent from Leopard. Most of the non-UI portions of Carbon _are_ available to 64-bit apps. Your UI can be done with Cocoa, and the rest with Carbon (if you so desire.)

      So for 'real developers' like Adobe (OS X) is a failure, and has failed paths. Which means if you want a 64bit version of Adobe products, you will have to move to Windows for the peformance and benefits.

      With all due respect, Adobe's had quite a while to update their code base. Apple's been advising developers to move to Cocoa for 6+ years. At this point, the only part of Adobe's 64-bit transition that Apple is responsible for is the removal of the UI portions from 64-bit Carbon. This means that all Adobe has to do is create a Cocoa interface for their apps (which I thought they did for CS3, but I could be wrong) -- the rest of their codebase can likely remain much the same.

      This brings up the horrid Carbon/Cocoa platforms and migration paths, and even then not even touching on the development tool constrast between the two platforms.

      Where to begin... First, Carbon's considered an old platform, even by Apple. Yes, some things are still written in it -- but they shouldn't be. All new

    48. Re:Author is misleading at best.... by Megane · · Score: 1

      And stupid me noticed that total falsehood (Apple had UI guidelines before Microsoft even had Windows!), but kept reading on anyhow, and read four or five more of that guy's messages before giving up. Now I know how Windows users feel about the worst of the Mac zealots. Sheesh.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    49. Re:Author is misleading at best.... by Homer1946 · · Score: 1

      Apple needs to think different 'ahead' of time a bit more rather than meeting the current hardware conceptual needs. Microsoft tends to design for things others aren't even considering or thinking about, and they keep kind of quiet about it, because it isn't a current selling point in general terms, and it lets them keep leapfrogging other OSes. Many people do not see Vista as more advanced than other OSs, and I would bet that few see Vista as leapfrogging anything (obviously an opinion, I have not done polls). Either way, you mention that MS is working on next generation technologies but they are secretive so nobody knows about them. Few companies are more secretive than Apple so you have no real knowledge what they are working on. You simply assume they are not. This seems like a baseless assumption. However my real point is not that MS doesn't spend large amounts of money and manpower on GUI research, but they are undisciplined so the GUIs they actually implement are often a mess. The hardest thing about designing a good GUI is not developing new technology and saying yes to it, it is saying no to keep the overall GUI consistent and simple. I would say that a consistent well integrated GUI based on yesterdays concepts will be much easier to use than an unfocused 'everything but the kitchen sink' GUI using tomorrow technologies.
    50. Re:Author is misleading at best.... by shutdown+-p+now · · Score: 1

      I started with Java 8 years ago. Why do I want to learn it all over again?
      A good question. The answer is, "because this flavor of Java looks and works better on 90% of all desktops out there". As usual in the MS land, you've got to use their products all the way to get the best out of it...
    51. Re:Author is misleading at best.... by shutdown+-p+now · · Score: 1

      But wait a minute. Is WPF/XAML really the API or is it a layer on top of a managed API that does the job? according to this article, the Media Integration Layer, the media codecs, the presentation framework are unmanaged code! And the whole thing is nothing more than an API over DirectX!
      Of course it is, which is because DirectX is the fastest way to draw stuff on the screen in Win32! In the same vein you could say that Gtk is "an API over OpenGL" (because Gtk uses Cairo, which can use OpenGL as a renderer).

      It's not an integrated aspect, it's a simple layer over DirectX.
      It's not a "simple layer". DirectX provides much, much lower-level primitives than what WPF exposes to the user. With DirectX, you deal with surfaces and textures and screen buffers; with WPF, you deal with complex geometric shapes (including curves), gradients, text glyphs, and, on top of all that, an entire widget set with data binding.

      True, and the Mac interface has many problems as well. But the article is about Windows.
      The article is about how development for Windows sucks compared to development for Mac. Which is at best subjective, and broadly just plain untrue.
    52. Re:Author is misleading at best.... by Anonymous Coward · · Score: 0

      Go try Blend or some of the XAML samples. I would bet good money you would find it more fun, especially if you have a design background, as you will have an application running without code in a couple of minutes and doing things you can't even do on OS X without diving into OpenGL. Um, have you heard of these newfangled things Apple calls Core Animation, Quartz Composer, Core Image, etc? No... OK then.

      The XAML properties/binding/animation inherent abilities that allows application development without a line of code is an impressive concept and great first step in the emerging world of super rich UI applications. Super rich UI.. phhhfffffft. Now all my apps will have their own themes. Yaaaaaay.... the late 90's Linux desktop experience!

      OS X is hip right now, and that is ok, but in a year or so when multi-GPU and other new hardware concepts start appearing that Vista is already designed for and works with, OS X users will be left behind, Apple needs to think different 'ahead' of time a bit more rather than meeting the current hardware conceptual needs. Microsoft tends to design for things others aren't even considering or thinking about, and they keep kind of quiet about it, because it isn't a current selling point in general terms, and it lets them keep leapfrogging other OSes.

      Also Apple's marketing is so good they are evil. They can take a bad thing and make it an awesome selling point. (See my posts above about 64bit for example) :) ROFLS!!!!!!!! You are talking out your fucking ass dude. Seriously, you have no idea at all what you're talking about. That is hilarious. What an awesome display of ignorance. I can't find a place to start flaming you on this one. WOW. No, I keep trying, it's impossible, like you wrote all of this from a different fucking universe or something.
      Where did you COME from? And you top it all off with a smily face. wow... :) Jesus...

      You're a troll ninja or something.

    53. Re:Author is misleading at best.... by master_p · · Score: 1

      Of course it is, which is because DirectX is the fastest way to draw stuff on the screen in Win32! In the same vein you could say that Gtk is "an API over OpenGL" (because Gtk uses Cairo, which can use OpenGL as a renderer).
      Since a great portion of the new APIs are native, what prevents Microsoft from exposing a C/C++ API? nothing. But it's .NET for marketing reasons.

      It's not a "simple layer". DirectX provides much, much lower-level primitives than what WPF exposes to the user. With DirectX, you deal with surfaces and textures and screen buffers; with WPF, you deal with complex geometric shapes (including curves), gradients, text glyphs, and, on top of all that, an entire widget set with data binding.
      But it is still not integrated. Another library could do the same thing over DirectX.

      The article is about how development for Windows sucks compared to development for Mac. Which is at best subjective, and broadly just plain untrue.
      The article is about how development for Windows sucks, period. The Mac references are very few and are only used as examples.
    54. Re:Author is misleading at best.... by shutdown+-p+now · · Score: 1

      Since a great portion of the new APIs are native, what prevents Microsoft from exposing a C/C++ API? nothing. But it's .NET for marketing reasons.
      Er, no. Most of WPF is actually written in .NET as well. Like I said, it's not a "thin layer over C++ API". It's a full-fledged framework written in C# from ground up. The only kind of C++ it can be exposed to as is, is C++/CLI.

      But it is still not integrated. Another library could do the same thing over DirectX.
      I'm not sure what you mean by "integrated" here. And of course another library can do the same thing and draw graphical primitives using DirectX (I believe Qt actually does) - what is wrong with that?
    55. Re:Author is misleading at best.... by Walter+Carver · · Score: 1

      Author also totally ignores Adobe not providing any 64bit support for OS X because Apple dropped the ball on Carbon x64bit support that has been promised forever from Apple. I challenge you to give me a link with that "forever" promise.

      Apple never promised that Carbon would go on forever. From day one, they said it would be a transitional API to help developers get ready for Cocoa. Although it wasn't nice that Apple dropped support so suddenly (they announced it one year before it gets dropped) it is Adobe's fault dragging its feet. Lightroom is a Cocoa application because Adobe knew that Carbon would get dropped.

      Read this for more: http://arstechnica.com/staff/fatbits.ars/2008/04/02/rhapsody-and-blues
    56. Re:Author is misleading at best.... by dhavleak · · Score: 1

      p.s. I had to use Defrag tool wich uses Ribbon style interface now too. Talk about wasting time to find SIMPLE FUNCTION in that mess. You clearly have never used the ribbon. As of now, nothing uses the ribbon except MS Office. Period. Open your eyes man -- your hatred is blinding you.
    57. Re:Author is misleading at best.... by Pecisk · · Score: 1

      Then you haven't seen lot of newest applications. Other developers already mimic that. And I have used Office Vista too.

      --
      user@ubuntubox:~$ stfu This server is going down for shutdown NOW!
    58. Re:Author is misleading at best.... by dhavleak · · Score: 1

      Then you haven't seen lot of newest applications. Other developers already mimic that. Which ones? Why don't you get specific? Which applications mimic the ribbon, and what is it in the menu that makes it a 'ribbon'? You already got it dead-wrong with defrag.

      And I have used Office Vista too. Then your hatred of MS is clouding your vision -- causing you to see ribbons where they don't exist.
  41. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    The compiler, docs and tools are free. No, not the-business-buys-MSDN-free, completely 100% download it right now free. The completely functional optimizing commandline compilers for C++, C# and VB are freely downloadable. The IDE with most designer support and full debugger support is freely downloadable. The entire documentation set is available online, for free. You can use these free tools to write applications and then sell them.

    http://www.microsoft.com/express/

    Why is it that you think that MS tools cost $3000/seat/year? If you want the most expensive of all possible developer packages, then sure, it will cost some cash. But unless you're running a large enterprise and want to use MS's brand of application lifecycle management and source control, you DO NOT NEED to pay that.

    And you've never, ever had to pay a cent to Microsoft to legally develop or deploy a commercial application on Windows. Stop spreading FUD you dumb fucking retard.

  42. Re:Same techniques 15 years ago? Not just Windows. by Anonymous Coward · · Score: 0

    Huh? I can write beautiful, modern, OO code with Vim, GCC, and Qt.

  43. Re:Same techniques 15 years ago? Not just Windows. by Anonymous Coward · · Score: 0

    "Apparently the author never heard of vi and gcc on Linux..."

    Perhaps, but it's hard to improve on perfection.

    *ducks*

  44. Kill vb6... by Maxo-Texas · · Score: 1

    I know a lot of vb guys were pissed over that.
    Some got over it and went on to .net but others quit microsoft as an environment.

    And i know some who are mad that microsoft charges them $1,000 for software but charges their competitors in china and india under $100. So they are looking for environments that cost the same in both locations.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  45. So Microsoft has jumped the shark, then by Pig+Hogger · · Score: 1

    So Microsoft has jumped the shark, then... The question is "when was that"...

    1. Re:So Microsoft has jumped the shark, then by IdeaMan · · Score: 2, Insightful

      Same as when IBM jumped the shark...

      When they tried to force a product down the consumers throat that there was no perceived need for, which could be replaced by products that were not IP locked.

      For you younguns IBM's was called Microchannel.

      --
      They ARE out to get you simply because They are in it for themselves and they don't care about you.
    2. Re:So Microsoft has jumped the shark, then by Pig+Hogger · · Score: 1

      Microchannel was fine, except that it was proprietary. That's what killed it.

  46. Re:use the same techniques you learned 15 years ag by Harmonious+Botch · · Score: 1

    P has a fair question. I mean, I was a great programmer 15 years ago...
    Has anything really changed?

  47. Windows programming by buss_error · · Score: 5, Insightful

    Back before my current gig, I was a software developer for companies that hired me to do their work and for several packages I wrote for my own profit. This story comes from the programs I developed for my own profit.

    Because the software I wrote was also licensed for source code if the user wanted it, I picked Visual Basic as the platform to use. I wanted to use Visual C, but you could more easly find programmers that could get by in Visual Basic than VC. I should have picked VC rather than VB for a lot of reasons, the main one being that if you had experience in VC, you were at least likely not to be a total idiot. Not so with VB. I found that VB programmers were idiots at the approximate rate of 7:10, while VC programmers were likely to be idiots at an estimated 1:10 ratio... which isn't to say that all VB programmers were idiots, only that they were cheaper labor, and therefore less likely to have a solid background in programming logic.

    That said, we'll focus only on my own development problems, just so we are dealing with only one (possible) idiot... me. I started out with VB 2.x. The upgrade to 3.x went fine, with very few problems. When 4.0 came out, I found I had to rewrite about 20% of my code. Sure, there were conversion programs, but they didn't quite fit in with exactly what I wanted the program to do. It'd get it about 90% right, but then I'd have to slog through the rest of the automated code to correct that last 10%. It was faster to discard that code and re-write it.

    Then 5.x came out. Only about 50% of my code still worked. And again, the automated process to "ease" transisition left something to be desired. When Visual Studio 6.0 came out, it was a nightmare. only 20% of the code ported. At that point, I sent the 5.x code out to all the people that bought the program (with source or not), and told them that the code was now moribund, I would not be maintaining it, and that I was releaseing the source code to the public domain (5 floppies included). As I recall, that was about 1998-1999 or so.

    As late as March 2008, I've been contacted about the code. Of course, it's morphed far past anything I'd written, and I could only help with the general business case logic involved, not the actual code. But having to deal once again with Microsoft development tools, one would have to offer me far, far more money than it would be worth. No, I'm done with Microsoft "development" games. I'm done with school yard bullies trying to take my lunch money. I'm done, PERIOD, with closed source, whenever I have a choice.

    --
    Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
    1. Re:Windows programming by Gazzonyx · · Score: 2, Informative

      Just wondering... did your program interface a database at all? You should see the regressions with DAO/ADO/ODBC/JET/Etc. Now all you've got is ADO.NET, and from what I've seen the calls aren't the same as the calls for the pre-.net APIs.

      --

      If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.

    2. Re:Windows programming by Doctor+Faustus · · Score: 1

      When Visual Studio 6.0 came out, it was a nightmare. only 20% of the code ported.
      From VB5 to VB6? People ridiculed VB6 for how little it changed from VB5. It came with some new database libraries (you could still use the old ones), and added four new string functions.

      Are you sure you're not thinking of .Net?

    3. Re:Windows programming by gsslay · · Score: 1

      I should have picked VC rather than VB for a lot of reasons You know, you could have just stopped your story there. You picked VB. VB is the coding environment for people who aren't programmers, but wished they were. It started out a horrible kludgy mess, it got a bit better, but not much. Any upgrading MS did to VB had to always take into consideration that the legacy apps would be 70% written by the cluesless in a kludgey environment.

      Doesn't bode well, does it?
    4. Re:Windows programming by buss_error · · Score: 1

      I don't recall ever getting something called "Visual Basic 6". What I got was "Visual Studio 6", but then again, we are talking a period of 3 days almost 10 years ago. I guess I could be mistaken about the name. Not about the 80% code loss though. Like I say, filtering out the users, other developers, there is only one idiot left in the mix; me.

      My programming maxims:
      1. The brightest person in the room is sometimes not in the room.

      2. #1 is true 90% of the time.

      3. Keep it stupid, simple.

      4. Keep it maintainable, bone head.

      5. Having to resort to cleaver and intricate programming is a sign of:
            a. Not understading the problem.
            b. Not asking the right questions.
            c. Getting too impressed with how smart you are.
            d. Getting too impressed with how dumb others are.
            e. All, some, or a superset of the above.

      6. Designing an application that does not take into consideration the life cycle of data
      is like designing a life form with a very large mouth and no anus. Pretty soon it's going to be filled with shit. That, or a program that doesn't really do much.

      7. Designing an application that requires the application to be shut down in order to get a good, consistant (datawise speaking) backup is like having to fill your car at the pump one drop at a time. Sure, some will be able to live with it, but most won't put up with it.

      8. If your data schema has more tables with a primary key and one data field than indexes, you are over normalizing your data. That's OK, but be sure to do it in private and wash your hands afterward. You might need glasses after a while.

      9. When giving an estimate of how long it will take to code something, double it. Then double it again. Then divide it by the hours spent in meetings discussing what the project is supposed to do multiplied by the numbers of end users present in those discussions, raised by the power of how many mangers are present. Then raise by the power the number of minutes in those meetings you spent going to your "happy place" or desperately trying to keep from rolling your eyes, then raised by the cube of the number of minutes spent reminding yourself that while "Yer Honner, he needed killin'!" isn't really a valid defense. Bottom line, It's always better to overstate up front how long something will take than to establish an expecation that you can write a program to solve the world's problems in thirty minutes or less. When you come in under time, people are happy. When you extend testing or development, people wonder why you couldn't figure that out to begin with.

      10. In the final analysis, programming ought to be a process of bringing order to chaos.

      And finally, if one has to have a 10 point list of programming maxims, you've spent too long coding. Switch to systems administration in an shop with a director that is a slave to ITIL principals to the point that it requires a change log entry to submit a request for vacation, or to reboot a server that is not in the production window. (I got that covered.)

      --
      Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
    5. Re:Windows programming by buss_error · · Score: 1
      Just wondering... did your program interface a database at all? You should see the regressions with DAO/ADO/ODBC/JET/Etc. Now all you've got is ADO.NET, and from what I've seen the calls aren't the same as the calls for the pre-.net APIs.

      .
      All my programs interfaced with databases, from Oracle to MSSQL. (My programs were ERP, accounting, logging, device control for the most part. Databases were always a very large part of that.) I used a data abstraction layer made by a company whose name I cannot now recall, but they charged as much for their ODBC connectors as MS did for VB, and Crystal Reports was always a factor in the price. While I could have forked the source to use native DB calls for MS products, I'm a pretty big beleiver in "single source tree" development, so I used the abstraction layer to make calls to MS products even though the direct call was available.

      At this late date, I think that may have been my single largest error. Trying to allow the customer to run whatever database they were most comfortable with. I could have forced them to MSSQL or other, but I didn't.

      --
      Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
  48. Re:As a dev who makes his living writing for .Net. by Zehuti · · Score: 1

    You seem to forget there are express versions of Visual Studio that let you do most everything except enterprise level data access.

  49. Re:DRIVERS: MS POOCH SCREWING by Kalriath · · Score: 1

    This is just so full of bullshit. First off, only 64-bit versions of Windows will refuse to load unsigned drivers.

    Second of all the driver needs to be signed by the developer of the driver, not Microsoft.

    Third of all, the DDK (now called the WDK) can be downloaded using the directions on this page (no pooch screwing necessary!)

    Fourth of all, that Guttman diatribe has been refuted at least 5 times, yet it still comes up. For the love of all that's holy, stop trotting it out already. Find something actually researched and up to date!

    --
    For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
  50. I know how! by HungSoLow · · Score: 1

    Developers x 7, Mushroom?

  51. Re:Same techniques 15 years ago? Not just Windows. by Anonymous Coward · · Score: 0

    vi and gcc are tools more than techniques. I guess he's talking about design patterns and languages.

  52. Developers? by Anonymous Coward · · Score: 0

    Article title should have read:

    How Microsoft Dropped the Ball with Developers developers developers developers developers developers developers developers developers developers developers developers developers developers! Yes!

  53. Anybody else out there by onion_joe · · Score: 1
    read the article title, "How Microsoft Dropped the Ballmer with Developers?

    "Yo shawty, drop that Ballmer now!"

    Ick, sorry, too much GTA...

    --
    sig sig sig siggy sig
  54. Re:Same techniques 15 years ago? Not just Windows. by mikael · · Score: 1

    If you are developing open source applications with Qt, then you can use the open source release. If you are writing a commercial application, then you have to purchase a license.

    --
    Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  55. Re:Yeah, yeah by cyphercell · · Score: 1

    it's kinda like LDAP, there's probably a windoze user around here that's used it.

    --
    Under the influence of Post-Cyberpunk Gonzo Journalism
  56. The appalling GUI inconsistency by Coryoth · · Score: 4, Insightful

    One of the nice things from this article was actually this nice screenshot of a selection of current versions of MS software running on Vista. The thing to notice is that not a single one of those applications has a GUI the same as any of the others. There are different toolkits, completely different look and feel, some have menus, some don't; it's a horrible, horrible mess. And yet despite that, we still get people complaining about GNOME vs. KDE and the clash of different toolkits and how that's what is holding Linux back. You can run GNOME and KDE apps side by side and, while they'll have differences, they'll sit together far more elegantly than the mishmash that is Windows. I think I'll have bookmark that screenshot so I can bring it up the next time a Windows fanboy starts decrying the excessive number of GUI toolkits on Linux.

    1. Re:The appalling GUI inconsistency by RiotingPacifist · · Score: 1

      Only one problem its not the Windows fanboys that complain about the GUI toolkits its the apple ones. Windows fanboys are too busy playing games.

      --
      IranAir Flight 655 never forget!
    2. Re:The appalling GUI inconsistency by Nazlfrag · · Score: 2, Interesting
      Yeah, and they have a good point, while not perfect Apple makes an excellent GUI and actively promotes sane and pretty interfaces to third parties, and practices what it preaches. Sometimes they take their philosophy to the point of absurdity, like the single button fetish they still desperately cling to, but overall it's worked a charm.

      A similar GUI could happen on linux, perhaps it hasn't happened due to the roll-your-own nature or independent streak among hackers, perhaps the abundant CLI use still prevalent among the developers, but I'd guess it's far more likely the fact that 99% of us geeks have terrible aesthetics.

    3. Re:The appalling GUI inconsistency by Pecisk · · Score: 1

      Shhhh, it is in style to bash GNOME and KDE because they are here for choice. Unfortunately, lot of users get confused and worried when offered a choice. So they try to get rid of it bashing Linux desktop because it confuses them by choice.

      In fact, that is why I like Ubuntu and Kubuntu and how common users react to them, because they are like different flavors. When user uses them, he don't get confused, because there are one desktop env. to deal with, one mail app (Evo/KMail), etc. Of course, when they discover that they can expand their desktop much more with few clicks or lines in console, they are truly thrilled. But first, provide minimal to avoid confusion.

      But yes, Windows is a mess when we are talking about GUI consistency. However, even as Linux advocate as I am, I can hardly blame Microsoft. Yes, they could/should have provided some strong GUI guidelines, they have experts for that. But even then I really doubt that developers would have followed them.

      --
      user@ubuntubox:~$ stfu This server is going down for shutdown NOW!
    4. Re:The appalling GUI inconsistency by Bazzargh · · Score: 1

      One of the nice things from this article was actually this nice screenshot of a selection of current versions of MS software running on Vista. The thing to notice is that not a single one of those applications has a GUI the same as any of the others.

      I actually thought that was a pretty weak point he was making there, since he was implying thatOS X is consistent. See eg these screenshots from the Mac (this selection is a bit dated - 2006 - but the situation isn't much different on Leopard). I'm a Mac user btw, and I don't find these differences all that offputting.

    5. Re:The appalling GUI inconsistency by icepick72 · · Score: 1
      The thing to notice is that not a single one of those applications has a GUI the same as any of the others. There are different toolkits, completely different look and feel, some have menus, some don't;


      Do you mean when a developer uses Gnome or KDE they don't have the choice of leaving out the menu or to make the GUI appear different compared to somebody else's application? If they can, then you can get a screenshot on any platform of a "horrible horrible mess" if you want to.

    6. Re:The appalling GUI inconsistency by Schnapple · · Score: 1

      You have to be joking right? Yes, some programs have different UI's than others because some programs have different needs than others. So you compare a program from Office 2003, Visio (the version in Office 2007 is essentially the same one as the one in 2003) with a program from Office 2007. Are you saying that programs can't innovate? You're comparing programs that do useful things versus... Notepad. Seriously? You're comparing a web browser with a media player with a messaging client with development tools and you're shocked at how they're not all identical? Or are you noting how they don't all have that same "frame" because from where I stand... they do.

    7. Re:The appalling GUI inconsistency by Megane · · Score: 1

      TFA didn't even point out that two of the windows (Word and Explorer) have their window titles centered, when all the other apps have them on the left, presumably the default. Word even made the window title bar icon enormous for (presumably) no other reason than branding, because the Office icon would have been just as unrecognizable as all the rest at that size. And then it put some toolbar icons in the window title bar, which is totally alien from anything else.

      Meanwhile, Explorer doesn't even have an icon on the left of its window's title bar, so in that screen shot it looks like it's an MDI sub-window of the IE window above it.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    8. Re:The appalling GUI inconsistency by zsau · · Score: 1

      Okay, lets ignore the differences between the innovations. Once we've done that, we realise it's still stupid — on the one hand, Explorer, Windows Media Player and Windows Live Messenger share the same innovation, but look different (the two Explorers are almost the same, so we'lll give them a pass); and on the other, Visio, Outlook the two versions of Visual Studio, Microsoft Expression Blend and Notepad all have the same basic idea --- a menu bar, optionally followed by a toolbar --- yet they are nothing alike in implementation! There's absolutely no reason for this. (And from an aesthetics position, none seem to blend in nicely with the Vista window decorations, unlike Explorer).

      There's nothing wrong with innovation, but do it right at least...

      --
      Look out!
    9. Re:The appalling GUI inconsistency by Schnapple · · Score: 1

      But you're still comparing programs written in different timetables (2003 vs. 2007) and programs aimed at different people (developers vs. average users). Are you saying that once a particular "look" is established that no one should ever change it? Are you saying that the average user should have to put up with menus and button bars in programs that don't need it?

      I'll concede that Expression having a different UI is sort of dumb but the others I think are fine.

    10. Re:The appalling GUI inconsistency by zsau · · Score: 1

      No. What I'm saying is that Microsoft should keep their toolkits binary compatible when they're roughly the same. Every one of those programs with menus could have menus that look the same --- Gtk+ 2 programs written and compiled in 2003 look the same as Gtk+ 2 programs written in 2008 even though there's been substantial revisions and changes to the appearance.

      Word and Explorer and the Media Player and Messenger should all look basically the same, taking into account the different UI elements. The color schemes of the menu bars for the two versions of Visual Studio and for Visio and for Outlook should all be identical. When in 2006 Microsoft says "we were idiots for coming up with that design, lets fix it", then their fixes should apply to versions released before, to the extent they can. If something was wrong about it for Outlook, why not fix it for everything all at once?

      But Microsoft doesn't work like that. The last version of Word that had the appearance of the surrounding GUI was Word 95. There's no reason for this, but it does look damned ugly.

      --
      Look out!
  57. for the other side of the coin by martin-boundary · · Score: 1

    Check out The Old New Thing. Raymond Chen's posts are a delight to read, if you've ever had to do something with win32 in the past. He's like the Überjanitor of Hell :)

  58. not sure they have a choice by abes · · Score: 4, Insightful

    I'm not big on the M$ love. I'm a mac/linux proponent. However, I think that M$'s current problem with a really horrible API (I'm saying this having programmed for win32, GTK, QT, WX, and Cocoa) isn't an easy to solve problem.

    They could pull an Apple, and completely redo their windowing system. Apple benefited from using NeXT's system, which was well thought out, uses a language well suited to windowing systems (objective-c), and could be altered based on previous user experience.

    However, in doing so they would lose all compatibility they current have. Keeping compatibility, even if it creates a developer's nightmare, is in the end what keeps them on top of the market.

    That is not to say it's not impossible for them to do so. Apple did provide a virtual machine to run old OS9 software with the first releases of OS X. However, since both Mac and Linux machines also have the same options (currently running Parallels on my machine), it would still take the clear advantage M$ has in the market away.

    It's not clear whether their bad API spells the eventual doom of the company. The more pragmatic developers will still value making products that more people can use over writing nice looking code. Additionally, wrapper libraries, such as WxWidgets or Qt can help hide much of the ugliness.

    1. Re:not sure they have a choice by CodeBuster · · Score: 1

      The whole comparison of .NET to the Win32 API by the author is almost completely bunk. He tried to lump something which he does not understand (.NET) into the same boat as Win16/32 arguments that were maybe relevant 10 years ago when people were still doing a lot of new development with Win32 and not .NET. The .NET Framework is at least as good as Java (and better than Java IMHO) and there is no way that cocoa, carbon, or objective C is more innovative or advanced than Java or .NET. The author has head stuck way up his ass if he thinks that the .NET API stinks. The whole article is very misleading and seriously strains credibility.

    2. Re:not sure they have a choice by abes · · Score: 1

      I've never used .net, but I'm surprised that you would lump Cocoa, Carbon, and Java all together.

      Carbon is a collection of libraries written in C for creating apps on the mac. It's often used when there is either no equivalent Objective-C library present, or Objective-C is not wanted.

      While I'm currently using Java at work, I'm not a huge fan of it. I've never considered it particularly innovative, and would take C++ over it for most projects. If I need a dynamic language or rapid prototyping, then Python is a nice language. Because it's relatively easy to mix C++ with Python (e.g. boost::python), it makes optimizing code easy.

      The places where Java is really supposed to shine (i.e. cross-platformability) it does only mediocrely. Both AWT and Swing are awful to use, and don't provide for good interfaces.

      Even though it's an older language, I would say Objective-C is innovative and lends itself very well to windowing systems (especially for features like double-dispatching). Like Java and .net it also has introspection (technically so does C++, but you kinda have to roll your own).

      Apple has also added some nice features to Objective-C, like properties which you can synthesize. This has the added bonus that the setters and getters are automatically generated for you. The only other language that I know (I'm sure there are others) that allows you anything near to that is Python (overload the __get__ and __set__ methods). Oh, and it also has garbage collection if you're into that sort of thing.

      One feature that I really like about Cocoa is the Interface builder. No code is generated (unlike VisualC++ .. or at least the last time I used it), but rather serialized objects. So you can write you object code, insert an instance of that object into IB, and then overload awakeFromNIB for when it gets deserialized. Which frees you from all the '// Do not change' comments throughout your code.

    3. Re:not sure they have a choice by CodeBuster · · Score: 1

      I've never used .net, but I'm surprised that you would lump Cocoa, Carbon, and Java all together.

      I am not lumping them together (as in equivalence) but rather pointing out that if you are looking to create or use a fully generic and general purpose programming environment then you are going to create or end up using something that looks very much like .NET or Java because those languages represent the natural and logical progression of a development environment that, while not specially suited to any particular task, is designed to do just about anything that a typical programmer might want to do.

      Carbon is a collection of libraries written in C for creating apps on the mac. It's often used when there is either no equivalent Objective-C library present, or Objective-C is not wanted.

      There have always been C libraries of various degrees of completeness for just about every platform which has ever supported C, but Java and subsequently .NET have really taken the concept of integrated full feature generic class library to new heights of completeness in terms of what is in the 'standard' library. I know of no other programming environments which support such large and varied default class libraries as .NET and Java.

      While I'm currently using Java at work, I'm not a huge fan of it. I've never considered it particularly innovative, and would take C++ over it for most projects.

      I don't know what you do at work, but I would not consider using C++ for anything except drivers and other lightweight embedded systems at this point and even there C would probably be a better choice. As far as general purpose application development and software engineering are concerned .NET and Java represent the future direction and really the most natural evolution, dovetailing perfectly with virtualization and the elimination of hardware specifics in favor of pure abstractions. It is virtualization and abstraction which allows the construction of such large, powerful, and yes complex software in ways that are manageable, scalable, and expandable. It is ironic really that with .NET Microsoft has probably hastened the demise of their monopoly platform by making the platform irrelevant.

      The places where Java is really supposed to shine (i.e. cross-platformability) it does only mediocrely. Both AWT and Swing are awful to use, and don't provide for good interfaces.

      I prefer .NET of course, but I mention Java because .NET owes a debt to Java for blazing the trail and Java is continuing to develop along a parallel track so it bears mentioning along with .NET.

      Even though it's an older language, I would say Objective-C is innovative and lends itself very well to windowing systems (especially for features like double-dispatching). Like Java and .net it also has introspection (technically so does C++, but you kinda have to roll your own).

      There is more to the world than windowing systems. Assuming that it is possible (and I believe that it is) wouldn't you rather have a language and platform that is powerful enough to do anything that you might ever want to instead of a platform which may be good for certain specialized tasks but falls short or doesn't follow as well when you take it into completely new areas and directions? The whole point is that you shouldn't have to roll your own, it has been done already ten thousand times and done well by other developers. Use their work and don't re-invent the wheel. The vast class libraries of .NET and Java are well grounded in this principle.

      Apple has also added some nice features to Objective-C, like properties which you can synthesize. This has the added bonus that the setters and getters are automatically generated for you. The only other language that I know (I

    4. Re:not sure they have a choice by pkphilip · · Score: 1

      I agree. The .NET API is a huge improvement over the Win32 API and the new versions of .NET are much better than even Java. Sun is now playing catch up with .NET and trying to implement features in Java similar to what is available in .NET - example: linq.

      With the new expression suite and silverlight, .NET API is far ahead of the competition and anything available on Mac including Cocoa.

      The author's points are indicative of his lack of understanding of .NET more than anything else.

    5. Re:not sure they have a choice by SuperKendall · · Score: 1

      Just because you see virgin forest all around you and hear no signs of traffic behind, does not necessarily mean you are "far ahead".

      Sometimes it just means you are lost and do not know it yet.

      There are a lot of tombstones built for things that were "far ahead".

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    6. Re:not sure they have a choice by Anonymous Coward · · Score: 0

      Virtual machines are the best way to provide backwards compatability. Just cut down and interface the previous version(s) of the operating system/api and put them in a VM. Look what Dosbox has done for DOS applications.

    7. Re:not sure they have a choice by dkf · · Score: 1

      That is not to say it's not impossible for them to do so. Apple did provide a virtual machine to run old OS9 software with the first releases of OS X. They still do with Leopard, and in my experience it works really well. (There are some recoverable crashes, but I can't tell if that's in the VM or the applications themselves. Not really something I want to care about.)
      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    8. Re:not sure they have a choice by Anonymous Coward · · Score: 0

      They did pull an Apple. It's called Windows Presentation Foundation, present in Vista and later or in a separate .NET 3.0 or later download.

    9. Re:not sure they have a choice by nuzak · · Score: 1

      > They could pull an Apple, and completely redo their windowing system.

      They DID. It's called WPF. Every last thing you can look at or click on is redone in WPF.

      --
      Done with slashdot, done with nerds, getting a life.
    10. Re:not sure they have a choice by Anonymous Coward · · Score: 0

      Based on the simple Open-Closed principle: at some point, a system which cannot be fundamentally changed must be rewritten.

      Turd polishing can only happen for so long.

    11. Re:not sure they have a choice by Anonymous Coward · · Score: 0

      That's what some have said they should do even for XP. Put the current pile into a VM so existing apps work, and write up some clean and modern APIs for new code. They could even still use the NT kernel (2003 server/2008 server/whatever kernel) so there's driver compatibility, box the Win32 stuff in a VM, and implement a clean new API. The danger is if this new API were TOO clean, wine could duplicate it quickly and then be able to accurately run "new" apps. That's what stops wine now.. it implements nearly 100% of all Windows APIs, but fails on quite a few apps because they call APIs non-standardly, use memory they free'd, etc. (And some games due to drm... they try to load a kernel module.. which really doesn't work when there's no actual NT kernel to load into 8-)

    12. Re:not sure they have a choice by pkphilip · · Score: 1
      Great! I see that you are being perfectly logical here . May I use your wonderful logic and extend that to Macs - "Aqua is far ahead of the Windows Vista UI.." but

      Just because you see virgin forest all around you and hear no signs of traffic behind, does not necessarily mean you are "far ahead".

      Sometimes it just means you are lost and do not know it yet.

      There are a lot of tombstones built for things that were "far ahead".
    13. Re:not sure they have a choice by SuperKendall · · Score: 1

      I'm sitting where I wanted to be though, not looking at trees everywhere. That's how I know I'm not lost.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  59. Quoted out of context by Santana · · Score: 1

    You purposefully quoted the author out of context, deleting precisely the text surrounding it that makes sense of it. Before the sentences you quoted the article says:

    And it's not just third parties who suffer. It causes trouble for Microsoft, too.

    Which means that we're about to read about how the terrible API design and general bad experience has bitten Microsoft itself. Then comes the sentences you quoted:

    And that software is usually buggy. It passes bad parameters to API calls, uses memory that it has released, assumes that files live in particular hard-coded locations, all sorts of things that it shouldn't do.

    And after that:

    If the OS changes underneath--to prohibit the reuse of freed memory, to more aggressively validate parameters, to stick more closely to the documentation without making extra assumptions or causing special side-effects--then these programs break.

    Since you obviously missed the point, I'm explaining it to you:

    Making bad decisions has bitten Microsoft too because if for example they were setting the API design straight, a lot of programs written using bad practices allowed by the badly designed API and that people depend on for every day work would break . Therefore they can't fix their mistakes. They are trapped in the same hole they dug.

    That reminds me the OpenBSD experience some years ago, when they enforced heap protection mechanisms and many bad coded programs crashed. But OpenBSD can afford it, and actually benefited the rest of the open source users.

    --
    The best way to predict the future is to invent it
  60. What part of "Undocumented" is hard to understand? by WED+Fan · · Score: 4, Insightful

    The problem is that many major legacy applications depend on undocumented behavior because they make sloppy use of the Windows API (e.g. by assuming that a particular function will not segfault when passed a bad argument). For those to keep working, newer revisions of the API implementation must have the same undocumented behavior, which causes a maintenance nightmare.

    So, you problem is that programmers make use of undocumented API calls. While "undocumented" does not always equal "unsupported", using them is just plain stupid. Whether it is Windows, Linux, MS-DOS, DR-DOS, OSux using the system in an undocumented/unsupported way is well, U N S U P P O R T E D. Don't blame the OS or the those that coded it, blame those that wrote against the API in an unsupported way.

    RTFA turns out to be a effort in slogging through another of the author's attempts to explain why anyone on Windows is just benighted. He blames HIS short comings on the OS.

    --
    Politics is the art of looking for trouble, finding it everywhere, diagnosing it incorrectly and applying the wrong fix.
  61. Re:What part of "Undocumented" is hard to understa by gfxguy · · Score: 4, Interesting

    Because programmers are, you know, just leaving the Windows platform in droves! Because it's annoying to develop on!

    (sarcasm off)

    Windows has always been annoying to develop on; when you've got the lions share of the market, and the customers want "windows," that where most programmers are, annoying or not.

    So maybe they "dropped the ball," I say they never had the ball to drop, and they don't give a crap because if you want to make money, you work on Windows.

    Now... how is this different than last year, or the year before, or ten years ago?

    --
    Stupid sexy Flanders.
  62. Re:Same techniques 15 years ago? Not just Windows. by IdeaMan · · Score: 1

    And I can build a road with just 1 shovel!
    Who needs a steenking bulldozer?

    That you can say that and be proud of it should cause your geek card to spontaneously catch on fire. I was an embedded systems engineer, and I tended to use a different development environment for each project; so I know nasty bug-ridden incomplete environments. That you can stick with an ugly environment like that is mind-boggling.

    --
    They ARE out to get you simply because They are in it for themselves and they don't care about you.
  63. Backwards compatability a benefit, not a problem by Eravnrekaree · · Score: 1

    This idea that backwards compatability in Windows or any other OS has hurt its performance is likely ludicrous. Backwards compatability need not affect performance at all, especially of code using new APIs. Usually if there is an older API retained for backwards compatability, the code is often not entered unless some program actually uses that older API. Many OSs implement a backwards compatability with no impact on performance of newer APIs. It can be engineered so it does not effect performance and in fact it is the most logical way to do it.

    Backwards compatability also can be important for useability, given that many users have older applications they need to run. One reason Windows has remained dominate is that users dont have to worry about whether a program will run, if it is for an older version of Windows. The inertia of the applications base of older versions is leveraged for newer versions.

    Backwards compatability is overall a benefit, rather than a problem and improves useability of an OS.

    I would almost think that this author is trying to sabatoge microsoft by eliminating its backwards compatability, something that would damage the OS and further alienate users even further and reduce Microsofts market share.

  64. Re:As a dev who makes his living writing for .Net. by truthsearch · · Score: 1

    Your theories might be nice for hobbyists, but serious big businesses buy professional commercial tools. Back when I was a developer on Windows the MSDN license my company had was over $5,000 per seat per year. That sounds like a bargain to you when you only need 1 or 2 things out of it per year (besides the locally installable documentation, which should be free anyway)? Big business mostly buys Visual Studio.NET for its developers, which comes in various expensive flavors to get the even the most basic features. Then there's training for the constantly changing APIs, which easily costs businesses > $1000 per person per year.

    Expensive commercial options are often not the best choice. But big business typically assumes the best choice for Windows development is Microsoft tools, which logically should be the case.

  65. Half-baked rant by Anonymous Coward · · Score: 0

    The article is honestly so full of offensive stereotypes, meaningless generalizations, elitist self-centeredness, and unjustified conclusions that only a tried and true Windows hater could find anything in it to agree with at all. The CLR is reasonably sound, performance is reasonably good, C# is adequate... opinions that plenty of us high-level "conscientious" developers disagree with. Windows forms is heavily based on Win32? Wtf? Has he written any Windows forms applications? Oh... he means the underlying mechanics of the operating system shell continue to make themselves felt in the details of how threads are managed. The big thing that makes Windows a miserable platform is figuring out which thread to send an update to? Here's a clue, the point-oh-two percent of developers who ever have to give a flying fark about that will figure out how to make it work, just like they do on any platform. And he's bothered by OpenFile, even though he knows enough to use CreateFile? Here's another clue: when you have a hundred-plus million desktops using your stuff every day backward compatibility matters, and MS does a better job of it than anyone. Cliff notes: half-baked irrelevant rant.

  66. Take a look at Windows' past to understand, people by Opportunist · · Score: 3, Informative

    "When you use undocumented API calls you're in the wrong".

    So far, so right. In theory.

    In practice, though, let's look back into the world of Windows at its beginning. We're in the middle of the 90s, Win95 is fresh out the door and you're supposed to write for it... erh ... well, if you can. There are a few API calls documented which will allow you to write a few cute Windows programs but they will invariably be unable to compete with programs developed by MS. Why? Because you have no access to API calls. API functions that make your programs faster, or easier to use, or simply allow you to do something at all. Especially graphics and network code was notorious for being impossible to implement sensibly without resorting to functions that were available only when you dug through disassembled DLLs and guessed what was expected from you.

    So programmers faced the choice: Either write programs that cannot compete with programs written by MS (or companies that somehow got a hold of that information), or use calls where a few parameters are described as "set to NULL" or "unknown function".

    MS has a history of releasing information about formats or calling parameters at trickling speed, at best. Anyone who ever wanted to get a hold on, say, the Office container format can vouch for that. It's not really a lot better for API documentation. Usually, you get it for a lot of money, if you are deemed "worthy" first of all.

    Programmers don't let a company do that to them, though. They start figuring things out, reverse libraries and even existing program code to get the information they need. Of course, this results in the occasional mistake.

    Jump into the present. The companies that created software back then don't exist anymore, blown up in the dot.com bubble. Their software, though, still exists. And companies now rely on this software. So MS has to maintain those "buggy" APIs, else companies running buggy software will refuse to upgrade.

    Who is to blame? Basically, whoever decided that it's a smart idea to withhold the API documentation.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  67. Author has narrow vision by overbaud · · Score: 2, Insightful
    "If a company has some business-critical custom application written in Visual Basic 6, that company isn't going to roll out Linux to its desktops; it's trapped on Windows."

    Actually they could host it within citrix or similiar and rollout to the desktops. They are not locked into windows on the desktop.

    "They're too demanding anyway. They're the ones who care about their tools and get upset when an API is badly designed. They're the ones who notice the inconsistencies and omissions and gripe about them."

    Or maybe they accept that there is no such thing as the perfect piece of software. Maybe they understand that the software in question a lot of the time is there to support business and sometimes business requirements out weigh technical 'perfection'. I accept it as a fact of life... like taxes blogging about it won't change a thing.

    "For example, there's a function called OpenFile. OpenFile was a Win16 function. It opens files, obviously enough. In Win32 it was deprecated--kept in, to allow 16-bit apps to be ported to Win32 more easily, but deprecated all the same."

    And as a good developer you won't use it. Maybe a bad developer will but a bad developer will write bad code regardless of how many things you put in place to stop them. A developer should be able to use his discretion as to using this or not, taking into account his particular circumstances. Maybe it should be used for a quick dirty port while version '2.0' is under development. 'Get it in, get it running, minimise the business impact and we'll address these issues next major release' is something that commonly gets thrown around in enterprise by management... you know they guys that are paying for your services.

    But if you use the same API in 64-bit Windows, it still gives you the pair of numbers, rather than just a nice simple 64-bit number. While this made some kind of sense on 32-bit Windows, it makes no sense at all on 64-bit Windows, since 64-bit Windows can, by definition, use 64-bit numbers.

    This and other points in the article are such small non issues and are just gripes. Would it be nice to get 1x64 number? Yes. Does it make no sense? No. Looking deeper at things like reducing time to port 32bit to 64bit and associated costs in developer time/money it makes sense. I can happily live with it.

    In 32-bit Windows, it was called system32. In 64-bit Windows it's called, er, system32 again. Because although there's an API call that programs can make to find out the name of the folder, there are enough programs that don't bother using it and just blindly assume that it's called system32.

    Again... you can't stop bad programmers (a lot being 3rd parties) from making dumb mistakes... but you can try and reduce the impact. You can bet there are those purists just like the article author inside MS that hate this as well. But in the interest of having this work a decision was made, and i suspect not for MS's benefit. Again just live with it.

    For example, dialog boxes in Windows have traditionally been poorly designed, because their buttons are given generic labels like "Yes" and "No," or "OK" and "Cancel,"

    Microsoft have been going on about this for ages since 2001 actually. http://msdn.microsoft.com/en-us/library/ms997506.aspx

    If you take the ranting and raving out of the article it has very little of value. If Mac or *nix had greater market share then we would see more bad software and API's in those environments as well. As it is some of the open source code I have seen is terrible. There is no way to prevent these issues economically, good programmers just accept them, code around them and move forward.

    --
    Users... the only thing keeping 1st level support from being the bottom feeders.
  68. Re:Same techniques 15 years ago? Not just Windows. by RiotingPacifist · · Score: 1

    It's quite nice if you want to use the same techniques you learned 15 years ago and not bother to change how you do, well, anything

    Apparently the author never heard of emacs and gcc on Linux... fixed it for you

    --
    IranAir Flight 655 never forget!
  69. Forced obsolecense by alexmin · · Score: 1

    I programmed more or less exclusively for Windows platform in C/C++/JS etc. for more than 10 years, starting from early Win 3.1 days (and made a killing doing that.) Ditched it like 5 years ago for cross-platform toolkits and cannot be happier since then.
    One of the most bothersome thing about Win platform is that every 3-5 years MSFT announced next best-thing-since-sliced-bred API and let the previous 'best' incarnation rot. Which forces everyone caught in this to spend a lot of time learning new ways to do old tricks. Take for example DDE-OLE-COM-ActiveX-.NET thingy.
    I personally just found that this is insane drag on my productivity, since time spent on learning 'new' API is time not spent on solving domain problems, which is really bring food on the table.
    Recall this when MSFT will start smearing .NET.

  70. Re:use the same techniques you learned 15 years ag by 644bd346996 · · Score: 2, Insightful

    15 years ago, object oriented programming was still catching on, and the Pentium was brand-new. Computers were slow, people had about as much RAM as modern CPUs have cache. The Windows operating systems of the time were just starting to support 32-bit features. Pre-emptive multitasking was still 2 years away.

    When it comes to using the extra power of modern hardware, it is easy to say "I want it to make everything 10 times faster". On the other hand, you could use that power to run a python interpreter, and make things 10 times easier for the programmer. Both are perfectly good uses of the more advanced hardware. But the latter is where you'll see the really innovative apps showing up. That's what Microsoft is missing out on when their platform still doesn't let you ignore the nitty-gritty details that you couldn't afford to ignore 15 years ago.

  71. Re:Same techniques 15 years ago? Not just Windows. by pherthyl · · Score: 1

    Except that combination is not a shovel. I wouldn't use GCC/Vim, instead preferring an IDE like qdevelop, but Qt is the most productive way to do anything truly cross platform these days. Java lacks integration and requires a VM, .NET is not very cross platform and requires a VM as well, and scripting languages lack integration, performance, and features for large scale development.

    Qt with C++ (or Java/Python/Ruby) is really the only choice left. For that I gladly pay the license fee for my proprietary development. I can't be bothered to use tools that I have to fight with.

  72. Re:What part of "Undocumented" is hard to understa by Kenshin · · Score: 1

    The point he was making is that Microsoft is leaving the crap in, generation after generation, in order to placate the lousy programmers. Microsoft is, in effect, supporting those so-called "unsupported features", and indirectly encouraging their use.

    --

    Does it make you happy you're so strange?

  73. BIOS was only a small part of the picture by EmbeddedJanitor · · Score: 4, Interesting
    In DOS days, there were often 3 ways of doing things. For example, take writing to the screen:
    You could call the BIOS interrupt function.
    You could call the MSDOS Interrupt function.
    You could detect the hardware and write directly to the hardware address.

    Both the BIOS and DOS mechanisms were slow and broken and did not follow the conventions of any programming language. For example terminating strings with the $ symbol, FFS.

    All commercial programs (and most hobbiest ones) wrote directly to hardware for speed.

    DOS was not really an OS at all. It did very rudimentary memory management. About the only thing you'd really use DOS for was disk access and application launching, otherwise DOS applications were basically "bare metal" applications that managed just about everything (screen, keyboard, serial ports, mouse,...) internally.

    --
    Engineering is the art of compromise.
    1. Re:BIOS was only a small part of the picture by X3J11 · · Score: 1

      Both the BIOS and DOS mechanisms were slow and broken and did not follow the conventions of any programming language. For example terminating strings with the $ symbol, FFS.

      This bit of trivia cannot really be attributed to the incompetence of Microsoft, and your assertion is not quite correct.

      Originally, MS-DOS was modeled after CP/M, and the original version (of DOS) tried to make it as easy as possible to port CP/M software to DOS. $ was used as the string terminator in CP/M, and so DOS inherited it.

      The other thing I'd like to point out is that when DOS showed up, there really were no programming languages, per se, for it. Everything was written in assembly language. So while it might have been nice to use NULL for the string terminator to ensure future compatibility with the eventual programming tools that would show up, at the time it really didn't matter. It was just as easy to db '$' as 0.

      Wikipedia's entry on the $ sign.

    2. Re:BIOS was only a small part of the picture by david_thornley · · Score: 1

      Thing is, that particular misfeature of CP/M was already widely known as a mistake. The first CP/M programming book I got said to avoid using the string write in general, since if I ever wrote something with a "$" in it it wouldn't work. The standard practice, as far as I can tell, was to individually write characters, because that always worked.

      Changing the string write to use some non-printing character would not have broken all that many programs, and they could have been fixed. Remember that converting from 8080 (the previous dominant processor) to 8086 or 8088 was not done by binary emulation, but rather by running the assembler source through the new assembler. (Even if it had been binary emulation, it could have been patched. Machine code was, in some respects, fairly simple back then.)

      Therefore, using '$' as the end of string was due to the incompetence of Microsoft in perpetuating a known problem.

      There also were quite a few languages available for DOS. Pretty much anything that would run on CP/M, and was written in assembler, could be instantly ported to the IBM PC. It wasn't efficient, and at first programs ran slower on the IBM PC than on older systems. I don't remember everything that was ported, but BASIC was ubiquitous, and there were compilers for Fortran, some version of Algol, and several other languages.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    3. Re:BIOS was only a small part of the picture by Megane · · Score: 1

      For example terminating strings with the $ symbol, FFS.

      That was quite normal... if you were used to programming for CP/M. The DOS API was suspiciously similar to the CP/M API, because it was actually a thinly-veiled CP/M clone. If MSDOS 1.0 wasn't binary compatible with CP/M binaries, it was pretty close.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    4. Re:BIOS was only a small part of the picture by Megane · · Score: 1

      ...and that's CP/M-86 binaries, for those of you who were about to hit the reply button to whine about my missing that detail.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  74. Re:As a dev who makes his living writing for .Net. by Ritontor · · Score: 1

    You just hit the nail on the head. The one major thing that shits me about MS development is the artificial roadblocks. If I need to chuck another dev box together for a new app we're building, the absolute last thing I want to worry about is making sure all the various licensing options for all the various bits of software are in order. I just want to install and go. What's so wrong with that? Can't I work out the money stuff later?

    --
    Perhaps the answer to the problem of teenagers dropping bricks from motorway and railway bridges is to sue Tetris.
  75. Re:What part of "Undocumented" is hard to understa by rs79 · · Score: 5, Funny

    " They don't give a crap because if you want to make money, you work on Windows"

    I learned to live without money instead. It was less painfull.

    --
    Need Mercedes parts ?
  76. erhmn? by Vexorian · · Score: 1

    You are not really saying OS/X is a better platform than windows, are you?

    --

    Copyright infringement is "piracy" in the same way DRM is "consumer rape"
  77. Re:As a dev who makes his living writing for .Net. by GaryOlson · · Score: 3, Insightful

    Try VMware Worstation (or ESX if you have money to burn). Install OS in VM, register with MSDN. Snapshot; backup VM to media. Develop, restore snapshot.
    And, you saved yourself the hassle of reinstalling the OS again.
    And, you are assured of having the exact same development base OS every time.
    --
    Every mans' island needs an ocean; choose your ocean carefully.
  78. Won't alter development platform choices by heretic108 · · Score: 1

    This stuff with Microsoft won't alter my development platform choices:

    "Sir, what platforms do you want your program to run on? There are three popular choices available: (1) Gnome, (2) KDE, (3) curses"

    --
    -- In the beginning was the WORD, and the WORD was UNSIGNED, and the main(){} was without form and void...
  79. Re:As a dev who makes his living writing for .Net. by aaron.axvig · · Score: 0, Flamebait

    Even on a brand new Dell dual core laptop with 2 gigs of ram, it was sluggish and still could not use the full aero interface.

    There is no way I believe this. I have set up a 1.5GB Gateway dual-core AMD-Mobile that was on sale for $700 on Thanksgiving 2006 and it runs Aero with no problems AT ALL.

    I don't need aero to develop code. The features I was most interested in all got cut from Vista... most notably the filesystem upgrades.

    So you don't need Aero but whine about how slow your laptop was with it? Weird. And I wonder if you can tell me off the top of your head more than three things that you were looking forward to with WinFS that can't be done with NTFS. Fact is NTFS is a damn good file system that has never given me problems or lacked any features that I need, and I demand a lot more than your average user out there. You may be able to list off a bunch of features that some filesystem on Linux has that NTFS doesn't, but when is the last time you were working with NTFS and REALLY needed to do something that it couldn't?

    Regarding the insane cost of SQL Server...what is the problem with paying for great software that you are going to use to make money?

  80. You have got to be kidding! by Anonymous Coward · · Score: 0

    No concept of what .NET really is, misleading users.

    No mention or acknowledgement of WPF/WCF or the new APIs that are and 'set' to replace Win32/Win64 OK, how may Microsoft applications use WPF/WCF ?

    Completely misleads users about API concepts and features of OS X compared to Windows, for example XAML/XPS concepts compared to Display Postscript is a massive difference Mac OS X's low level graphics APIs are called Quartz and OpenGL. Quartz is effectively Display PDF. Display Postscript sadly died in Apple's hands.

    in display technologies that are part of the new Windows API sets, that Carbon or Cocoa cannot provide to developers. (Go to Channel 10 and watch videos on why XAML/XPS was created and how it trumps every aspect of other display/print technologies. - Let alone how it is an integrated aspect of the video API system in Vista, making programming freaky simple for advanced features and new UI platforms like 3D.) Take a look at Core Image, Core Animation, and Quartz Composer, and even venerable Quicktime to see where MS got the ideas they imitated badly. Then look into Interface Builder nib files which have provided more than XAML capabilities (on the desk top) since October 1988. It took MS 20 years to copy that one.

    The author then jumps into UI consistency with dialog wording, and doesn't mention OS Xs lack of keyboard support, consistency of delete/backspace or 100 other things more important than dialog wording which is also NOT PART of Win32 inherently.

    Author doesn't realize Microsoft and IBM wrote most of the GUI and UI guidelines that OS X even uses today. Did you notice that Windows 95 GUI was a rip-off of the NeXTstep GUI but copied poorly. You have your history wrong.

    I'll ignore the rest of the nonsense. Suffice it to say that OS X runs 32 bit and 64 bit applications side by side. How does that work in 4 bit Windows?
  81. Re:As a dev who makes his living writing for .Net. by flnca · · Score: 1

    Check out the free versions of Microsoft's development tools sometime, called Visual Studio Express editions. AFAIK, they can be used by enterprise developers for free as well, check out the license. I guess, it's because they're supposed to be "appetizers" for "the real things". But they work quite well, if you don't demand too much.

    The Windows SDK is also a free download, containing the full OS documentation, build environments and samples.

    IMNSHO, that's just a non-issue to claim that development for Windows would be expensive.

    Besides, there are other good, free development tools for Windows, like Watcom C/C++ (which is BTW the only compiler natively supporting DOS, Win 3.1, Win32, OS/2, and NLM development, with Linux support planned LTIC).

    Free IDEs for .NET development include Eclipse, and others.

  82. Re:As a dev who makes his living writing for .Net. by kmsigel · · Score: 1

    >In 2007, I can no longer justify $3500ish for MSDN.

    I couldn't agree more. I subscribed to the International level of MSDN (got all the foreign flavors of Windows for I18N/L10N testing) from about 1996 to about 2001. The last release OS I got through MSDN was Windows 2000. I haven't missed it since. I still have the July 2001 documentation installed on my computer, which is fine for my needs. I rarely use an API that hasn't existed since 95/NT3.51.

  83. .NET & C# by Anonymous Coward · · Score: 0

    I've been using Microsoft Technologies for 9 years now. When C# was first released, I was really impressed. The structure of the namespace was very intuitive and C# seemed pretty slick. Seemed is the key word here. Sure, you can develop very sophisticated large-scale applications utilizing the .NET framework, but combining with the various other technologies such as ASP.NET makes it very tedious indeed.

    If you are coming from a Perl background, you will die in horror as you see your resources being absolutely demolished not only by the OS but by the .NET Framework itself. The only solution? A lot of computing power costing a considerable amount of more money than a nice clean Open Source Software Solution (e.g. Perl).

    I have developed for various organizations, and I must say that yes, it is possible developing enterprise applications utilizing the .NET Framework. People do it all the time, but I agree with the author... it is not fun at all. Anyone who has dealt with an ASP.NET Stack Trace will attest to this horror story. Not to mention the various other weird bugs that plague the framework... leaving only the MS Team to get back to you in regards or bang your head against the wall trying to find a work-around.

    Not to mention the MSDN website feels like sifting through a dump looking for a precious gift accidentally thrown out, or going dumpster diving.

    Please note that I am not a Perl programmer and was anti-FOSS until I started programming for the .NET Framework.

  84. Re:Yeah, yeah by afidel · · Score: 1

    Most LDAP implementations are a poor, poor imitator of either AD or NDS. In fact most LDAP is only a step better than NIS+.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  85. Re:Same techniques 15 years ago? Not just Windows. by Anonymous Coward · · Score: 0

    Why use VI when stdin works just as well?

  86. Many languages, but really one... by SuperKendall · · Score: 1

    .Net supporting so many languages is really great.

    However, the thing is that in something like .Net, the power is really all in the libraries - which are really all written with .Net in mind, and are uncomfortable to use in other languages and not written to take advantage of language features.

    Now on top of that, it took a long time for .Net to actually support all the features of the languages it claimed to fully embrace. C++ used to be a subset (not sure if that's still true though I don't think it is). Functional languages like Ruby could be done, but were cumbersome and so along came DLR as an extension to make functional programming more practical with the .Net runtime backend. But taht's still a work in progress to - today on Windows you'd be better off using JRuby (Ruby running in a Java VM) than IronRuby!

    So in the end... .Net is really still much more for .Net than anything else, and the platform encourages users who might stray to other languages to come back to .Net.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Many languages, but really one... by Anonymous Coward · · Score: 2, Informative

      You have a lot of things wrong about .NET.

      C++ is not a subset. You can take any C++ project that exists, flip a compiler flag, and it will be compiled for .NET. There are no limitations. The runtime permits the seamless integration of IL and native code. What can be compiled to IL will be compiled to IL and everything else will be native. Microsoft proved this back in 2003 when they took the public source for the Quake II engine and recompiled it in Managed C++, then added a .NET plugin model and a C# radar.

      The CLR is fully capable of working with dynamic languages. There are quite a few that are already out and work fine. The DLR doesn't add anything new to the underlying runtime to better support dynamic languages. What the DLR strives to provide is a consistent pluggable API for hosting dynamic languages. Currently, if you wanted to host IronPython, IronRuby, Boo, PowerShell, JScript, etc., you would have to use a language specific host and bindings. The DLR will make it more predictable, like how CodeDom currently allows you to work with the various static languages by using the same object model.

      The power is in the libraries, but the libraries are consumable by any CLI-compatible language, or any native language hosting the runtime.

      The .NET runtime, from day one, was designed to be a very generic system. The one mistake was that generics was not in v1.0 and that led to a split between some portions of the runtime. That was the only time the underlying VM had to change. Every feature since has been nothing more than a library, or compiler candy. An example is that .NET 1.0 CIL had a tailcall opcode. Only functional languages that use recursion for looping would require such an opcode.

    2. Re:Many languages, but really one... by SuperKendall · · Score: 1

      You have a lot of things wrong about .NET.

      Name them, because you've not managed it so far.

      C++ is not a subset.

      Didn't say it WAS, said it USED TO BE. That was long ago, I agree... and I said I thought it was no longer that way.

      The CLR is fully capable of working with dynamic languages. There are quite a few that are already out and work fine. The DLR doesn't add anything new to the underlying runtime to better support dynamic languages. What the DLR strives to provide is a consistent pluggable API for hosting dynamic languages.

      I didn't say it wasn't. I said the DLR helps make it more practical. Witness the folding of the already advanced Ruby.net, because he realized that in the end it will turn out better to go the DLR path and thus bow to IronRuby.

      The power is in the libraries, but the libraries are consumable by any CLI-compatible language, or any native language hosting the runtime.

      And I didn't say they were not consumable. I said that while they could be accessed, the libraries are built with C# in mind and not philosophically tailored in API to other languages.

      That I think, is the biggest flaw of the whole concept that people will in fact use .Net for other languages (other than C+ which has a similar enough convention to it that people would adapt).

      If you spend all your time consuming libraries in a different language, eventually you are going to just say "screw it" and use C#. How many new Eiffel users are there really because of Eiffel#? Or did it simply allow the life to be sucked out of that community by helping everyone learn to be a good C# developer?

      The .NET runtime, from day one, was designed to be a very generic system.

      Yes, I know, it couldn't help being so having been such a close copy of Java.

      The one mistake was that generics was not in v1.0

      Yes sorry the Java folks couldn't finish that in time for you. At least you went on a different path, though I personally think both paths were correct for the entities that took them (Ironically Java needed to choose the path they did exactly because of the same backwards compatibility issues being discussed here).

      I too have been around from the beginning of both systems, I know all about what was added when.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:Many languages, but really one... by HuguesT · · Score: 1
      Your story about taking any C++ project that exists and seamlessly integrating it in dotNet is fishy.

      Apparently it's a little more involved than that

      Update: Quake 3 Arena .NET Port is Done!

      Posted by gregd1024 on January 22, 2008

      Yup - Iâ(TM)m now done porting Quake III Arena to managed C++ with Visual Studio 2008/v9.0 and .NET v3.5. My apologies to the guys on my private email list for getting this post out a week late. I ran into massive problems getting the Release build to work, even though there was no difference between its configuration and the Debug build (the latter of which has been working perfectly for two weeks now). Turned out to be one of those, âoeâ¦damn it! How could I have been so stupid?!â problems/solutions. The Release build doesnâ(TM)t look in the same directory for DLLâ(TM)s as the Debug build.

      Before I begin explaining the port, Iâ(TM)d like to clarify one thing. Someone emailed me last week regarding this port and judging from his/her message it led me to believe that some people donâ(TM)t understand the difference between a .NET port versus simply compiling a C++ application with MSVC++ 2008. Hereâ(TM)s the difference: taking the Quake III codebase and making the changes necessary so that it will compile with Visual Studio 2008 is not a .NET MC++ port. That is a C port to a different compiler. Yes, C not C++; the project files included in Id Softwareâ(TM)s codebase are all set to compile as native C. Furthermore, changing the settings to compile everything as C++, then fixing 3,000 compile errors, is also not, I repeat not, a .NET port. That is a native C++ port of Quake III to a different compiler. Lastly, taking the former C++ build I just mentioned, turning on the âoe/clrâ Visual Studio option, fixing 28,000 compile errors with 4,000 warnings, patching all managed to native calls such that the first run doesnâ(TM)t âoeblue-screenâ your machine, and finally doing everything else necessary to be able to view the EXE with its supporting DLLâ(TM)s under ILDASM (the .NET CLR disassembler), now THAT is a .NET port! ;-)

      Anyway, 99% percent of this port gets compiled into IL / CLR bytecode. The exception is a few small functions which contain inline x86 assembly. Obviously I canâ(TM)t do anything about those. Now letâ(TM)s get into the detailsâ¦

    4. Re:Many languages, but really one... by shutdown+-p+now · · Score: 1

      C++ is not a subset. You can take any C++ project that exists, flip a compiler flag, and it will be compiled for .NET. There are no limitations. The runtime permits the seamless integration of IL and native code. What can be compiled to IL will be compiled to IL and everything else will be native.
      IIRC, this is even better with C++/CLI - you can use /clr:pure option with almost arbitrary code and make it compile to (unverifiable) IL.
    5. Re:Many languages, but really one... by shutdown+-p+now · · Score: 1

      And I didn't say they were not consumable. I said that while they could be accessed, the libraries are built with C# in mind and not philosophically tailored in API to other languages.
      C# doesn't have any particular philosophy - it's really a rather typical modern general-purpose programming language, and libraries written "for it" are equally familiar to users of other broadly similar languages such as Python and Ruby.

      On the other hand, there's this whole business of "take an existing language and make it closer aligned to .NET principles". So far I'd say that F# is by far the best example, and it seems to be doing well (apparently slated for an inclusion into a future version of Visual Studio now).

    6. Re:Many languages, but really one... by SuperKendall · · Score: 1

      C# doesn't have any particular philosophy - it's really a rather typical modern general-purpose programming language, and libraries written "for it" are equally familiar to users of other broadly similar languages such as Python and Ruby.

      Sorry, but I totally disagree - C# has the same basic philosophical underpinnings as Java. I'd be damn annoyed calling into either C# or Java libraries from Lisp, for example.

      On the other hand, there's this whole business of "take an existing language and make it closer aligned to .NET principles". So far I'd say that F# is by far the best example

      Yes, embrace and extend, language edition! Just exactly what I was complaining about, sucking the life out of other languages and turning the hapless victims into C# developers.

      Let languages be languages, I say. I greatly prefer things like the Glassfish concept that lets ruby or PHP developers use a more modern container but keep using the language they love as it was intended to be used.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    7. Re:Many languages, but really one... by shutdown+-p+now · · Score: 1

      Let languages be languages, I say. I greatly prefer things like the Glassfish concept that lets ruby or PHP developers use a more modern container but keep using the language they love as it was intended to be used.
      And what, exactly, prevents you from using IronRuby or Phalanger exactly as it is "intended to be used" (by whom, I wonder...)? Of course, having some language extensions (as long as they are truly extensions - i.e. optional) to interoperate with all the existing .NET libraries doesn't hurt - I think you'll agree that, pragmatically, even in Lisp, it's better to be able to reuse existing code written in other languages, even if the calls will look ugly and unlispy.

      Just exactly what I was complaining about, sucking the life out of other languages and turning the hapless victims into C# developers.
      Actually, with F# and similar, it's usually the other way around - you take C# developers, give them the entire familiar class library (which is usually a bigger deal), and then get to explain them all the wonders of full type inference and pattern matching...
    8. Re:Many languages, but really one... by SuperKendall · · Score: 1

      And what, exactly, prevents you from using IronRuby or Phalanger exactly as it is "intended to be used" (by whom, I wonder...)?

      Nothing, the way that is going seems like a much better use of the system since it's pure Ruby or Haskel or whatever. I have no complaints with the DLR, just that it took a while to get that out and currently Java is ahead in that regard (being able to run Rails which is what most people really want to do anyway).

      Of course, having some language extensions (as long as they are truly extensions - i.e. optional) to interoperate with all the existing .NET libraries doesn't hurt - I think you'll agree that, pragmatically, even in Lisp, it's better to be able to reuse existing code written in other languages, even if the calls will look ugly and unlispy

      I would say without reservation that was a terrible idea, especially since you would be intermingling these things rather often. A solution built in a particular language is easier to maintain, and much shorter, if it's built in a way that the language makes easy. The .Net frameworks are too extensive to realistically apply proper wrappers per language.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  87. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    Sorry, it wasn't a troll actually. I distracted myself on a rant.

    I do write Asp.Net and Windows Forms applications against SQL. My company consults for many of the states and the federal government. We are a Windows shop, but many of the Windows devs ARE frustrated with Windows and the pain in makes development and maintenance in general.

    I have not done any Java or C in 10 years... it's been all Microsoft platform development. But they ARE making it a royal pain to do things. It starts at the Windows platform and it pollutes the development experience. Because of that combined with what I perceive to be a solid and fully functional environment in linux (I've tried it various times over the years... used to love BeOS) I am finally considering changing platforms entirely.

    Sorry if they get off track, but to me they are intertwined due to the nature of my job, which is both software development and systems architecture and deployment.

  88. File doesn't exist? by arthurh3535 · · Score: 1

    Man, have I ever run into this a few times. I do tech support for a nameless company and recently I've actually had customers directed to me a few times to 'reinstall OS files' that are keeping things from working.

    Lo and behold after a few minutes of research, I find out that they are looking for WinXP files... on Windows Vista and 'that's why you need to 'fix' the files' even though, yes, your USB port were actually there and functional. Sorry, go back to the Printer manufacturer tech that tried to pawn you off on me.

    So, yeah, it really sounds like people aren't actually writing for Windows NT, XP and Vista, they are just sorta-kinda writing for Windows and hoping no one checks their code for compatibility.

    --
    No! It's a *SIG*. Keep the Special Interest Groups away! (Con joke!)
  89. Re:As a dev who makes his living writing for .Net. by Kalriath · · Score: 1

    Point. The only way to get locally installable documentation is in fact either to buy Visual Studio, or get an MSDN Library subscription (which for the price I actually would expect printed documentation).

    From your $5000 price tag, it sounds like you're using Visual Studio Team System. Now, strictly speaking, I can't imagine why you'd do that. Actually, to be honest I think Team System sucks because the only feature over Professional edition is SourceSafe, which SUCKS. HARD. (Though it appears they recently removed Office from Professional Edition. Balls).

    To be perfectly honest, even large corporates only ever need VS Professional (with MSDN Professional, if they feel like it) - that'll set you back $1,200. Not exactly great, but better than $5,000. If you really must have MSDN Premium, then it's $2,500. However if you're considering Team System, don't waste the cash. Use some other SCM solution (Surround, CVS, SVN, ClearCase even!)

    And just a note, renewals are cheaper than original buy. And no renewal is above $3,500.

    --
    For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
  90. Re:As a dev who makes his living writing for .Net. by lpontiac · · Score: 1

    While it's a royal pain, you can call Microsoft to activate and they will let you do so. The whole ten minute process really makes me want a work experience kid, though.

  91. Re:You have got to be insane or Fanboi! by TheNetAvenger · · Score: 2, Informative

    OK, how may Microsoft applications use WPF/WCF ?

    Several... Should we start with things like Silverlight, or go into the whole WDDM model of Vista that uses XAML from the composer to printing? You are trying to confuse .NET 3.0 applicaitons here, and you are off track.

    Mac OS X's low level graphics APIs are called Quartz and OpenGL. Quartz is effectively Display PDF. Display Postscript sadly died in Apple's hands.

    Ok, OpenGL is not Apple's any more than it is Microsoft's.

    Display PDF is equivalent to GDI+ from Windows 2000, go look it up. Additionally, Apple's implementation of Display PDF even lacks the full specification, which is sadly dated anyway.

    In terms of Alpha, transparency, layering, etc, Display PDF ends up rendering to a bitmap on complex drawings instead of being able to natively draw them using the language of Display PDF.

    Go to Channel10, and watch the video of WHY XAML/XPS was developed, how it was created to specifically overcome the limitations and conceptual drawing limitations of Display PDF and Full PDF. (This is why Printing Press companies are starting to use XPS, because it can reproduce images at higher quality without having to full rasterize the image as many do now. i.e. A lot of PDF printing is rasterized and is nothing but a container for the bitmap because PDF cannot do the advanced drawing.)

    Take a look at Core Image, Core Animation, and Quartz Composer, and even venerable Quicktime to see where MS got the ideas they imitated badly. Then look into Interface Builder nib files which have provided more than XAML capabilities (on the desk top) since October 1988. It took MS 20 years to copy that one.


    First Apple's 'Core' crap is nothing like the new API features or architectual changes in Vista. Core is more about using SSE from the CPU and offers very little new features.

    You also need to get out of 'fanboi' mode and check your timelines here a bit. You are trying to compare XML document structures with XAML that uses a XML structure. However, how XAML is stored is irrelevant, it is how it processes graphics, allows for advanced drawing capabilities, internal binding, animation properties, and 3D drawing - in addition to providing a new UI paradigm of control contexts. (Again you really don't know what you are talking about here.)

    When you can take a text editor and write 10 lines of XML and create a 3D scene with a movie and UI controls on OS X get back to me, until then, Microsoft has set the stage for the next generation of development, especially when it comes to graphic designers becoming part of the design process.

    Did you notice that Windows 95 GUI was a rip-off of the NeXTstep GUI but copied poorly. You have your history wrong.


    Actually it wasn't, although many GUIs from this time frame shared a lot of ideas. Win95 was a small subset of Microsoft's development of the OS/2 Object based UI that goes back to 1987/1988.

    But when I was talking about IBM and Microsoft writing UI guidelines, I was specifically talking about UI specifications and standardized UI guidelines that defined an era of UI for OSes. Go back and look at the UI guideline papers from OS/2 written by IBM and Microsoft in the 80s, and how even Windows stuck to a version of Common UI guidelines. Additionally, as Apple struggled to implement keyboard support, they took from these Common UI guildelines as well.

    You are either too young to know this stuff or just too much of a Mac OMG person to even consider Apple didn't invent everything.

    I'll ignore the rest of the nonsense. Suffice it to say that OS X runs 32 bit and 64 bit applications side by side. How does that work in 4 bit Windows?

    Perfectly, in fact running Vista x64 on this 2005 laptop, and all my 32bit applications run fine, especially my games that get a punch up in performance because Vista has real x64 bit support and REAL 64bit Video drivers, unlike OS X.

    Do you really think Vista x64 bit can't run 32bit applications? Are you that out of touch? Holy crap...

  92. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    I know they changed MSDN recently, so you might check back. I got the Visual Studio Professional bundled with MSDN Professional for $1200. If you want the Premium, then that's $2k but there is a lot of stuff there I just didn't really need that 180 day trial doesn't do just fine (read Expressions, Groove, etc).

  93. Half-baked article by flnca · · Score: 2, Insightful

    I can only say the featured article appears half-baked to me, and it's comical how Apple users always bring up GUI design issues, as if that was the most important thing in the world.

    I tried Apple's XCode IDE last year, and I was put off by it's total lack of good UI design. XCode's editor cannot be customized, has a hair-line thin text cursor that is barely visible and a weird keyboard layout that originated somewhere in the 80ies (on MacOS and Amiga systems), that is totally uncomfortable to use nowadays. No mention of this in the article.

    Also, the article mentions minor aspects of perceived Win32 and .NET flaws, when in fact the flaws are much bigger, and the short examples only give the impression that he has looked at them briefly at best. No mention of the GetFileSizeEx() function, for instance. The old GetFileSize() API was for NT 4 and Windows 95 and previous OSes (note how the older OSes have already been dropped from the platform compatibility list). GetFileSizeEx() API was new for Windows 2000, which is already over 8 years old.

    Also, as has already been mentioned here, the article omits WPF, which is a fairly important development by Microsoft. It enables programmers to create 3D applications in XML! I tried it a number of times and it seems pretty good to me.

    But the core statements about .NET and Win32 in that article are true. The .NET framework has (or rather, had, because we're talking .NET Framework 3.5 now) some very weak concepts. Also, the documentation team is far behind with the documentation; there's a lot to be left desired in that area. The Win32 API is much better documented still. If you develop your own controls, you might run into problems with .NET, because native timers and carets are not directly supported, for instance (Win32 API calls are required for that).

    I've been developing mostly for Windows in the past 13 years, with the occasional UN*X and OS/2 thrown in, and I still find that all of them lack some of the flexibility and power of an AmigaOS, which I used and programmed on from 1986 to 2001. THAT would be the ideal development platform, because it allows unrestricted programming; sadly, Commodore folded in 1994, and not much good happened since then. GUI and development guidelines were followed by Amiga programmers voluntarily, out of interoperability concerns. All major (and many minor) applications had an ARexx scripting interface, for instance. GUI guidelines were often followed also, because the guideline manual (or chapter, in the older RKMs) was thin and easy to read. BTW, the Tool Info feature of the Workbench is still unmatched today. A user could easily configure their applications to their desires, or even configure the entire user experience to their liking, booting up Commodities (which were similar to Windows Services, except they supported user interfaces) as needed, that even sometimes changed how individual controls behaved. Tools like MagicMenu changed the entire menu system for all applications, and so on. Virtual memory and memory protection could be added by the user, and so on. There's much that needs to be said about the Amiga platform, that made it ideal for developers. For instance, the non-copying message system that was easily used to communicate between threads, making multithreaded applications easy, and that also served as an IPC mechanism.

    I can tell you: On all so-called "modern platforms", everything is much, much more complicated than it needs to be. OS implementors only have to look at the things that have already existed, instead of reinventing the triangle-shaped wheel over and over. ;-)

    1. Re:Half-baked article by overbaud · · Score: 1
      "and it's comical how Apple users always bring up GUI design issues" it's because Apple fan boys only have to GUI to talk about. But I guess thats all you can rave about when the companies core products are all front end.

      The article also fails to cover other development environments such as SQL. Half baked indeed.

      --
      Users... the only thing keeping 1st level support from being the bottom feeders.
  94. Not enough details? by inTheLoo · · Score: 1, Troll

    There were more details of poor programming practices in the summary than there are in most other articles. Inconsistent interfaces are not such a big deal but memory management that does not work, bugs and broken APIs are a big deal. Ars provides good stuff like that.

    --
    No calls now, I'm ...
    1. Re:Not enough details? by Anonymous Coward · · Score: 0
      memory management that does not work

      Ah yes, you've told us about that before.

    2. Re:Not enough details? by Anonymous Coward · · Score: 0

      HAHAHAH! OMG, talk about being seriously p0wnd!

    3. Re:Not enough details? by CastrTroy · · Score: 1

      That's why programming on windows would ideally be done in .Net. At least they have kept that API relatively clean. Sure it might be slower than doing stuff in c++ and compiling to machine code, but for many apps, you don't need the blazing fast speed.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  95. Junk journalism by Anonymous Coward · · Score: 0

    One doesn't need to know anything about the discussed subject to know the article is not objective.

    Broad sweeping statements without any justification/explanation/examples.

  96. Re:But what about Steve Ballmer.... by nametaken · · Score: 1

    Every time I see that video I want to press the "Report a Problem" button next to it.

  97. Right, so users are held hostage... by Theatetus · · Score: 2, Interesting

    ...by the crapware "enterprise" software industry that has succeeded mostly in just taking money from companies and giving them products that badly replicate where Lotus was 20 years ago. By itself, that would just be those companies' problems, but in the end other users and developers get held hostage by that same crapware because new versions of Windows have to keep supporting it.

    --
    All's true that is mistrusted
  98. Backwards compatability a myth by FranTaylor · · Score: 1

    Backwards compatibility is okay if you do it right.

    The problem is that Microsoft didn't do it right.

    Read the VB horror stories. There is no backward compatibility. It's a myth.

    Every Windows version is incompatible with the one before it. Every time there is a Windows version upgrade, you have to upgrade your applications, and usually your hardware, too. If by chance something works across an upgrade, it's only because the developers worked furiously behind the scenes to make it so, or it's some kind of crazy miracle.

    Most users have no idea what kind of crazy shit developers go through to make their code look good on Windows. It's a shocking waste.

  99. Re:As a dev who makes his living writing for .Net. by Silver+Gryphon · · Score: 3, Informative

    I agree, $3500 is insane for MSDN (I cap its value at $2,000), and I think the Premium Uber MSDN with Team System costs like $11,000. And the Express editions of Studio just don't cut it for a lot of people; no source control or unit testing, etc. Still, there's a middle ground:

    Microsoft Certified Partners are entitled to a certain number of MSDN subscriptions and/or Visual Studio copies, depending on their partner level. Even as just a Registered Partner (anyone can get this simply by signing up for free), there's something called an Action Pack, I think, that includes enough licenses to get a small business running - server OS, SQL Server, etc. The Action Pack costs either $200 or $400, and I'm too lazy to verify that but here's the link if you're still interested:

    http://partner.microsoft.com/

    Getting Certified Partner status isn't a big hurdle; get some customer references and prove certain technologies are within your scope and you're well on your way.

  100. Re:use the same techniques you learned 15 years ag by Nazlfrag · · Score: 1

    Pre-emptive multitasking was still 2 years away. Unless, of course, you owned an Amiga.

    *sniff*

  101. Program Files by ml10422 · · Score: 1

    I can imagine the huge fight someone at Microsoft must have put up to get them to make the default installation directory, "Program Files".

    "Over my dead body! We can't do that, it's madness, it will break all the existing apps that don't allow spaces in the file path!"

    "Yes, exactly! That's why we need to do it! In the future we won't have to dance around all their shitty code!"

  102. Re:What part of "Undocumented" is hard to understa by Foofoobar · · Score: 2, Funny

    If you want to make money you work in Windows?? LOL! Hate to tell you this pal but I've been a web developer since I was at Amazon in 95 and I have never once stepped foot onto a Microsoft platform. And I have 3-4 times the output and twice the pay. :)

    --
    This is my sig. There are many like it but this one is mine.
  103. Re:What part of "Undocumented" is hard to understa by wall0159 · · Score: 1

    It seems to me that there's a more prominent move towards cross-platform compatibility. From Microsoft's perspective, this is a dropped-ball, because it lowers the barrier to shifting platform.

  104. Re:As a dev who makes his living writing for .Net. by Mongoose+Disciple · · Score: 1

    The point to Team System, such as it is, is that all of the other tools that you need to do development on a medium to large project are part of the same suite and designed for interoperability above all else. Not just source control, but also automated builds, defect tracking, feature tracking, automated testing, database versioning, etc.

    You definitely can find a better free tool for almost all those things than Team System's version of them; for example, NUnit for your unit testing vs. Team System's unit testing. I seriously can't say enough good things about how nice it is to have all those things integrated. It's easy to pull up a bug and see which build it broke in and which build it was fixed in. Being able to do code reviews from within your IDE with all the power and functionality that gives you vs. doing them with a tool like Crucible (which, yes, in pretty much every way but smooth integration with Visual Studio is superior) is just so much better.

    Granted, it's not cheap, and I wouldn't seriously recommend it to more than a small fraction of my clients. For most shops it makes more sense to put together the Frankenstein monster of a dozen different tools that don't play nice with the IDE or each other but are individually stronger tools, even if it means that, hey, developer A spends a third of his time being the poor man's Subversion admin. If you've got a sizeable enough shop of developers who work in Visual Studio, though, it really does pay for itself in saved time. I wish I worked in a shop like that more than occasionally.

  105. You are too generous by FranTaylor · · Score: 1

    "a smart idea to withhold the API documentation."

    Microsoft doesn't withhold documentation. They just don't bother writing it in the first place.

    When they are forced to provide documentation, they have to sit down and write it!

    Their specifications look like they were written by 10000 people in one hour because they just don't see the worth of spending any time on documentation.

    Way back in my Windows 3.1 development days, I found Windows bugs that I was only able to work around after consulting with a Microsoft developer that my boss knew from his stint at Microsoft. I learned a bunch of stuff about Windows 3.1 that was not documented anywhere.

    1. Re:You are too generous by Opportunist · · Score: 1

      And this is basically what is wrong. The workaround communicated to you was certainly never documented either. The programmer who knew about it most likely quitted a while ago, was transfered to another department or simply forgot about it. The next iteration of the DLL will plug the hole, because some programmer thought it doesn't matter (or, worse, it was discovered to be a security risk and/or even an exploit existed that utilized your workaround in a malitious way), and your software stops working altogether.

      This isn't an isolated, odd-chanced coincidence, it's something that happens frequently. And it weighs Windows down, because now they have to explain to their customers why they should update or even buy a new version when the updated or new version doesn't run their software anymore.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  106. Re:Same techniques 15 years ago? Not just Windows. by everphilski · · Score: 1

    I used Qt for a number of years for a former employer, but for UI work, I switched to FOX toolkit (www.fox-toolkit.org). In my opinion, the messaging system is **much** cleaner and more straightforward than Qt, and no more trouble dealing with moc. Might not feel quite as polished, but has a strong base of engineering and scientific users.

  107. Re:DRIVERS: MS POOCH SCREWING by LordMyren · · Score: 1

    In reverse order,

    Apologies for the poor link, I will make sure to lash my fact checkers harshly.

    I am delighted to see the DDK/WDK available gain. I'd known it'd become availabe again, but I have not inspected the new all important terms of service / eula. Wish me luck signing up for a WDK!

    The most important issue, regarding drivers: my understanding is that developers need a certified key from microsoft to sign their own drivers. For example, Microsoft decided Atsiv was not authorized software and terminated the Atsiv developer key. To the best of my limited understanding, this has made it no longer possible to install the driver. Whether its Microsoft that signs the driver or Microsoft that signs the key that the developer uses to sign the driver makes only a modicrum of difference, my imperfect understanding is that MS now holds the key to what we can and cannot develop and install on system.

    And my mistake on not clearly citing that my post was in regards to Vista 64.

  108. Please clarify by everphilski · · Score: 1

    Visual Studio 2008 beats the crap out of Eclipse, when dealing with C++. If you disagree, please clarify, because maybe I'm just missing something with Eclipse... but on my computer it feels slower than VS and doesn't feel as nice as VS for C++ programming.

    (I have a free copy of VS so no real incentive to use Eclipse. But even back when all I had was the gimped express editions, I had difficulty finding a reason to use Eclipse).

    1. Re:Please clarify by AndyCR · · Score: 1

      If you disagree, please clarify, because maybe I'm just missing something with Eclipse... I disagree. Visual Studio lacks so many of the features I use every day in Eclipse, and the ones it does not lack are generally terribly done anyway (the exception being the debugger). A few examples of things Eclipse has but Visual C++ does not:

      * Ctrl+Shift+R for opening a file in the project or workspace. Ctrl+Shift+R, partoffilename, enter and the file is open. I am constantly reaching for this whenever I use VC++ and missing it.
      * Ctrl+Tab for switching header/implementation. I thought this would be a useless feature when I first started using it, but again, I am now constantly reaching for it in other IDE's.
      * Multi-CPU compiling of the same project. Visual C++ charges (at least before 2008 came out, perhaps they dropped it - I doubt it) $2,500 for the luxury with the professional edition or above, and I'm not willing to drop $2,500 on -any- software just so it doesn't refuse to do something so basic.
      * SVN integration right in the project view with Subversive. I can't tell you how much time this saves me. On Windows I use TortoiseSVN, and I'm constantly frustrated by the lack of integration and by the lack of features. In Eclipse, I can right-click a project, click Compare With->Base From Working Copy, and have a complete list of changed or added files. If I double-click a file, I get a very nice graphical diff with syntax highlighting. I use this every single day, and miss it in Visual C++.
      * Compiler speed. GCC is much faster than Visual C++ 2005 Professional on the project I am working on.
      * Mylyn is simply indispensable. It's hard to describe what it does; just try it. It's the best bug tracking IDE integration I've seen.
      * Everything can be done with keystrokes. I hate my mouse; at least for development work, a keyboard is much faster. With Visual C++, I have not found a way to do many things without using the mouse (see Ctrl+Shift+R above); in Eclipse I can't find anything that is impossible to do without a mouse. * AutoCompletion that actually works. Visual C++'s IntelliSense routinely falls over for me, and I have to hunt for .pcb files to delete before it will work again, if then. Eclipse's has never failed on me, and works just as well as or better than that of VC++ (but Eclipse folks, please sort the list by public members, then public inherited members, and -then- private/protected members and not by alphabetical order - that's my only gripe). * I like working under Linux, and Eclipse's C++ toolset works best under Linux and OS X. Visual C++ doesn't at all. I would be willing to switch operating systems to get better tools, but not the other way around - as a result, I stay on Linux because the better tools are, in my opinion, here.

      Again, disclaimer, this is only my opinion etc. etc. but I hope that this has explained why I personally find Eclipse superior.
      --
      If there's anyone I hate more than stupid people, it's intellectuals.
    2. Re:Please clarify by everphilski · · Score: 1

      OK, half of your complaints are key mappings. If you want to truly exploit the software, learn VS's key mappings.

      * Multi-CPU compiling of the same project. Visual C++ charges (at least before 2008 came out, perhaps they dropped it - I doubt it) $2,500 for the luxury with the professional edition or above, and I'm not willing to drop $2,500 on -any- software just so it doesn't refuse to do something so basic.

      Lies, lies and more lies. You can compile across multiple processors in the same project with VS 2005 express edition. Use the /MP compiler option. I have, with 2005 express edition. * SVN integration right in the project view with Subversive. ...

      If you go to thesubversion website, you'd see no less than three integration options with Microsoft Visual studio.

      * Compiler speed. GCC is much faster than Visual C++ 2005 Professional on the project I am working on.

      Funny, because I've had the opposite experience (heavy number-crunching codes) on identical hardware, and I've tried to have rational conversations with people to figure it out (because not only is the compiler faster, but the resulting code seems faster on Windows as well for the same number of cores, but the clusters I compute on are Linux), so I can't figure out if it's a gcc issue or if I am just dumb. Mostly playing with the Intel compilers right now to get a third opinion.

    3. Re:Please clarify by AndyCR · · Score: 1

      OK, half of your complaints are key mappings. If you want to truly exploit the software, learn VS's key mappings. I looked thoroughly and found no way to map keys to the functions I complained about, nor to many more.

      Lies, lies and more lies. There is a difference between a lie and not knowing something which is not immediately obvious.

      You can compile across multiple processors in the same project with VS 2005 express edition. Use the /MP compiler option. I have, with 2005 express edition. Thank you for telling me.

      If you go to thesubversion website, you'd see no less than three integration options with Microsoft Visual studio. I do not believe they work with the Express editions, and again, I'm not going to put down a large sum of money just to see if it begins to approach what I have with Eclipse. If we are comparing free to free, Visual C++ lacks the features Eclipse has, due to the lack of plugins. If we are comparing several hundreds or several thousands of dollars to free, I still fail to see the benefit I would have from switching to Visual C++, and still lack many features I have with Eclipse.

      Funny, because I've had the opposite experience (heavy number-crunching codes) on identical hardware, and I've tried to have rational conversations with people to figure it out (because not only is the compiler faster, but the resulting code seems faster on Windows as well for the same number of cores, but the clusters I compute on are Linux), so I can't figure out if it's a gcc issue or if I am just dumb. Mostly playing with the Intel compilers right now to get a third opinion. I think it depends on the libraries used to a large extent. The test we did was a 2Ghz Core 2 Duo machine running GCC on Linux under Eclipse vs. a 3Ghz Core 2 Duo machine running Visual Studio 2005 Professional on Windows XP. Both were making clean debug builds of the same project (the start of a now much larger project) with the same major library versions. The Linux machine came in at 0:18 and the Windows machine came in at 1:16. I expected the Linux machine to come in last by far, but was pleasantly surprised.
      --
      If there's anyone I hate more than stupid people, it's intellectuals.
    4. Re:Please clarify by pebs · · Score: 1

      If you go to thesubversion website, you'd see no less than three integration options with Microsoft Visual studio.

      Eclipse has way better version control integration compared to Visual Studio and most other IDE's. Sure, the options are there for Subversion integration in VS, but it's not very good.

      --
      #!/
    5. Re:Please clarify by AndyCR · · Score: 1

      I agree. I watched a few videos of those systems, and they are toys compared to what Eclipse has for version control (and I suspect it isn't the plugin writers' faults...).

      --
      If there's anyone I hate more than stupid people, it's intellectuals.
    6. Re:Please clarify by everphilski · · Score: 1

      There is a difference between a lie and not knowing something which is not immediately obvious.

      Five minutes of googling reveal every point above. I'm sure none of the above were immediately obvious in Eclipse but you sought them out. To be fair you should do the same in both products, because you did not, you do not have a fair perspective.

      I think it depends on the libraries used to a large extent. The test we did was a 2Ghz Core 2 Duo machine running GCC on Linux under Eclipse vs. a 3Ghz Core 2 Duo machine running Visual Studio 2005 Professional on Windows XP. Both were making clean debug builds of the same project (the start of a now much larger project) with the same major library versions. The Linux machine came in at 0:18 and the Windows machine came in at 1:16. I expected the Linux machine to come in last by far, but was pleasantly surprised.

      I just use the standard STL implementations provided by each vendor (msvc, gcc, intel). My code is math intensive (CFD) but will suck down as many clock cycles as you throw at it, and typically runs faster under Windows for some reason. I do some aggressive optimizations on both platforms. But I get the same results on both platforms with zero optimizations. Same computer dual booting Windows x64 and RHEL.

      The other funny thing is, I have access to a cluster, with some nice Itanium processors. I compile my code using gcc4.3.0, optimized and all, and run it on 4 processors. It runs at roughly the same speed as my home computer running on Visual Studio 2008 Express Edition, with profile-guided optimization only, and it's just a dual core AMD 4200 x64. It makes no sense to me because (a) the itanium processors are nicer, (b) I would expect Linux to have less overhead, (c) I haven't reformatted the Windows computer in 2 years, my wife uses it daily as her machine and God knows whats on it :P; the only thing I can blame right now is the gcc compiler which is why I'm starting to play with the Intel compiler under Linux and Windows. Then everything should be apples to apples, except the operating system.

    7. Re:Please clarify by ckaminski · · Score: 1

      IIRC, Microsoft did not use to license the Intel compiler. When I was using it in 1995-2001 the one *WE* licensed directly from Intel gave us compiled code benefits of 1.5-3.0 compared to stock Visual Studio.

      When I worked for Parametric Technology, we used to comment that we were a compiler writers worst nightmare. We couldn't link on Alpha NT for nearly three months while Microsoft tried to work out a linker problem, and we broke more compilers on more platforms than I can count - Intel's cc gave us few problems.

  109. The author does not know how to by Organic+Brain+Damage · · Score: 1

    program .NET. He probably doesn't know how to program OS/X any better, but he feels better. And, for Mac fanboys, it's all about the feelings.

  110. Most of the article is crap, but there is one gem. by Grisha · · Score: 1

    The author, I think, really seems to be lashing out at a bunch of random stuff, and being absolutely and totally wrong in many cases.

    However, there was one shining gem at the end of the article. He goes on to talk about the lack of UI controls that are exported from "standard" Windows apps like Office to developers.

    I think this is a general problem Microsoft has always had-- how many times have they introduced a new menubar or widget, not released this to any development environment (be it C++, VB, or .NET), and subsequently generated a small cottage industry of clones? Many of varying quality, and often hard to integrate into the general Windows framework (mainly due to undocumented calls).

    This is where Apple seems to really come through-- rather than hide their new innovations (such as CoreGraphics, CoreData, etc), they immediately share them so that people who develop Mac applications have a much bigger common base of tools to work with. Why hide away the stuff that makes better [insert your system of choice here] programs?

    In a way, Apple may actually be aiming for the simple, journeyman programmer that the author describes. They're more likely to use what's at hand-- you can make your iTunes clone without having to purchase nary a widget or toolkit!

  111. Re:use the same techniques you learned 15 years ag by dcam · · Score: 1

    One of the problems with windows is that you have something that is both static and something that moves. For example the .Net framework moved, but you still need to know the win32 API. This is something of the point of the article: Do one or the other and since the older stuff sucks, actually implement the new stuff properly.

    --
    meh
  112. Re:Yeah, yeah by Anonymous Coward · · Score: 0

    When you say NDS do you mean novell directory server or netscape directory server? What do you mean by LDAP implementations? Do you mean LDAP APIs, LDAP servers, bindings for domain credential management?

    LDAP API implementations (RFC 1823) predate AD.

    Anyway if MS really cares about the preceptions of their APIs being dense and difficult to work with they would break their mad insistance on hungarian notation. More than anything else that is what pisses me off the most about the windows API.

    Having said that at least windows has an extensivly documented API that continues to work across a wide range of windows versions spanning close to two decades.

    The linux answer is always the same "recompile" ... In my view this is the single biggest mistake preventing wide spread adoption of Linux in the areas I care about.

  113. Re:Yeah, yeah by cyphercell · · Score: 1

    most AD implementations are

    Network (y/n)

    email (y/n)

    drive access (y/n)

    the next biggest feature is software that makes single signon workable.

    anyways it was just a joke

    --
    Under the influence of Post-Cyberpunk Gonzo Journalism
  114. Re:What part of "Undocumented" is hard to understa by gmack · · Score: 5, Insightful

    To make it more amusing those third party APIs slog through the win32 API hell so you don't have to.

    I think that's why Microsoft is afraid of breaking the old APIs. Once you have to go through the pain of porting to a new API why not just go cross platform?

  115. Re:What part of "Undocumented" is hard to understa by timeOday · · Score: 1

    So, you problem is that programmers make use of undocumented API calls. While "undocumented" does not always equal "unsupported", using them is just plain stupid.
    OK, it's stupid. So what? Stupid happens. Often. And now it's Microsoft's burden to bear, because customers demand compatibility (including bug-for-bug compatibility) with old versions of Windows. Feel free to blame whomever you want; it's irrelevant - when it comes down to a decision about whether to upgrade, many people won't do it if it breaks their apps. Apple manages to force people to rewrite or go without, Microsoft does not. Where this becomes relevant to the rest of us is because the cruft comes through when you try to write for Windows.

    That said, taking on a maintenance task too herculean for anybody else is why Microsoft still makes the big bucks. Its also why Wine is a failure.

  116. Re:As a dev who makes his living writing for .Net. by Tolkien · · Score: 1

    That's what Microsoft claims. It's taken what, 10 years just to get .Net 1.0 for Linux? Fuck that. This time-frame alone suggests it's not portable. Hell - ANYTHING can be ported in the span of 10 years. The relevant question is "To what reasonable degree is it portable"? I think "not" is a valid answer here.

  117. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    If you can develop on older versions of linux with no problems why do you need the latest and greatest from microsoft? that simply does not make any sense.

  118. Re:What part of "Undocumented" is hard to understa by HalAtWork · · Score: 3, Interesting

    Programmers were forced to take advantage of undocumented API calls in order to compete with the applications MS produced which used those. Also, a lot of API calls were not documented well enough such that the behavior was not questioned by the programmer and so the broken behavior was relied upon to make the application work.

  119. Questions for you by FranTaylor · · Score: 1

    1. Dog food. Is Office 2007 written in .NET?

    2. You choose an easy target with OSX. Jobs freely admits to ignoring the business market, your issues do not matter to them.

    3. You talk about 'UI consistency', and then you talk about how Office, and Only Office, has this new GUI. What about the rest of Windows? Does it have this new GUI? Where is the consistency?

    4. How come Microsoft, with all their high-powerd thinking, can't retire an 8-year old operating system? Why is the market forcing them to continue to sell XP?

  120. Re:As a dev who makes his living writing for .Net. by dcam · · Score: 1

    Indeed. After looking at the options in MSDN, the only really practical one (price wise) was the VS.Net (~$1000).

    My problem with this is that particular subscription should be given away for free. Do something concrete to encourage development on windows.

    --
    meh
  121. You misread that badly! by Anonymous Coward · · Score: 1, Informative

    > Yes, even HAVING undocumented API's is bad as well. Like I said, I was not excusing the mess that is Win32, I was just sayin'...

    NO! He did NOT say they use undocumented APIs! He said that the *official* APIs have undocumented gotchas and quirks. That's NOT the same thing at all!

    For example, I seem to recall that Vista has some undocumented extras for any application named setup.exe. Now imagine that, but in the API, perhaps if CreateProcess() was doing weird stuff to your application's memory just because you passed certain, specific values that happened to be the same as a crazy legacy application. That's exactly the sort of stuff that can cause problems at the worst possible time.

  122. Re:But what about Steve Ballmer.... by Anonymous Coward · · Score: 0

    "How Microsoft Threw The Chair at Developers"

  123. Dropped the ball? by Anonymous Coward · · Score: 0

    Rather than developing in the abomination that is Objective-C and OSX with the tools provided (I've done it, I'd rather slit my own throat), I'm fairly sure ideology aside most "developers" would prefer Visual Studio + .NET.

    If you've used VS2008 + C# 3.0, you'll know it's a dream compared to whats available on other platforms right now in terms of quickly and easy building software. Sure, it's not the be all and end all (there are things GCC and C++ are better for, like performance and low level code), but C# 3.0 is a fantastic language and .NET is a great feature filled platform (and there are very few bugs for a platform that size).

  124. Flamebait by Anonymous Coward · · Score: 0

    Are you friggin kidding me? Of all the stuff that Microsoft makes a mess of he picks on .Net? Has he never used the date libraries in Java or tried to hook up an event handler? I recently tried to administer a SharePoint server and completely understand why people hate Microsoft, but .Net is one the Microsoft products that is atypical in that it does everything correctly. It's open source and open standard. This guy is an idiot. Move along.

  125. Re:As a dev who makes his living writing for .Net. by rs79 · · Score: 1

    "Your theories might be nice for hobbyists, but serious big businesses buy professional commercial tools"

    Yeah and they REALLY ENJOY doing that.

    --
    Need Mercedes parts ?
  126. ha ha ha by FranTaylor · · Score: 1

    You are right, this guy has been drinking way too much of the kool-aid.

  127. Many developers don't change, sadly by Killer+Eye · · Score: 1

    The article mentions developers changing little in 15 years, and sadly this is a huge problem (on any platform). It's unclear that developers would have smartened up, even *if* Microsoft gave them a well-needed kick in the butt to enter the 21st century.

    Consider the Mac. Programmers using the Carbon API have been crying for many weeks about the idea of having to learn something new (Cocoa). Rather than see it as an important jump for their professional development, or an opportunity to clean up their code bases, a lot of these developers are sitting still and turning blue (if public mailing lists are any measure).

    I wish I knew more developers interested in keeping things moving. Many are conservative, and this *kills* projects in the long term.

    Part of it may be from incredibly short-sighted managers, relying on buzzwords like "customer focus" to plan exclusively around new features from "users". Then of course there's no time left for developers: no time frame set aside to gut a couple of modules so that things remain manageable, and probably not enough time to write tests! In that situation, maybe most programmers would develop a fear of change.

    But that time has passed. These inexperienced programmers have to be cut down by their peers and just told to grow up, in my opinion. If you are a software professional, you have to have the attitude of building the best application you can. And this requires change.

    --
    "Microsoft killed my company, I hold a personal grudge. I don't use Microsoft products and neither should you."-JWZ
    1. Re:Many developers don't change, sadly by flnca · · Score: 1

      You seem to be a MacOS X expert. Do you know if the Cocoa event handling is bug-ridden? I've had a problem once (as a user) with the text-to-speech function. It seemed the user interface got the keyboard input event at random. Sometimes it worked, sometimes it didn't. Is it a design flaw in Cocoa, or a bug in any involved application?

  128. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    I think you're the troll. You are probably one of those mindless ms fanboi's who lives in your small ms world surrounded by ms fanboi's cuddling up to your Ball-mer doll every night.

    I've been using .NET 3.0 for 2+ years, and although it's adequate, it's nothing to write home about, badly documented, slow, and over-engineered. And the windows 'environment' sucks totally - it falls far short of a 'development environment', and an ide - no matter how good it is - isn't enough. What a slow, buggy, annoying and limiting desktop experience. It's a total joke. Without cygwin and virtuawin making it the slightest bit bearable i'd never get any work done, i'd be too busy finding stupid little apps to help me do work that just come with linux.

    I'd much rather any linux any day.

  129. The author isn't even a professional developer by Anonymous Coward · · Score: 0

    We get to hear musing on the state of operating system APIs from a University student without any experience as an actual developer? CmdrTaco must have been drinking.

  130. Re:Same techniques 15 years ago? Not just Windows. by drfreak · · Score: 1

    It actually sounds like the author spent too much time doing DOS and Win32 programming and hasn't woken up to the, actualy refreshing, .NET paradigm.

  131. Re:As a dev who makes his living writing for .Net. by LordMyren · · Score: 2, Informative

    Sure dude whatever.

    First off, Microsoft never claimed .net was portable, just the CLR. And, for the record, the first reference implementation of the CLR -- Rotor -- was cross platform to BSD. Mono came along of its own volition and works independently of MS, and MS has never made any claims on their behalf. Mono has had very good 2.0 compliance for going on three now. Library support is excellent but not perfect, which makes sense given that the .Net library is a massive all encompassing + the kitchen sink beast and there will always be pieces no one has ported. That wont prevent 99.99% of apps from working.

    Rather than FUD'ing around, I suggest downloading the Moma tool and which will check whether an application is compatible with Mono.

    Mono supported the DLR by day five after release or something. C# 3.0 support is on the way, and, to my understanding, most of the pending work is still in LINQ re-implementation world. Given that it was released November 19, 2007 and that it requires implementing a huge AST, I wouldnt complain.

    At its base, the CLR is a wonderful VM to implement and write to. The libraries built on CLR are give or take. For the most part, I prefer the non MS ones anyways.

  132. Re:What part of "Undocumented" is hard to understa by gfxguy · · Score: 1

    From their perspective... their perspective is they can put out crap because more users, and therefore more developers, use Windows.

    I haven't had to program anything but some simple scripts in Windows for about five years, but we're the exceptions to the rule.

    --
    Stupid sexy Flanders.
  133. That's why most GUIs today are in browsers by Animats · · Score: 1

    What we're seeing, of course, is the migration of GUIs to browsers. The browser interface isn't very powerful, but it works well enough for most enterprise apps. After all, in most enterprise applications, the real work is being done in the back end, near the database.

    The last time I wrote a real GUI application, it was for QNX, where we needed a control panel for a real time system. Anything that looks like a business app I do with a browser in the front. It just isn't worth the effort to deal with the Windows API any more unless you're building something really elaborate.

    In the game community, the trend is towards using Flash for the 2D portions of the GUI. This separates the graphical design from the implementation, and there are good authoring tools for Flash. If you need a "pretty" GUI, and have the artistic talent on tap, that's the way to go.

  134. Re:Yeah, yeah by afidel · · Score: 1

    Novell Directory Service, aka eDirectory. Yes I know that the LDAP API predates AD, heck it predates NDS which in 1993 was one of the first implementations of LDAPv2. I meant the whole package, from the multimaster replication to the object model and hierarchy. Sure because of the way LDAP works you could cram an AD or NDS implementation into another LDAP server, but that doesn't change the fact that they are both really good implementations of LDAP with well thought out schema's and a lot of stuff that goes beyond simple LDAP. They also have their drawbacks like the idea of using a binary blob to encode the terminal server attributes in AD.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  135. Re:DRIVERS: MS POOCH SCREWING by Kalriath · · Score: 1

    I just checked on the Atsiv issue there. Microsoft did not revoke the Atsiv certificate, they bludgeoned Verisign into doing so. Microsoft also maintains a revocation list of "blacklisted" SPCs in the kernel itself, which only applies to Kernel Mode drivers. Ordinary drivers don't seem to have a revocation method.

    They also added Atsiv to Windows Defender as a malware utility, so it up and removed it from client PCs.

    In no case do you actually need Microsoft to do anything - you sign your own driver with your own certificate which you bought independently from any of these companies.

    --
    For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
  136. Strange for me to come here... by HerculesMO · · Score: 1

    As one of the few Windows sysadmins (and happily so), to see so many /.ers defending Microsoft on .NET.

    And here I thought I was going to have to dig out other posts, but it's been done for me.

    Kudos to the posters then... less biased than I give credit for :)

    --
    The price is always right if someone else is paying.
  137. Re:Most of the article is crap, but there is one g by flnca · · Score: 1

    He goes on to talk about the lack of UI controls that are exported from "standard" Windows apps like Office to developers. I think this is a general problem Microsoft has always had-- how many times have they introduced a new menubar or widget, not released this to any development environment That's true. If you look at what makes up the size of a Windows installation, it's over 90% components, of which 90% are undocumented (estimation). Just fire up an OLE browser, and see all the components that are documented nowhere. XP is 2 GB in size, and Vista 15 GB. Why don't they make all of these components available to developers? That would be a major step into making Windows more productive for developers.

    This is where Apple seems to really come through-- rather than hide their new innovations (such as CoreGraphics, CoreData, etc), they immediately share them so that people who develop Mac applications have a much bigger common base of tools to work with. Why hide away the stuff that makes better [insert your system of choice here] programs? In a way, Apple may actually be aiming for the simple, journeyman programmer that the author describes. They're more likely to use what's at hand-- you can make your iTunes clone without having to purchase nary a widget or toolkit! This sounds really interesting, indeed!

    If I'd ever pick up on MacOS X programming, it would be for that reason. The libraries are really comprehensive. I hate XCode, but perhaps I can get other tools like Eclipse or something that could make this whole thing worthwhile. (And I'd need a more recent Mac, I only have a used old PowerPC box, which runs OpenBSD now; very stably so, btw)

    However, Apple is major cash-cow business, they know how to sell new computers ... Microsoft is less overt with that. But perhaps it'll bring me some joy as well, someday ... ;-)
  138. False Dichotomy by DerekLyons · · Score: 1

    I'd have been more impressed if his argument, when distilled down, wasn't "Apple has Passion and Apple fanboys have Passion. And Passion Is Good. And therefore any company that doesn't kowtow to people with Passion must by definition, suck."

    1. Re:False Dichotomy by ceoyoyo · · Score: 1

      It's unfortunate that your understanding of the article distilled down to that.

      You'll note that Microsoft basically agrees with the author (or vice versa): they're chucking the legacy cruft in Windows 7 and supporting old apps through virtualization.

  139. Re: Apple's "failure" with Carbon and Cocoa by Anonymous Coward · · Score: 0

    Author also totally ignores Adobe not providing any 64bit support for OS X because Apple dropped the ball on Carbon x64bit support that has been promised forever from Apple. Apple's ability to completely abandon old ways of doing things is inarguably what's allowed it to reinvent itself over the past ten years, while also improving its user experience and developer tools.

    There comes a time when an OS maker has to make crucial changes to the platform with long-term advantages that disappoint a considerable number of developers in the interim. Apple has shown that it has the guts to pull this on its devs, and frankly, the devs who are bringing the most to the platform had a better chance of seeing this coming.

    Carbon was a rickety bridge from a doomed platform to momentary safety, and that bridge is just now starting to crumble. Stragglers (such as Adobe, with its huge, teetering code base) were inevitable. But Apple cannot afford stragglers anymore. It could back when OS X came out, in fact it had to. But not anymore.

    And you know what? It's been a few Moore cycles since Carbon came out. An average Carbon-based app could probably benefit from a rewrite. Including Adobe's products, which it's hinted at doing for quite a while.
  140. Qt (& GNOME) by scorp1us · · Score: 4, Informative

    As someone who had to learn C++/CLI and writes code to allow legacy code to interop with C# at work, I have this to say.

    If you are going to learn a new platform for a "modern" app or OS, then let it be one that allows you to target more than one platform. Seriously. Lets take a look at .NET:
    - Everything in the library is new.
    - You can only officially target one platform. (Mono not withstanding)
    - You have to learn a new language to use it effectively.

    Now look at Qt:
    - New library
    - Build onto same C++ compiler you've always used
    - No messy COM, COM wrappers needed for introspection
    - You can target any platform with a modern C++ compiler (VS6 and higher on win32, gcc on all platforms)
    - Ground up C++, clean consistent API.
    - Active development with binary compatibility within major releases.
    - Python, ECMA scripting, (some C# support too!)
    - Java version
    - Meta-object compiler adds introspection. (no need to deal with COM)
    - ActiveX interop in the commercial version (You can use Qt widgets in Winforms and vice-versa)

    I don't know as much about GNOME, but it shares a lot with Qt, so should not be excluded.

    About the only thing you miss out on is the automatic garbage collector. Qt emulates this to some degree by allowing every QObject to have a parent. Then the only thing missing is the ability to defragment memory in the heap. I've only heard about this being caused by lots of small memory allocations, but Qt block allocates so this isn't a problem. Also, many types are implicitly shared, meaning they are more like handles to the objects, meaning that 1) they can cross thread boundaries 2) they are references until they are modified.

    All in all I see you only lose out on the memory defrag. But you don't need to learn C++/CLI or C#. (My opinion of C# is that if you're going to go that far, you might as well take the goals of the language to completion, in which case you end up with Python, oh yeah, there is a Python wrapper for Qt too)

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  141. he doesn't know sheete by Mmm29 · · Score: 1

    Ahm, this is obviously the same kid that wrote the first part, I'd say he probably never got beyond what they've taught him in college (not much I suppose) - he claims developers are still writing directly to win32 api.

    Dunno, but he must be living really, really deep in the cave as developers have been using higher level, object oriented libraries for like a decade and more. I have no idea why this rubbish even gets on the front page (ok I know, it bashes Windows and we like to do that, right comrades?)
    Now win32 is exactly the same rubbish as posix, they are both basically just C style functions.. there is no object-oriented design because it was designed long ago, when processor cycles mattered more than today and if they really wanted to waste those cycles they could easily wrote whole damn OS in python. Efficiency, it matters. Now stupid developer (or library writer) will use win32, but a smart developer will rather choose libraries like wxWidgets, MFC or even Java or .NET.

    And it's just plain lunacy to say .NET is insufficient. It is the best strongly typed framework, its C# is java 2.0, you can even fuse machine code(x86) into the same binary with C++\CLI and get flexibility and raw power of C++ to do just anything.

    He also seems to be very quiet about some of the new stuff in .net languages like linq - or APIs like WPF, which is IMO just the most powerful gui creation library (and by that I mean this - this and this), but unfortuantely only available on windows.
    So yeah, I'd say the author has completely no idea what he's talking about..

    1. Re:he doesn't know sheete by JoshHeitzman · · Score: 1

      I'd much rather use WTL then MFC, Java, or .Net for writing a Win32 GUI.

      --
      Software Inventor
  142. Some people have fun reading Econ textbooks by leftie · · Score: 1

    What one person might consider fun, another looks at as drudgery. My Dad has fun sitting down with a stack of economics textbooks every summer vacation and starts reading. He usually got 4 or 5 of them done by the end of his vacation.

    Younger friends swear piercings are fun. I have about as much enthusiasm about getting my tongue pierced as I do sitting down and reading a pile of econ textbooks on my vacation... and has just about the same chance of happening.

  143. The term you look for is "enabler" by SuperKendall · · Score: 3, Insightful

    I too have "been there, done that" on a lot of platforms.

    The term you are looking for is "enabler" - Microsoft is an Enabler for other applications to engage in bad practices, for users to engage in bad security.

    As you say it makes a lot of people happy now, but look what else it has given us - lots of decrepit systems, and hundreds of thousands of zombies that make our lives miserable in other ways.

    Sometimes even a business can't just be about making people happy, it has to be about moving the market as a whole to dry land when they see the flood coming.

    Just like the Spiderman quote tells us.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:The term you look for is "enabler" by Spy+der+Mann · · Score: 1

      Just like the Spiderman quote tells us.


      Hmm... what would happen if it was Bill Gates who got bitten by a spider?

      Uncle Ben: Remember, Bill... with great power, comes...
      Bill Gates: MONEY!!!

  144. Re:As a dev who makes his living writing for .Net. by anomalous+cohort · · Score: 1

    Here's a tip. You don't really need an MSDN license to do good Windows development anymore. The .NET SDK provides everything that you need to develop and build great .NET applications and it is free (as in beer).

    What's that you say? No VS.NET with the .NET SDK? That's true. Your favorite text editor can do the job with the writing and NAnt can do the job with building it. True, you won't get your precious statement completion that you get in VS.NET unless you use the OSS IDE SharpDevelop.

    VS.NET can be more of a crutch than a tool since there is no first class, built in support for modern IoC/DI style MVC frameworks such as Unity or Spring.

  145. Going where the money is by SuperKendall · · Score: 2, Interesting

    So maybe they "dropped the ball," I say they never had the ball to drop, and they don't give a crap because if you want to make money, you work on Windows.

    If you knew the demographics of the two systems you might think twice before saying that.

    It's not like a cash register is ever going to buy anything I write, and it's not like a lot of actual PC users will ever do anything but pirate it.

    There are a lot of Mac developers making a good living. And why not, when even though you have a smaller market you have less competition and users more willing to pay you.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  146. Re:As a dev who makes his living writing for .Net. by bar-agent · · Score: 1

    The completely functional optimizing commandline compilers for C++, C# and VB are freely downloadable. The IDE with most designer support and full debugger support is freely downloadable.

    Um. No. Visual Studio Express does not let you debug threads, or attach the debugger to a processes, or develop services, or do conditional breakpoints, or refactor (other than renaming and extracting methods), or use MFC or ATL, or develop 64-bit apps, or edit resources.

    --
    i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
  147. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    Just buy Visual Studio Standard for $300 or whatever, it has virtually everything you might need unless you're doing hardware dev.

    If you want the warez, look into Action Pack - $300/year for 10 OS/App installs

  148. Backward Compatibility is bullshit by IdahoEv · · Score: 1

    Code written for Windows 95/NT (back in 1996) still works today on the Windows platform. 12 years later.


    See, this is BS. A huge amount of my work in the last two years was compensating for stuff written for Windows 95 or even Windows 98 that doesn't work on XP, much less Vista. Sometimes even when the API technically supports it, on a *practical* level things become useless because too much about the OS or UI has changed.

    Old software mysteriously crashes because the video driver won't mesh. Or documents will generate but look fucked up because all the fonts have changed. Or maybe it can't talk to USB and only supports parallel ports. Or contemporary printers won't understand it. Or it can't function in a modern TCP environment. Progress breaks old software and no amount of Microsoft trying to keep around legacy API baggage will ever fix that.

    How much stuff written 12 years ago have you actually used in a production environment on modern machines with a modern copy of Windows?

    The backwards compatibility is not necessary, anyway, because most people who really need old software can and do run it on old hardware and old OS's, as well. They don't upgrade to new hardware and run old software, because they know from experience their stuff will break despite microsoft's efforts.
    --
    I stole this sig from someone cleverer than me.
  149. Re:Same techniques 15 years ago? Not just Windows. by Brandybuck · · Score: 2, Informative

    Most of the flashy Microsoft tools are there to correct the horrible APIs they have. For example. it's nearly impossible to write MFC code without the Class Wizard. But with Qt all you need is a text editor and compiler. Your *choice* of text editor and compiler. Even Visual Studio.

    --
    Don't blame me, I didn't vote for either of them!
  150. My favourite quote from TFA by SurturZ · · Score: 1

    My favourite quote from TFA:

    "At the final level, you have the conscientious developers. These are people who care about what they're doing. They might be writing business apps somewhere (although they probably hate it, unless they are on a team of like-minded individuals) but, probably more likely, they're writing programs in their own time."

    In other words, "good programmers are unemployed".

    An interesting thesis to say the least.

    1. Re:My favourite quote from TFA by VoidEngineer · · Score: 1

      I think the sentiment is "good programmers aren't employed as programmers" or "good programers tend to be employed in non-programming jobs". Which I might agree with. You're right though, it is an interesting thesis.

  151. What point to any of it by SuperKendall · · Score: 1

    in addition to providing a new UI paradigm of control contexts

    Too rich, Dilbert.

    You yammer on about things that are hardly in production use at all. Ten lines of XAML to have your WDDM spin a 3D teakettle! Well color me impressed, except that nothing has come of it actually.

    Yes I watched the channel 10 videos - when they came out years ago! I predicted little impact would come of it, and here we are.

    The main thing that impressed me, was that they used Emacs to write the XAML. Smart fellows. Gave me some hope for Microsoft - at the time.

    I was doing my own custom XML control languages long ago. They can be fun but they are only shortcuts, and I don't think you even ever responded to the whole NIB comment someone else posted that is quite a bit beyond what you are thinking of with XAML control in terms of real-world UI building, despite what magical forces you might have at your command in the innards of XAML to render wondrous things. It's hilarious that people talk about Mac users only using the system for eye candy and here you go on a rant about how easily you can create and control 3D objects in XAML. I'm sure that was of great help in building the system that lets you toggle between windows using the 3D overlapping windows for example... Too bad that functionally it comes in a distant second to the usable reality of Expose on the poor old OS X DisplayPDF subsystem, which incidentally looks to be getting usable scaling UI's before Vista ever really makes much use of the concept.

    How do I do a Ribbon with XAML by the way? What's that, you can do a 3D Stay-Puft Marshmallow man in a line of code but can't put up the only innovating UI construct man has had since the dawn of time according to yourself? Oh gee, perhaps you need to re-read the article.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:What point to any of it by TheNetAvenger · · Score: 1

      How do I do a Ribbon with XAML by the way?

      Ya, something as complex as a Ribbon Panel would be beyond XAML/WPF. Are you seriously this stupid?

      It would be a few lines of XAML, using built in display intheritance, and even be fully dynamic that could change abilities or appearnce as easily as CSS does for the web. Not only would be it less lines of code, but more functionaly, and could be completely implemented by a UI Graphic Designer instead of a geeky programmer. Heck it could even be 'cute' and animate, or use a 3D metaphor to flip between the panes of the Ribbon.

      Here try this, go to a search site like Google, and type in [WPF Office Ribbon Control].

      There are already 1,000s of them available and being used, and yet people don't even realize this crap is used in applications they are using today.

      Besides, the whole idea behind the XAML/WPF paradigm is that controls and UI is not locked to generic implementations, instead offering both generic control concepts and allowing for control consistency with unlimited UI visual constructs. (Default UI control behaviors with any appearance or animated context added to them.)

      What about this is so hard for you? I would type slower if I thought it would help...

    2. Re:What point to any of it by SuperKendall · · Score: 1

      Ya, something as complex as a Ribbon Panel would be beyond XAML/WPF. Are you seriously this stupid?

      So you are saying you have to construct it by hand instead of having a higher level ribbon construct. Well that certainly is an amazing and powerful framework you have there! I guess you could even build it out of individual pixels, each described in an XMl tag! Behold the awesome power of XAML!

      Oh wait, it wasn't me who was an idiot after all.

      It would be a few lines of XAML

      It WOULD be? Using what? Bullshit. Type me four lines of XAML that get me a ribbon for a UI complete with tabs and different sections. Thought so, AstroNaught Architect.

      Here try this, go to a search site like Google, and type in [WPF Office Ribbon Control].

      I get a lot of results, and NONE OF THEM BUILT IN which is the point of the main article! You have to be an idiot as you have totally made his point with that one comment! Do I use JimBob's ribbon, or SlimAl's "Almost Ribbon" framework? Delightfully none of them work the same or end up acting quite like the Office Ribbon. Behold the awesome power of XAML!

      It's not like I can't write my own Ribbon in any other library and gain it the same powers as you pontificated about. Hell, I could build it as an Interface Builder plugin for the Mac, they already have constructs like it today that with a little more work would be a ribbon - since after all a ribbon is just a toolbar with tabs. All every bit as dynamic. But since the Ribbon concept needs more refining to show true worth, it's frankly not worth the bother just yet.

      Besides, the whole idea behind the XAML/WPF paradigm is that controls and UI is not locked to generic implementations, instead offering both generic control concepts and allowing for control consistency

      Consistency only within whatever ghetto control you downloaded is not the same as system consistency. It's not like other frameworks do not offer you the same degrees of freedom.

      What about this is so hard for you? I would type slower if I thought it would help...

      That's your problem, you aren't thinking at all. It's not hard for me as I am where you are, and way beyond you. I have seen this all before under different names, have done it in different forms. What you have is hardly new, and your shiny toy has no robust pickup to it to warrant such admiration as you currently offer.

      As your obvious superior in UI matters, I grant you the last response in this particular thread. You may posit whatever you wish in response though I'll certainly read no more of your mad ravings, Three years hence think back on this point and look at where XAML is, and realize what was true and what was smoke... I would say I'd be laughing at that point but I moved past XAML a year after it failed to take off.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:What point to any of it by Mongoose+Disciple · · Score: 1

      As your obvious superior in UI matters, I grant you the last response in this particular thread.

      I'd say the only thing that seems obvious is that you also think you can piss farther than that guy.

      Seriously, go back and read what you wrote. It's pompous enough to choke on.

    4. Re:What point to any of it by SuperKendall · · Score: 1

      Seriously, go back and read what you wrote. It's pompous enough to choke on.

      You have to understand your target audience when writing. I was only responding in language he might be able to understand, taking the same approach in his own messages...

      Seems to have worked as he's sulked off.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  152. Re:use the same techniques you learned 15 years ag by JoshHeitzman · · Score: 1

    Yup. A decade ago I would not have even thought of using anything other then C++ to write a game in, but now I'm doing it in Python. Sure there may be some parts that will have to get pushed down into C++ for performance reasons, but it likely won't be any rendering code since all of the heavy lifting is done on the GPU these days. I can also put off pushing an functionality down into C++ until the game is reasonably complete and profiling can pinpoint exactly where the bottlenecks are the absolutely must be opened up.

    --
    Software Inventor
  153. A little bit arrogant.. by vmartell · · Score: 1

    While the article has many good points, I have to point out the "developer taxonomy" section sounds incredibly conceited. Lots of assumptions about the dedication, abilities and professional pride of the business and what he calls "journeyman developers". It really seems like he looked in the mirror and decided that any developer other than him is intellectually, professionally his inferior. It took a bit of effort to get past the and finish the rest of the article and get to the great points in it.... ah, the arrogance of youth... the author must be very young...

  154. Objective-C more far reaching than you know by SuperKendall · · Score: 1

    I am just going to reply generically to your comments rather than quoting anything specific - basically, I just had to say that I have done some C#, a ton of Java, and also some Windows and X11 programming in the past and am now doing a lot of Objective C work. I've heavily used Scheme and a few other languages as well, so I have some basis for comparison.

    Objective C is as much a full-featured and generic language as Java and C# are. I agree with your point about the extent of the libraries for Java and C#, but I don't know if you are really aware of the extent of the Foundation and other classes at hand with Objective-C on the mac. Threading, collections, etc. etc. etc. it's all there.

    As for "any language being as rich ending up like Java or .Net" - I do not think that must be the case, and Objective C is proof of that. Message passing is a different enough approach that even with a common C syntax base you can accomplish quite a range of things in Objective-C using different techniques, so even though it may not look like it has generics you can achieve the same kinds of things easily.

    And even before GC was added, it still had a better memory management system than C ever had.

    Coming from Java, Objective C is not a downward step at all and I've not felt constrained by the library classes offered. Also you kind of glossed over the whole NIB thing but that really is a super-advanced way to build GUI systems compared to any other IDE today, because you are basically freezing live classes in place instead of gluing together dead ones you seek to animate. On top of that it aids the designer all the time in any attempt to follow GUI guidelines, in the same way a desktop publishing application helps a graphic designer assemble a visually pleasing document.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  155. Ah, I Am Me by EdSF · · Score: 1

    Such a long winded article that can be summed up as "It doesn't work the way I want it to, therefore it is crap". This "developer" is so arrogant, that he deserves to write code elsewhere - good riddance. My god! How stupid can businesses be - they're writing code that works for them! What? A platform that can be used by non-developers to do their jobs?!!! What garbage! Software shouldn't do these, this is blasphemy. Software should be pretty! What a load of crap. Software, platform, code, etc, are tools to get the job done. Sure you can make it fluffy and pretty too.

  156. huh? by nguy · · Score: 1

    Both Apple and Microsoft underwent quite parallel evolutions. Microsoft and Apple started off with cumbersome, buggy, non-OO toolboxes that evolved into Win32 and Carbon. Both Microsoft and Apple had to start over and come up with OO solutions, .NET and Cocoa respectively. Both of them are derivatives of other people's earlier designs, namely Java and NeXTStep/Smalltalk, respectively.

    So, which is better? Fortunately, I don't have to make a choice. But if I did, I'd prefer .NET. .NET is a reasonable, modern platform, with runtime safety, a correct type system, and libraries and APIs designed in this century. Cocoa and Objective-C are designs from the 1980's and include C as a subset. They don't have runtime safety, reflection doesn't work reliably, they retain pointer types, and memory management isn't fully automatic either, and those are only some of its problems. And much as I loathe Visual Studio, XCode drives me up the wall even more. The notion that Macintosh is some kick-ass developer platform is... well, how does that saying about repeating a lie often enough go?

    Apple has been moving in the right direction with Objective-C 2.0, but they still have ways to go if they want to modernize their platform. I think they should just move to Smalltalk as the primary programming language and IDE and bury Objective-C as the "C/Smalltalk interface language". If they do, their platform might actually become interesting to me. Until then, if I have to program a commercial platform and have a choice, .NET looks a whole lot better to me.

  157. Re:use the same techniques you learned 15 years ag by Anonymous Coward · · Score: 1, Interesting

    Yes, saying you still use 15 year old techniques is retarded.

    15 years ago, I was programming with Turbo Vision/TASM/TP7/TC++. We did clipper, and DBASE IV. Direct hardware access, still mostly in dos (lots were using dos extenders), with computers ranging from 386's to early P1's. Back then (1993), very few people even heard about the internet...

    Now, we're doing WPF apps whose interface was made part in a 3D CAD program, part in illustrator, which is talking to server middleware with a n-tier architecture (with a RDBMS back end), over web services, using WCF. Lots of networked systems are involved. We're also doing web apps, and apps for mobile devices. We're often using things like LINQ and OR/M's, code generation tools and what not... And we're moving to parallel processing for a lot of things. Oh, and there is not one win32 API call in sight in our code base.

    It's radically different than it used to be. If anything, it's changing TOO FAST, it's very hard to keep up with it all.

  158. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    Well, I seem to remember (no flames here, please) that you could not install MSDN on an emulated machine. (but again I cold be wrong, I am just recalling it as it made me a strong impression at the time)

  159. One Plus One Plus One... by SuperKendall · · Score: 1

    Look around you at a technical conference sometime, to see that what "One Developer" posts about, others may be doing as well without blogging about it.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  160. Re:As a dev who makes his living writing for .Net. by random0xff · · Score: 1

    Ok, but C# 3.0 does offer some really good functionality, like LINQ. It's a very nice language, and within a year F# (a functional language) will become a fully supported language alongside VB.NET and C#. And this year ASP.NET will finally have an 'official' MVC framework, and there will be the Entity Framework release.

    I too am frustrated, the cost mostly, but I really like the .NET framework, languages and general direction of tools. I don't see such a complete package anywhere else.

  161. Re:As a dev who makes his living writing for .Net. by vux984 · · Score: 1

    It just doesn't work anymore, and I'm sad because I really liked being able to develop code without artificial roadblocks in my path.

    And they are in the business of selling products.

    Its not just a cash grab.

    When word got out that you could buy an MSDN subscription and kit out your whole office with Office, Servers, and Windows workstations for chump change, the system got badly abused.

  162. It's just a rant by Anonymous Coward · · Score: 0

    As a Java, C#, C++, O'Caml, Erlang, F# developer... the article a complete rant!

    There is no need for microsoft to re-invent the wheel for fast low-level programming.

    They should simply make that C++ code open to .NET, but oh! They have!

    It's C++/CLI. Managed pointers + raw memory! .NET is not Java, it's a platform for many languages.. and one of these is low-level, another is functional, another is scripted, another is an OS command-line. And it all integrates together nicely.

    So don't rant! get your facts and do your research.

  163. Re:What part of "Undocumented" is hard to understa by Simon+Rowe · · Score: 1

    if you want to make money, you work on Windows. Do you, then what have I been doing the last 15 years? Eating fresh air? Work with a steaming pile of excrement if you wish, don't imply that there's no choice out there.
  164. Future is the new tobacco. by Jesus_666 · · Score: 1

    I just thought of a particular anti-smoking spot and how it might apply to Microsoft:

    The prairie. A herd of sad-looking Steve Ballmers run across the plains until they finally come to an abandoned campsite where several notebooks lie on the ground. In the background plays "Where Have All the Cowboys Gone" by Paula Cole.

    Fade to black. Text appears: "The future kills." Another line: "Let's just pretend it's 1995 again, okay?" And in small font at the bottom of the screen: "This ad was sponsored by Microsoft."

    --
    USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
  165. Seems unlikely by Xest · · Score: 1

    MSDN is a pretty good documentation base, in fact it's one of the best there is out there. I doubt very much they'd have what's widely known to be awesome documentation for large parts of their technologies and then just simply not apply them to others.

    Do you have any evidence of your claims?

    As it stands Microsoft have made pretty good improvements in a lot of areas this last few years, whilst Vista was indeed a failure, Office 2007 was the most major step forward in Office application productivity and usability in well over a decade. Visual Studio is still moving forward, getting better and better with each iteration which is impressive when it's already arguably the best development environment out there. Similarly languages and libraries like C# and .NET are also improving well. The Zune was a flop but the Xbox 360 whilst having it's fault is a definite improvement over the last iteration - certainly they still have a significant lead on 3rd place at the moment even if they're not able to keep up with the Wii.

    To suggest Microsoft lacks direction is rather misguided, clearly many departments at MS do have clearly defined direction and goals and are both following and achieving these goals. You can of course debate if the overall company has direction, but their various product lines are only loosely coupled so an overall direction other than convergence which is on most tech. companies minds isn't really feasible. Certainly to say all departments at Microsoft lack direction though is clearly outright false.

    1. Re:Seems unlikely by dcam · · Score: 1

      I think Microsoft is still capable of producing good products, but they are getting rarer and rarer. And they tend to be produced by a single team, it doesn't filter through to the rest of the organisation.

      Frankly I'd say that it was arguable whether 2007 is much better than 2003. In a number of areas, 2007 is more of a headache, and that is not just a comment on the new UI. MSDN is also pretty good, however it sometimes a little ... odd. For example shifting all the members out of the pages for the object. 90% of the time, the members are what you are looking for.

      The number of standout products released by Microsoft is diminishing. There was a point where I could point to quite a few, Office 2003 was great (as was 2000), Win 2K3 is very solid and was the first Microsoft OS upgrade that took *less* resources, SQL Server 2000 was nice.

      Now? Vista sucks, even studiously avoiding it I've had to use it a couple of times and it is buggy, slow and un-intuitive. I've only used Office 2007 for powerpoint and that has been unpleasant, besides the whole ooxml thing sours that somewhat. SQL Server 2005 is less promising than I had hoped, but again only limited experience. Visual Studio 2005 is nothing really special - there are times when I consider that moving to textpad and compiling from batch files might make more sense. There ain't much coming out of Redmond that either interests or excites me these days.

      Oh, and evidence? Go back and read my about documentation for the EU. Remember that Neil Barret was unable to get working code with this first release of the documentation. There was also a Microsoft employee commenting here about the amount of staff time being spent documenting this stuff for the EU.

      --
      meh
  166. Re:Same techniques 15 years ago? Not just Windows. by BruceCage · · Score: 1

    Please don't use "commercial" as a synonym for "non-free.". It is certainly a shame Trolltech itself misuses the term commercial on their website to indicate proprietary software.

    --
    Perfect is the enemy of done.
  167. Re:What part of "Undocumented" is hard to understa by eric76 · · Score: 1

    So, you problem is that programmers make use of undocumented API calls. While "undocumented" does not always equal "unsupported", using them is just plain stupid. Whether it is Windows, Linux, MS-DOS, DR-DOS, OSux using the system in an undocumented/unsupported way is well, U N S U P P O R T E D. Don't blame the OS or the those that coded it, blame those that wrote against the API in an unsupported way.

    You aren't real familiar with developing Windows software, are you?

    Many undocumented API calls are there precisely to give Microsoft an enormous advantage over their competitors. Microsoft uses them for their software but would rather everyone else be unable to implement a number of features.

    If you want to compete with Microsoft and with other software written for Windows, using undocumented API calls is pretty much a necessity.

  168. Then again, doing it badly did make them rich by cheekyboy · · Score: 1

    at the end of the day, if your crap code made you millions who cares, the guy who is coding slowly
    and documenting everything in fine detail is still working on his alpha build while ms posts they v2 release.

    Sure its half assed, buggy, cheaply implemented, but the public wants this shit fast.

    You are there to make the business money, else you might as well work for education institutions or writing 8 year out of date lectures.

    Sure design is important, but you dont need to go too deep and design for a 15 year life span. Most marriages dont last that long and
    who plans their relationships like a designer ?

    --
    Liberty freedom are no1, not dicks in suits.
  169. Where are the users? by heffrey · · Score: 1

    I personally find that food and shelter costs money and as a writer of desktop applications that means I like to target a platform that has some users. And that's where the debate ends for me.

    Anyone who writes commercial desktop apps and decides which platform to use for any other reason than that is plain crazy.

  170. how much MS bashing can you fit in? by clint999 · · Score: 0

    P has a fair question. I mean, I was a great programmer 15 years ago... Has anything really changed?

  171. How is that relevant? by Peaker · · Score: 1

    Who cares what .NET calls? The discussion is about the API's - usable and elegant, or ugly and inconsistent.

  172. Closed source is at fault by Peaker · · Score: 1

    The reason we need binary-level processor compatibility - is actually closed-source software.

    Its yet another way we are being harmed by it.

    If Opensource was prevalent and closed-source rare or never used, then we could have better processors and more competition without worrying about that kind of compatibility.

    1. Re:Closed source is at fault by daveime · · Score: 1

      Pardon my french, but what a load of bollocks.

      How would the open-source version of an 8 or 16 bit processor instruction be any better than the closed-source version ... which is probably something like 0DA0 ?

      In fact, how can assembler ever be considered closed source ? Ever heard of a disassembler mate ? With the exception of meaningful labels for pointers and subroutines, ALL assembler is inherently open.

      The whole problem is about trying to maintain backwards compatibility for 30 year old hardware ... nothing to do with your desire to climb on your OSS soapbox at every opportunity.

    2. Re:Closed source is at fault by Dog-Cow · · Score: 1

      Do you not know the difference between software and hardware? Or are you just completely unable to read?

      Either way, you come across as an idiot. Good work.

    3. Re:Closed source is at fault by daveime · · Score: 1

      I'll post the comment I was replying too, as you it seems are the ones with comprehension issues.

      If Opensource was prevalent and closed-source rare or never used, then we could have better processors and more competition without worrying about that kind of compatibility.

      Now, please explain how opensource / closedsource makes a damn of difference when talking about PROCESSORS (WHICH ARE HARDWARE DEVICES) !!!

      The poster seems to be advocating that one version is better than another and somehow achieves the miracle of "working" for a KN bit processor, when only an N bit processor currently exists.

      Now go away and troll somewhere else.

    4. Re:Closed source is at fault by Corporate+Troll · · Score: 1

      I don't think he meant it that way. The open source solution is superior because an open source solution could technically be ported to a new platform. Try that if you only have the binary (closed source) and the company and/or people who made that binary are gone. This is a typical situation in the business world. A mission critical binary-only application needs to work on the new computer.

      So, yes, an 8-bit application in open source, could live through the 16-bit, then 32-bit and 64-bit stages by porting/recompiling it. A closed source program.... well, virtualisation is your only option there.

      Also, many open source programs are ported to many different CPUs because you can. A closed source program will be only compatible with the CPU that the programmer chose. Look at NetBSD (or Debian, which has quite a few supported platforms) and an application running on x86 is likely to run on PPC, ARM or SPARC. Heck, my OpenBSD CD's come with one source and binaries for four platforms!

      So, yes, open source, is naturally better suited for "survival".

    5. Re:Closed source is at fault by Eivind+Eklund · · Score: 1
      Software can be written portably, including being portable to processors with larger words - it's not actually that hard.

      The point here is that open source software is generally agnostic to what processor it runs on - it's just a recompile away - while closed source software is generally strongly tied to the underlying processor family (because you can't recompile easily.)

      *In practice*, I have had to abandon most of my closed source software when switching processor families; I've been able to keep most of my open source software.

      So, yes, closed source software is in the way of switching processors - because processors are mostly interesting as ways to run software.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
  173. Re:As a dev who makes his living writing for .Net. by cerberusss · · Score: 1

    Then add the insane cost of a legit SQL Server license on which to deploy it.
    What's stopping you from using another database?
    --
    8 of 13 people found this answer helpful. Did you?
  174. I had to say it... by CxDoo · · Score: 1

    After being mored in the ugly world of superb performance & endless possibilities of C++, Win32, occasionally MFC, OLE/COM and other Three Letter Abominations, I have finally seen the light.

    C# is beautiful.

    --
    "Blah blah blah." - [citation needed]
  175. Re:As a dev who makes his living writing for .Net. by JayAEU · · Score: 1

    Right, but since last fall they're making you pass numerous assessment tests every 2 years to gain or retain your partner status.

    It's also interesting to note that they refer to the registration process of getting a Windows Live-ID as being "profiled"...

  176. Re:Qt (& GNOME) by 12357bd · · Score: 1

    I don't know as much about GNOME, but it shares a lot with Qt, so should not be excluded.

    It's not GNOME, it's KDE.

    --
    What's in a sig?
  177. "The disillusionment I feel is incredible." by Futurepower(R) · · Score: 1

    Quote from the Arstechnica article: "Microsoft's opportunities] have been systematically squandered through a combination of ineptitude, mismanagement, and slavish adherence to backwards compatibility. The disillusionment I feel is incredible."

    Quote from the comment above about possibilities for the future: "That's the theory anyway. Whether MS manage to pull it off is another question."

    Why would things be different in the future? Microsoft's record is 22 years of adversarial, below standard, anti-standards behavior. How much money would Microsoft have made if it didn't have ignorant customers and incompatible file formats?

  178. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  179. I lied by ncryptd · · Score: 1

    Actually, I haven't used Display Postscript on Mac OS X -- it doesn't exist. I have used it in my (extremely limited) experience with NeXT -- but that's another story.

  180. You just keep on doing that... by argent · · Score: 1

    I personally find that food and shelter costs money and as a writer of desktop applications that means I like to target a platform that has some users.

    Even desktop Linux has "some users". Mac OS has *lots* of users. Not as many as Windows, but thanks to people like you there's less competition FOR those users. So you keep writing for the clumsy Windows APIs and fight it out with the other long-suffering Windows developers. That leaves more money on the table for the folks who actually care about their customers.

    1. Re:You just keep on doing that... by heffrey · · Score: 1

      Why do you think that I don't care about my customers? Without them my business would not exist.

      It's a good point though that there are more software markets available on Linux and Mac.

      As for me, my business is writing finite element (FE) software for offshore engineers, 99% of whom use Windows. Obviously it doesn't take much imagination to decide which platform to support.

      As for the APIs, what APIs? We use Delphi, the best kept secret of Windows desktop writing and the VCL does a pretty good job of hiding the low level stuff. And of course it's native code so the numerical FE stuff runs quickly too.

  181. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0

    > Rather than FUD'ing around, I suggest downloading the Moma tool and which will check whether an application is compatible with Mono.

    Nice theory, in practice my applications check fine against Moma but they use up 100% CPU and the GUI is unusable because half the GUI elements are "outside" the window.
    Using Gtk# to fix the GUI issue is not an option either, because it only exists for mono and .Net 1.0 but not .Net 2.0 or later.

  182. I don't see it by golodh · · Score: 3, Insightful
    Where exactly did Microsoft "drop the ball" with developers?

    According to the article there are three types of developers: (I) the ones who bang Excel macros and Access databases together with VB (not very many), (II) in-house developers for large companies who program in whatever language is in demand (the vast majority), and (III) craftsmen-programmers who look for clean orthogonal programming tools and also program in their spare time (a few).

    The article goes on to argue that Microsoft catered very well for categories (I) and (II), and not at all for category (III.)

    Since I believe that the programmers who make stand-alone third-party applications mostly belong to category (II) I absolutely don't see how or why Microsoft supposedly "dropped the ball" for any developers except category (III). The article points to the messy API's of Win32 and the shadows that projects unto the .NET framework. Ok, fair enough, but who cares?

    Not the end-users and not the managers. And they're the ones who determine where the money, and hence the bulk of the development effort goes. That means that what end-users actually see and care about, their _applications_ will continue to be in plentiful supply for MS-Windows.

    Sorry, but the author will have to do a lot better to convince me that Microsoft shot itself in the foot as regards development effort. It's not the smartest thing that Microsoft could have done to alienate the craftsmen-programmers but I don't see how that puts a dent in their business.

  183. Taksbar at the bottom. by krischik · · Score: 1

    Actually the Task bar is at the bottom because Apple threatened to sue otherwise - A task bar at the top would have looked to Mac like.

    And this also

    Martin

    1. Re:Taksbar at the bottom. by EvilIdler · · Score: 1

      But..my OS X dock is at the bottom of the screen. Menus and systray-like stuff are at the top!
      There is no taskbar on Mac as such; either the program's launch icon in the dock turns into
      a button you can push to activate its hidden main window, or you use spaces/Exposà to find stuff.

  184. LOL- Out of touch by Anonymous Coward · · Score: 0

    Guys, I'm a grid developer (mostly Linux and Solaris) and I know this is so out of touch.

    Developers/Companies are pulling out the Java/Linux monkey works at an alarming rate and replacing it with ASP/ADO/.NET. Companies that I would have never thought would go MS are going MS- Goldman, Lehman, Dow Jones. Penetration is huge in FiSrv, Healthcare, and manufacturing (big suprise there). ASP.NET, WCF & Workflow are big movers. Right now there is a boom in SHAREPOINT/PORTAL dev as well.

    The biggest reasons seem to be rapid development and end-to-end integration. MS seems to have hit it right with WPF/WCF/WWF.

    I found this be true even more in the EU...

  185. Troll/Flamebait by Burnhard · · Score: 1

    I call troll on this post as the OP obviously hasn't used WPF, VB.NET, C#.NET, etc. Yes, coding against Win32 APIs has always been bad (MFC didn't help much), but Microsoft have definitely picked the ball up again with .NET. It's a joy to use from a developer point of view. As I switch between .NET and C++/Win32/COM projects, I feel well qualified to judge. Perhaps the OP should broaden his experience away from Win32, unless he wants to debate legacy support, which is where this thread is going to end up.

  186. Re:use the same techniques you learned 15 years ag by ciggieposeur · · Score: 1

    Pre-emptive multitasking was still 2 years away.

    Unless you ran Linux (Slackware).

  187. Qt license incompatibility by tepples · · Score: 1

    Qt also has copyright license compatibility problems. If you're not selling copies of your program to recoup the expense of a license to use Qt in proprietary software, your entire program has to be under a GPL compatible license. Unfortunately, a lot of icon sets and the like are under a Creative Commons license such as CC-BY, which imposes conditions that are incompatible with both versions 2 and 3 of the GNU GPL.

  188. Incredible... by thesteef · · Score: 3, Insightful

    I really should leave this one alone, but I just can't. This article is so unbelievably biased, it is truly amazing that a site like ars allows a series like these to exist. The person who's written this series has obviously no real programming knowledge on any platform.
    Moreover the way he drops in his little falsehoods borders on intent. Each and every paragraph contains one or more blatant falsehoods. Going through all of them would take way to much time.

    Apparantly this Peter Bright's tried to build some winforms stuff (and failed) and he's tried to open a file (and failed somehow). These are his two major arguments against the platform.

    Let's try to introduce some facts. First of all the winforms library is indeed not multithreaded. This goes for most windowing libraries. Swing is an example that springs to mind but there are many more. Making it totally thread safe would introduce a lot of overhead, making everything much slower than it needs to be. If you need to use additional threads, there are well documented ways to do this. Maybe Pater should try it... Second of all the winforms library is a very very small part of the total api. Just saying there's lot of little other things, without going into any detail is a cheap way of making a bad point. No API is perfect but I would say given the alternatives out there it's easily one of the cleanest and well thought out api's I've used in the last 6 years. Furthermore, it the author could get his head out of his nether regions he might look in to WPF, WCF, C# 3.0 etc etc. All technologies that put .NET lightyears ahead of the competition right now. Writing these little misinformed articles is not going to change that.

    This person comes across as a total beginner. You know the type, probably programmed some stuff in c++ and now thinks he's a guru on everything. In reality he's an armchair programmer, writing knee yerk articles because he coulnd't get his file to open. A lot of programmers (myself included) go through a phase like this, most move on and start seeing the bigger picture. I guess some don't and just write articles about it.

    I know the average slashdotter probably won't care about an anti-microsoft hit-piece but if you're confident about using linux or mac-osx (both of which I think are perfect alternatives btw) ask yourself, why would you need lies and falsehood's to attack the 'competition'.

  189. Mac OS X 10.5 Leopard dropped Classic support. by Anonymous Coward · · Score: 0

    Even on PowerPC.

    Are you sure you've tried the old game recently?

  190. You mean... by vilms · · Score: 0

    "The proof of the pudding IS IN THE EATING." ?

    http://www.worldwidewords.org/qa/qa-pro1.htm

  191. its not hard, it easy by cheekyboy · · Score: 1

    how many solutions require weird code ? etc... very few, unless youre writing drivers or OS utils , most
    things are as per usual, and could be done ion .net or cygwin, or vbasic, or even perl.

    Win32 aint hard, its easy, even to make a game.... read the docs , do the code, if it all fails, read the docs again, and do higher
    level work arounds, not low level hacks, or try to work out some simple solutions, KISS.

    Google is your saviour, if it doubt, just ask it.

    --
    Liberty freedom are no1, not dicks in suits.
  192. Clueless author by Anonymous Coward · · Score: 0

    I've developed on Irix, Solaris, SunOS (yeah), AmigaOS w/Intuition, C64 (yeah), QNX (me personal favorite), and Windows. .NET 2.0 and Windows Forms in particular is about the easiest way to make a GUI I've seen. The form designer actually round trips (design to code, code to design view). There is no comparison between MFC and Win32 and the .NET 2.0 framework.

    The .Net framework provides a fairly complete and easy to use API. Things just work. And it runs across all the windows versions and takes care of 64-bit issues.

    The author of the article has no clue.

    And if you are a die hard C++ dev like me, you can continue to use C++ in the form of C++/CLI and mix managed and unmanaged code.

  193. Windows Development has one *huge* advantage by sqlrob · · Score: 1

    VMWare.

    I do dev on both Windows and Mac, across multiple versions of each. The early versions of what I have to deal with can easily trash a system. On Windows, I have one box, problems happen, I click "revert", done. Win 2K, XP, Vista are all a click away.

    On the other hand, I have a pile of Macs, (ppc/intel/10.4/10.5). I'd like more (ones without dev tools, more patch variations, more installed app variations), but it's not feasible without more Macs and more bootable drives. Being able to run OS X in a VM without any hacks that change the environment would be a huge help.

    1. Re:Windows Development has one *huge* advantage by VoidEngineer · · Score: 1

      There are some inroads happening regarding running OSX on a VM, particularly with OSX server. Costs you an extra license, but it's what people have been asking for. Check out the VMWare site, and search for OSX server. Here is a link: http://blogs.vmware.com/vmtn/2008/01/virtual-leopa-1.html

    2. Re:Windows Development has one *huge* advantage by sqlrob · · Score: 1

      Server doesn't help as much when you need to test on the client systems that happen to be regular users.

      I don't even care if it has to run on Macs or consumes a license. I want to have virtual client environments that I can roll back and take snapshots of various patch levels.

  194. Re:Same techniques 15 years ago? Not just Windows. by johnsonjii · · Score: 1

    That's why I use butterflies.

  195. Re:As a dev who makes his living writing for .Net. by Anonymous Coward · · Score: 0
    Would you care to make up your damn mind?

    .Net is portable to *nix.

    Microsoft never claimed .net was portable
  196. Re:What part of "Undocumented" is hard to understa by Anonymous Coward · · Score: 0

    Certainly, Qt for instance would be a good choice indeed.

  197. Re:What part of "Undocumented" is hard to understa by Anonymous Coward · · Score: 0

    Yeah and following your reasoning, will never be different...

    So just follow the masses, make money, don't ask questions, suffer in silence.

    It is not like we can do anything about it right?

    Hope you never live in a dictatorship.

  198. I live here. by kcdoodle · · Score: 2, Insightful

    Hurrah!

    Make it buggy and as difficult as possible. That just gives me more work. I can always find a way to make my code work. Even if I have to write some assembly, or a port redirector. Call me a hacker - I don't care, that's a badge of honor.

    If it were easy, anybody could do it. Keep it up Microsoft! You will keep me working and making a good wage for years to come. I like doing crossword puzzles too, and making things work on various Windows/Browsers/whatevers is just another puzzle people actually pay me to solve. It is all very cool. Just depends how you look at it.

    --

    - I live the greatest adventure anyone could possibly desire. - Tosk the Hunted
  199. Apple menu... by klubar · · Score: 1

    Unlike on the Mac where the "About this Macintosh" is the top most item on the left most tool bar--which I use about once per quarter. At least under Vista, I might have to reboot my machine once every couple of weeks.... I guess you could use the About this mac to check if someone stole the memory out of your computer... or accidently upgraded the processor while you weren't looking. (Assuming, they you have one of those rare macs that the processor is upgradable.)

  200. Re:As a dev who makes his living writing for .Net. by Dr_Barnowl · · Score: 1

    The only way to get locally installable documentation is in fact either to buy Visual Studio, or get an MSDN Library subscription Completely untrue. Microsoft have allowed free downloads of the full MSDN Library disk image since May 2006.

    The Express editions of Visual Studio are quite usable. SharpDevelop is also very good. As another poster points out, you could get away with developing with a text editor because the compiler is in the framework, and the required tools are in the (free) SDK.

    The "Pro" editions of VS give you the following three things

      * The ability to have project groups consisting of mixed project languages
      * Additional code templates
      * The ability to run plugins

    Of those three, the third is the most useful, but none of them are essential. You can write code that does anything the .NET framework can achieve with Notepad. $1200 is probably a good price for VS Pro though.

    Of course, your MSDN license does cover the ability to develop against virtually any product that MS makes. If that's your bag, that's very useful.

    And I completely agree about version control. I wouldn't touch TFS with a bargepole, despite any of the good things I've heard about it, firstly because it's a closed-source product and I don't want my source history locked up in a database which I can't read the source for, secondly because I still have the emotional scars from having to administer a VSS repository. For the first reason, I also do not recommend any other proprietary VCS. I recommend SVN, although I'm rapidly becoming very fond of Bazaar.
  201. Re:Qt (& GNOME) by MickDownUnder · · Score: 1

    Heard of Silverlight? .NET technology, you can target, different browsers, platforms desktop/mobile.

    A recommendation I would make to the author of this article is - stick to commenting on what you're an expert on.

    Having vague understandings about a major technology (with thousands of experts out there) simply doesn't cut it if you're going publicly dismiss it.

  202. Re:What part of "Undocumented" is hard to understa by gsslay · · Score: 1

    Windows has always been annoying to develop on No it hasn't. Believe me, in the days when everything was done in C, the same language the OS was coded in, it was a joy to code.

    But practically every move that Microsoft has done since then has been a mistake. Some of them sounded like good ideas, but they've still turned out crap. The point the article makes about the Vista GUI just illustrates it. The UI is a total freaking mess because it is a reflection of the chaos going on within Microsoft and within the OS.

    I remember when there was such a thing as a Windows GUI guidelines manual and people followed it. Because it made sense and it made things easier for developer and user. And if you didn't follow it people complained, and rightly so. Now every idiot with a copy of Photoshop thinks they can design a new UI for every application, and it's up to the user to learn their new "skin". And more worryingly, many of these idiots work within Microsoft.
  203. Re:Same techniques 15 years ago? Not just Windows. by ceoyoyo · · Score: 1

    Ditto with Cocoa. You can write an app using cat and compile it with make files and bash scripts if you want to.

  204. Emulation would work fine... by igb · · Score: 1

    ``It happened because of you - users, who wanted to run your current (old) applications on new platform.''

    And run them at native speed, too. There's no reason why a 64-bit processor running at 3.0GHz shouldN'T run elderly 8 and 16 bit applications via a SoftPC style instruction-by-instruction emulation, and do so orders of magnitude faster than the original 12MHz (or whatever). But no-one ever grasped the nettle in Microsoft to say ``the performance gap between today's processors and the old ones which need all that glue is such that emulation still gives several orders of magnitude''.

    ian

  205. They both have issues... by mbessey · · Score: 1

    The latest versions of XCode are more user-friendly than previous versions, but feature-wise, Visual Studio has XCode beat by a mile. On the other hand, I find the XCode has the major bases covered quite well, so I don't miss most of the omissions very much.

  206. My perspective as a Java Developer by vingilot · · Score: 1

    I recently (a year ago) switched to c#/wpf from java when I switch jobs. I have developed enterprise java applications (both swing and web front ends) since the start of java. As a language and api i find myself liking java far more. I'm sure part of this is familiarity, but mostly java's api is organized better.

    Eclipse is hands down the best IDE i have used, VS sucks for base features-- we do use resharper which makes it way better.

    Now here is where Microsoft rules: UI developent. WPF is so much easier to work with than anything java has to offer. Designing UIs and maintaining them with java is a royal pain. Microsoft makes it quick and easy. Sure, it may not be perfect, but it gets the job done.

  207. If it's all pirated by Anonymous Coward · · Score: 0

    why write any software?

  208. Re:As a dev who makes his living writing for .Net. by BBandCMKRNL · · Score: 1

    Your theories might be nice for hobbyists, but serious big businesses buy professional commercial tools. Back when I was a developer on Windows the MSDN license my company had was over $5,000 per seat per year. Serious big businesses don't pay over $5K/year even with Team System. In addition, most serious big businesses aren't MS-only shops and want a single repository/test/bug suite for all their distributed platforms. In this case, they pay significantly less than $1K/year for their MSDN subscription, plus whatever support fee for the repository/test/bug suite of their choice.
    --
    Without the 2nd Amendment, the others are just suggestions.
  209. Re:Yeah, yeah by sjames · · Score: 1

    What's wrong with recompile? Four little characters typed on a command line m*a*k*e. It's just not that hard.

    That said, you haven't been paying much attention to the underlying APIs in Linux. For example, ld.so has supported symbol versioning for some time now. Programs compiled after that was implemented request to be linked with a particular version of the symbols they use at runtime. That means the function calls can be re-done as needed with shims to handle things for the old version.

    Notably, the whole symbol versioning system went in so smoothly that many applications developers aren't even aware of it.

  210. Re:What part of "Undocumented" is hard to understa by Foofoobar · · Score: 1

    Java, Perl, Python applications and are not software?? News to IBM, Sun and all the others who do call them software. You seem to be the only retard in the room to disagree with them.

    --
    This is my sig. There are many like it but this one is mine.
  211. Re:DRIVERS: MS POOCH SCREWING by pjrc · · Score: 1
    Third of all, the DDK (now called the WDK) can be downloaded using the directions on this page (no pooch screwing necessary!)

    Yes, you are right. Thank you.

    At first I went there, clicked on both of the links claiming to be downloads and neither were. But then I read the instructions, which pretty much means you have to sign up on their connect site. No big deal.

    Regarding your assertion that I can sign my own driver, so far everything I've seen says that only works in test mode. I'm certainly going to try, of course. But from what I've read on the MSDN documentation, the signature needs to be from microsoft or via a certificate I would be issued from a trusted CA (or a cert of some sort mass-deployed by an IT dept, which isn't the case for general windows PCs). Honestly, the $250 (x # of OS versions) for WHQL is probably cheaper than anything from Verisign.

    The really sad thing is I only need this for an INF file that simple tells windows to load its own USBSER.SYS driver when I plug my device in. The whole idea behind USB device classes is the USB device follows a standardized protocol to allow the operating system to load a generic class driver, rather than need a specific driver. Microsoft does it with HID (keyboard, mouse, joystick, etc) and Mass Storage classes, but not for CDC (Communication Class). Their USBSER.SYS has been included since Windows 98, but on every version an INF is required to get it actually loaded. Sadly, even just a single text-only INF with no binary driver at all still requires a signature to load without a nasty warning, and to load at all on 64 bit Vista.

    Mac OS X and Linux mange to load their CDC class drivers just fine when a CDC class device is plugged in.

  212. Re:Qt (& GNOME) by scorp1us · · Score: 1

    I was speaking from a functional perspective. Perhaps, I should have said GTK, where Qt and GTK are the toolkits that implement their respective desktop environments.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  213. Speaking of UI... by Anonymous Coward · · Score: 0

    ...how about making the reply buttons here on /. smaller?...

  214. Re:Same techniques 15 years ago? Not just Windows. by rodgertq · · Score: 1

    Or ObjectiveC and NeXTStep.

  215. Re:What part of "Undocumented" is hard to understa by Anonymous Coward · · Score: 0

    Now... how is this different than last year, or the year before, or ten years ago?

    Where were the development shops full of programmers all running Eclipse on Linux ten years ago?

    Java is the single most widely used language to develop applications today (check any job search site and check free/open-source projects: Java rules the day).

    And you know what... Linux is perfectly fine to develop Java apps. So is OS X as long as you don't want to mess with the latest Java version (which software development shops usually don't do).

    In my view that has changed.

  216. Better Title by imyy4u2 · · Score: 0

    How Microsoft Dropped the Ballmer with "Developers, Developers, Developers, Developers!"

  217. Not that anybody will read this by now, but... by amplt1337 · · Score: 1
    FTA:

    Each group develops their own UI widgets in their own style and they simply don't care that it's a total mess. They don't care that I have to learn new ways of doing the same task just because they couldn't be bothered to do things the same way as other applications. You know what? I don't care either!

    I've never encountered a Windows app whose UI confused me at all. They're easy. You explore a bit, you figure it out.
    I was generally persuaded by this article; it started off strong and had some specific, pointed criticisms to make from the perspective of someone who cares about programming and dealing with a consistent environment.

    Then the last page degenerated into fussy UI-wank. Look folks -- look-and-feel is nice, and MS absolutely should've done more to enable consistency. But I don't use software for the pretty eye candy (certain gaming titles aside -- which, surprise!, have no expectation of consistency with the rest of the OS).

    About the only place I do care is that the default Swing look-and-feel is just plain hideous. But whatever; I can cope with that even so.
    --
    Freedom isn't free; its price is the well-being of others.
  218. Re:What part of "Undocumented" is hard to understa by ckaminski · · Score: 1

    The big one that I remember is spare file support, which I think was for SQL Server.

  219. Use the same techniques as 15 years ago? by spiffmastercow · · Score: 1

    Afraid not, friend.. The fact that MS is constantly changing its development environment is one of its primary flaws in comparison to *nix environments.

    And honestly, I kind of enjoyed programming on MS products 15 years ago.. DOS was nice because I could access the hardware directly. Windows has always been, and will always be, a pain in the ass to program for.

    Although I will say that Visual Studio is a nice IDE. Too bad they feel the need to change the languages all the time and drop support for older versions. I don't see a real advantage of VS2008 over VS6 if you're programming in C++.

  220. Re:As a dev who makes his living writing for .Net. by LordMyren · · Score: 1

    Microsoft also never claimed the sky is blue asshole

  221. Re:As a dev who makes his living writing for .Net. by Kalriath · · Score: 1

    You got me on that, I forgot that with the introduction of Express editions that you could now download the whole documentation. That means another of the original points is refuted.

    Note also that the "other poster" who mentioned that you could use alternative IDEs because the compilers are in the framework is me, so I do know that.

    And yes, I think we all remember "SourceSafe Database Corruption Day" - every week or so you'd need to restore it from the previous day because the damn thing corrupted again.

    --
    For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
  222. Re:DRIVERS: MS POOCH SCREWING by Kalriath · · Score: 1

    No, the certificate doesn't need to be from Microsoft - but you're right that self signing only works in test mode (you even have to set Windows into a special mode for it to work!).

    You can sign with your own certificate issued by one of the CAs who are members of "Microsoft's special CA club" (there's an MSDN page for it, see my other post in this thread for a link to it). Minimum cost of that from what I see is about $300. Also, to get WHQL to sign it, you first need to execute an agreement which requires - surprise! - a Verisign code signing certificate to complete.

    --
    For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
  223. bad name for topic - Russian reversal due by rootpassbird · · Score: 1

    "Developers began dropping their balls with Microsoft!!"

    In Corporate America, Ballmers drop YOU!!

    --
    Hackers have long memories. It works both ways.
  224. dude is an unhappy camper by asefati · · Score: 0, Offtopic

    there are happy campers and there are unhappy ones...it seems that this guy who wrote an article is one of the unhappy campers!

  225. Matrix Quote by Anonymous Coward · · Score: 0

    Some rules were meant to bent, others broken.

  226. Lets face it... by Anonymous Coward · · Score: 0

    Open source promotes Competition.
    Closed source promotes Collusion.

  227. MacOS 9 by krischik · · Score: 1

    That little anectode is from the Mac OS 9 or prehaps Mac OS 8 times. And of course it all about visuals - that it looks to similar.

    And if you drag the start bar to the top you will see that layout etc pp. make more sense.

    Martin

  228. Re:As a dev who makes his living writing for .Net. by mycall · · Score: 1

    You can purchase a F1P-00118 Visual Studio Professional W/MSDN PREMIUM 2-year SA for $1800 ( softwaremoreUSA.com). So it is cheaper than you say. 2008 is a great year: Windows Server 2008, Visual Studio 2008, SQL Server 2008 (the 1st in the next 3-year cycle)

  229. Re:As a dev who makes his living writing for .Net. by mycall · · Score: 1

    You should try Windows Server 2008. It is a big more of a memory hog (due to caching) than Windows Server 2003R2, but it is very nice. Try it and see if it does better for you (it did for me). Check out http://blogs.msdn.com/vijaysk/archive/2008/02/11/using-windows-server-2008-as-a-super-desktop-os.aspx

  230. Microsoft APIs have never been well defined by dgallard · · Score: 1

    I wrote about the 'Microsoft problem' in 1999:
    > http://www.linuxtoday.com/news_story.php3?ltsn=1999-08-04-012-10-NW-SM

    I spent years (in the 1990s) programming
    to the Windows API. I eventually concluded
    that the APIs are not understood by anyone,
    not even anyone at Microsoft, much less
    completely specified.

    I would venture to say that for any given
    component in the MS API hierarchy, there is
    no one, not even the original programmer, who
    can provide a complete description of the
    semantics and API of that compenent.

  231. Wow...after reading all of these comments... by ibsteve2u · · Score: 0

    Many of these comments, and certainly the article itself, sound like a bunch of "glass house" programmers all whining about how the user shall do it this way and this way only .

    lolll...or like those people who always end up on the condominium owner's association because they know exactly what they like and so you will adhere to their desires, and to hell with your children's hope for a sandbox to play in.

    Furthermore, I note how quick the people I refer to are to stereotype (yes, I know: "Pot calling the kettle black") others, unsubtly reserving what they view as the most brilliant and capable stereotype for themselves.

    My criteria for software is simple:

    • It shall not crash itself, other software, or the O/S
    • It shall not unintentionally interfere with or modify the functionality of other software or the O/S
    • It shall provide the output or action that the end user requires
    • The end user shall be able to use the software painlessly
    • It shall meet all of the aforementioned goals in a timely manner

    And I don't care how those four items are accomplished.

    After reading the "my way or the highway" comments from the OS X (including the article's author) and Windows camps, Linux increases it lead in my eyes as the last refuge of the developer who values "faster and better" over "cookie cutter".

    The speedy adoption of the PC out there in userland in the '80s and '90s owes much to that "my way or the highway" attitude that pervaded the "glass house" and stifled creativity, speedy solutions, and innovation...but it would seem that the approach is struggling to return.

    lollll...I've always wondered if all of those "glass house" people, in their bitterness over losing their kingdoms, turned to writing virii, worms, and trojans aimed at Windows just so that they could bring such a situation about.

    The King is dead - long live the King!

    --
    Orwell: "In a Time of Universal Deceit, telling the Truth is a Revolutionary Act"
    1. Re:Wow...after reading all of these comments... by ibsteve2u · · Score: 0

      "Four" items? Huh...I must have overwritten my counter...

      --
      Orwell: "In a Time of Universal Deceit, telling the Truth is a Revolutionary Act"
  232. Re:As a dev who makes his living writing for .Net. by ckaminski · · Score: 1

    Fanboi-izm aside, to all those performance junkies who bitch about Java being slow...

    Eclipse vs. SQL Management Studio 2005.

    You can't tell me interpreted environments don't suck, whether branded Microsoft or Sun.

  233. Re:Same techniques 15 years ago? Not just Windows. by Brandybuck · · Score: 1

    I know cat was a joke, but compiling with makefiles is *normal*. You don't have to be able to write the makefile, but any programmer worthy of the name had better be able to type "make" (or nmake) at a command line. (At least for C/C++). You don't have to be in love with the command line, but you do need to be able to use the basic tools of the trade. Otherwise you're like a professional NASCAR driver who can't drive a stick.

    I know some "programmers" who are literally unable to write a Hello World program without a fully stocked Visual Studio. It is very sad.

    --
    Don't blame me, I didn't vote for either of them!
  234. Re:Same techniques 15 years ago? Not just Windows. by ceoyoyo · · Score: 1

    Cat wasn't a joke. You can do it. Sometimes it's handy. Embedded systems sometimes run a telnet server and compiler but for some reason don't have an editor.

    I meant you can WRITE make files, and use them to manage your project. That's also handy sometimes. XCode is a decent IDE that will manage your project and compiles with the click of a button. But underneath, it's a GUI front end for gcc. If you prefer make files then you're free to use them.

  235. Re:Same techniques 15 years ago? Not just Windows. by NuShrike · · Score: 1

    Apparently, this guy hasn't heard of Carbon (aka clib and BSD) where a lot of OS X stuff still gets programmed.

  236. WOWOW does exist actually by Anonymous Coward · · Score: 0

    I recall reading on some forum that someone ran Windows on Windows on Windows. I think he did it with some trick in Windows 3.0 because of its ability to run in separate modes, like real mode and enhanced mode or something like that. And it was on a pretty old machine too, like a 386 with not much RAM.