Arrghman said:
It's a question of design more than reliability, these days.
Intentionally
designed that way? No. But that way as a direct
result of the design? Yes.
It's ridiculous how often I find myself realizing how Windows does something on my machine at work, and then saying, "Wow, what a stupid design decision that was."
The problem is that Windows is a single-layer system. All the functionality is integrated tightly with the GUI these days. Which, granted, is better than having it be a shell over DOS like it used to be; but it still causes problems.
In contrast, OSX is a three-layer system. All the real functionality is in the Darwin and/or Mach kernels; the GUI interfaces tightly with that, so there's no real layering slowdown, but since the interface can focus on
being an interface rather than actual functionality, everything just feels a lot smoother.
An example. When a program wants to create a new process, on Windows it must call the CreateProcess function, which takes about 10 arguments. Most of them are NULL 99% of the time, but they're there anyway. Furthermore, you have to set up a structure to pass as one of the nonoptional arguments, even though it usually doesn't contain any useful information either.
To do the same thing on a Unix-based system like OSX, you call the fork() function. No arguments, no nothing. So much simpler it's a bit ridiculous. It even gives you the option of continuing the same program in two processes-----Windows *forces* you to start an external program when you call CreateProcess.