There are a lot of good comments above, but a complete answer would (and probably does) fill an entire book.
I grew up with both of these operating systems and consider myself an expert in both of them (except Vista, which I don’t use and can’t speak credibly about), so here’s my perspective:
The Mac was engineered to be an easy-to-use computer. Initially the Mac was designed in the era when everything was proprietary and non-interoperable. Others from the era were the IBM-PC, the Ataris, the Commodores, Acorns, Kaypros, Tandys, Texas Instruments, and a bunch of weird European stuff.
The IBM-PC was still mostly safe from cloners at this time, as it was still new and mostly everyone was happy pushing their own technology. IBM did something no one else did, though. In order to rush to the market, they used off-the-shelf, well-documented technologies for everything and purchased their operating system – DOS – from a third party, Microsoft, hence eventually MS-DOS. MS-DOS was written by another company, and was heavily based on CP/M, something already found in many corporate environments. With the IBM name, it’s natural that companies started gravitating towards IBM for “serious” work.
Now that the currents were flowing towards IBM, other companies (notably Compaq) realized that with off-the-shelf, well-documented hardware, a PC could be cloned. The only proprietary element was the BIOS, which even today is an archaic program fairly easily replicated. And PC-clones exploded. That’s how we used to refer to them, “PC-Clones,” not Winboxen. From that, we’ve arrived at the current “PC” to mean a Windows box, and even though a “Mac” is a personal computer, it’s not a “PC” (even though it is).
Apple wasn’t sitting on its haunches. The Lisa flopped, but the original Mac became a hit. It was everything that a PC wasn’t. PC’s were still DOS based. You needed a lot of training. You weren’t just going to blithely put one on the receptionist’s desk. The Mac booted up to a training program that showed you how to use a mouse, how to point and click, and how to do everything that you could in the scope of the then-limited operating system. It truly was revolutionary. (Yeah, yeah, Xerox PARC and all that – it was still revolutionary in the sense that it was actually brought to market.)
By this time, though, everyone else but Apple, IBM, and the early cloners were gone. IBM was IBM. It was rich. Apple was loaded with the revenues from the Apple-]['s. Commodore and Atari had been well off, but had bad management and died out. This pretty much left IBM and Apple the only platforms in the game.
So now he have to platforms – the PC and Mac. How did they get to be so different? You can see that their very roots are different. The Mac’s graphical user interface merely progressed. When Microsoft decided to copy the Mac’s API, they still had the problem of DOS to consider and to support. Windows through 3.11 were still DOS programs, graphical shells atop the “real” operating system.
Macs and Windows both had their problems along the way.
The Mac was limited by its early 80’s software design philosophy. It was never designed for multiple programs to run at the same time, because with memory prices and hardware speed, who could have figured? So the OS was modernized gradually, breaking only a small percentage of programs with every upgrade rather than all of them. This was tolerable, as software vendors would eventually update. But it was a lot harder to adopt the very core of the OS to new technologies, such as memory protection and pre-emptive multitasking, because the OS was never designed for it. Nevertheless, for a whole lot of reasons filling other books, Apple finally released Mac OS X. It was a reset of sorts. A fresh start. It literally broke 100% of all software written for the Mac prior to it. Except… as a program included in the operating system was a virtual machine called Classic. It allowed most pre-Mac OS X software to execute thinking it was running in Mac OS 9. For “native” programs, vendors could adopt their legacy code to “Carbon,” which was a subset of the Classic API that played well with a modern OS.
Windows wasn’t limited by the Mac’s early limitations. For example due to the processor, through some processor trickery it was possible to execute old, cooperative multitasking programs under a preemptive scheduling system. It offered a basic memory protection scheme. It could fake processor execution modes to allow legacy stuff to run, as long as the API was still supported. Part of Windows’ complexity today is the continued support for most of the legacy API’s. Although NT (including XP and Vista) were “fresh starts” they were still progressive in nature at the API level, not revolutionary like Mac OS X.
So where do we find ourselves now? The Mac OS had a complete re-start back in 2001, but with two decades of user interface experience to make it correct from the start. Windows’ restart wasn’t at the API level, and still supports two decades of legacy programs. If I want to play Warcraft II on my Intel Mac, I have to run it under WINE or in Parallels under Windows.
Maybe the next generation of Windows could use a re-start, i.e., literally segregate the “classic” virtual machine from the new Windows core. Probably end up with Windows running atop Linux, which takes us back to the Mac, which, in a lot of ways, is like running the Mac OS atop Linux, except of course it’s Darwin which is a BSD Unix variant. Now it becomes apparent that the “new” Mac OS doesn’t really date from 2001 at all, but from the early 1970’s, with its roots in true multi-user machines. Windows was kind of cobbled together along the way in that respect, as “personal computers” were just that – personal – with no history of multi-user computing, only tacked-on fixes.
I think that at the core level, the Mac OS is probably a little more simple than NT. But I’m not a kernel engineer, so take that opinion for what it’s worth. The next level up are all the low level API’s. The Mac is probably more complex here, in that it supports the whole POSIX standard. Going up from there, the higher-level API’s are probably richer in Mac OS X, and not as convulated as in Windows. Remember that Windows supports a whole lot of legacy API’s. With the Mac’s 2001 reset, there’s Carbon and Cocoa, and that’s it.
Then there’s the whole vendor angle, as RJKugly mentions. Vendors deliver what people expect. If there are no high expectations on the Windows platform, then you get what you get, like Windows installers and files scattered all over the place. When you expect a drag-and-drop install on a Mac, even the mighty Microsoft delivers Office for a Mac as a drag-and-drop install (really!). Although, that’s going out the window lately. Even Apple software is typically installed with an installer these days, and files are all over the place. This mostly has to do with being a multi-user machine, though, not for historical reasons like on the PC.
I have a stupid little program for Windows. It uses an installer because back when I built it, everything that was “serious” needed an installer. It uses the registry, because that’s what’s expected. It uses shared libraries (dll’s) because that’s what’s expected. In retrospect they were all stupid decisions on my part. I should have done it the Mac way, but then again, would novice users want to drag-and-drop, or are they more comfortable with the “normal” Windows way? I also have a stupid little program for the Mac, done the Mac way. Completely self-contained, drag-and-drop, and the preferences file is exactly where Mac users know to expect it, and labeled in the Apple way (com.b***.tidy) for easy trashing. I could have built an installer to look like a heavyweight, but that would just piss off most Mac users.
Sorry to be so long.