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.'"
"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.
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.
I am 'this' close to jumping ship. I use Ubuntu on machines at home and find it fast and clean, even on older hardware.
.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.
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
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/ .
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.
"how one developer migrated from Windows to OS X"
.NET
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:
Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
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
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.
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.
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).
*dhut* *dhut* *dhut* The System is Down! The System is Down! The System is Down"! *dhut* *dhut* *dhut*
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.
No concept of what .NET really is, misleading users.
.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)
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
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.
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.
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.
Craft Beer Programming T-shirts
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.
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.
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.
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.
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.
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
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.
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.
" 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 ?
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.
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.)
Yup. But there's still one thing you can't do elegantly when programming for OSX
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
You use the start menu to shutdown? That's so '95.
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?
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.
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.
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?
.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.
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
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. :)
For anyone who has done programming between good languages and MS languages will know he's spot on
.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.
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
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.
.NET:
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
- 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.
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.
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.
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.
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
You shutdown, that is so 2000.
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:
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
You're missing the 20% 'why on earth is it shutting down now' times.
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 intoOff the top of my head we have, for example:
Win32isms are abundant.
Further, your arguments that somehow cutting edge enhancements like Vista's new TxNTFS should magically appear inLet'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?
Damn - what a list.
.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.
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
- 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).
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.