Over the past few months I have had the opportunity to take an Operating Systems class at a leading University. During that time, I have been once again confronted with the whole Unix (*nix, Linux, Mac OSX) versus Windows argument. It became quite apparent to me during that time that the professor thought that Unix was better than Windows. It also became apparent to me that he didn’t really understand Windows. Take, for example, our discussion of filesystems. When referrring to Unix, he talked about inodes. When referring to Windows, he talked about FAT32. When talking about memory management, he wasn’t sure if Windows still used segments. When discussing UI programming, he showed some code with the most basic Windows application (create the window, run the message pump, handle windows messages). The problem was, he saw the message pump and didn’t know what the code was doing. If you don’t understand that, you really don’t have a right to be criticizing Windows. The flip side is also true. If you don’t understand Unix, you shouldn’t be criticizing it either.
I have come to the conclusion that most “Windows is better” or “Unix is better” arguments at the wholistic level come down to familiarity. I have had discussions with a friend who is a BSD guy. Most of his criticisms are outdated or just plain wrong. I suspect the same is true to for my criticisms of Unix. For a given task, one may be better than the other. Taken as a whole though, both can obviously get the task done if you are familiar with them. The difficulty is that each is hard to understand so mastering both is really hard. Also, neither is standing still. People still argue that Windows crashes a lot (it did in Windows95 but not in WindowsXP) or that Linux can run on a 486 (it can, as long as you don’t use a modern UI). These arguments are outdated. Often the criticism “Windows can’t do X” or “Unix is hard to make do Y” boil down to “I don’t know how to do X on Windows” or the corollary on Unix. It is an argument of familiarity rather than actual ease of use.
When I started the class, I hadn’t done much Unix work for a long time. It was painful trying to compile, debug, etc. I still think that things like Windbg are more advanced than DDD/GDB but it is less painful now than it was. Likewise, I’ve come to understand some of the Unix file structure and command line tools like vim and grep which makes getting around less difficult. As I become familiar, it is harder to think “Unix Sucks.” I can still point to many places where it does, or where it feels like it does, but I have to be careful that these aren’t stemming from merely my ignorance. I would challenge any Linux/BSD/Mac OSX/Unix/Solaris afficianados out there to do likewise.