[ Back to Kevin's Homepage | Back to Ramblings and Brain Farts ]

Unix vs Windows fundamental differences

IMHO Unix and Windows have two fundamentally different backgrounds, and the differences are mostly incompatible with each other.

Unix is a building block architecture. The kernel handles basic hardware I/O and inter-process communication, while independent daemons do all of the other work - nfs, samba, telnetd, ftpd, sendmail, httpd, and everything else. The usual method for transferring data from one program to another, or saving the data out to files is a plain text file. This means that anyone can look at any of the system configuration files without any special tools. Sure, there is some hiding of configurations, but that's generally limited to "what is the path to the config filename" and not "what binary file do I have to edit..."

This approach is fundamentally flexible and compartmentalized, but has a steep learning curve; awk, perl, cut, sed may be intuitive or learnable to a programmer, but definitely not so to an end-user.

Windows is a monolithic gui-only interface. If you want to automate something, you're probably out of luck. However, Windows has led to very interesting and good integration, since a visual desktop is something that Unix has always lacked. X Windows is a good protocol and screen rendering engine, but there has really been little work towards a good, free end-user desktop interface. The only Unix based system to successfully create a usable interface (imho) is Nextstep, but that's an effectively dead platform. Probably the most useful innovation from the Windows world is the integrated development environment. Here, your editor, debugger, compiler are all the same interface, so you can add neat features such as chroma-keying, which you need a code parser to do. Why duplicate the code parsing code into two separate programs when you can glue the two programs together and share the code?

Summary - The two approaches are fundamentally opposite in nature, so it's really difficult to say that one can and will replace the other, because they're designed for two totally different uses.

created - 1999.03.16 kjw
last modified - 1999.03.16 kjw