Win32 System Programming
|
Windows NT vs. UNIXIt should not be news to anyone reading this file that people have very strong feelings regarding the relative virtues of UNIX and Windows NT. I'll give my views here; naturally, there will be a lot of disagreement. My opinions are based on 35 years in the computer industry (in short, I've seen it all), dealings with advocates of both systems, a brief stint in the "open systems" business, recent dealings with mainframes, and more. Nonetheless, my statements are personal opinions, which undoubtedly reflect some personal bias. In some cases, I've said things such as "to the best of my knowledge" which, of course, means that I have not checked my facts thoroughly. If you have a response to these statements, please send them, and I'll attempt to incorporate them in this section. First, assume that Windows 95/98 is not a part of this discussion. Bear in mind, however, that Windows 95/98 provides the very cheapest Win32 platform, although Windows 95/98 will not support some Win32 functionality (such as security). Opening Position StatementAs programmers and users, we hope for several things:
The actual technical form of the API is secondary, assuming it is functionally complete. Nonetheless, the API should possess intangible properties such as simplicity, minimality, consistency, elegance, and so on. Accordingly, Windows NT and Win32 come out even or ahead in almost every category (we could argue about the intangible properties!) although many voice concern regarding the last point. There is one major exception: UNIX still has a leadership position as an enterprise or large departmental server. Let's take up several dimensions of this, one at a time. Win32 vs. POSIXWhat more can be said about the Win32 API in comparison to the POSIX standardization of the UNIX API? Not much, but here is a summary:
The Very High EndUNIX (and other operating systems such as VMS and MVS) still has an advantage at the high end (enterprise servers and the like) and, while that lead may be eroding, it should endure for some time. Here are the primary reasons, in my opinion, and these reasons have nothing whatsoever to do with inherent properties of the underlying APIs (people have tried to tell me that it does, but it's hard to understand the argument).
It is ironic, of course, that as recently as the early 90s, UNIX was still regarded as a technical, flaky, not-quite-ready operating system that could not possibly run an enterprise. Suddenly, around 1994 or 1995, however, UNIX became the high-end enterprise server ready to take on the mainframe. NT is sometimes criticized in the same way that UNIX was in 1990. I've heard it phrased as follows: "UNIX threw away its blue jeans and sandals, got a haircut, and put on a three-piece suit." Therefore, the UNIX evolution proves that if Microsoft and its partners have the will and the money to invest (I believe that they do!), in a short time (3-5 years) they will be able to satisfy the most demanding enterprise requirements. There is an additional factor here. All but one of the major U.S. UNIX vendors also support NT. These vendors may find it more effective to downplay UNIX, or to force it into a niche, over time. Departmental ServersI see figures that show the server market evenly divided between UNIX and NT (about 40% each) with the remaining 20% going to other systems, such as the AS/400. Some of the high-end advantages may also benefit UNIX here as well, but, again, Microsoft can invest to narrow or remove any of these gaps. The DesktopI've heard several CEOs and other high-level executives of UNIX vendors all but concede the desktop to Windows. On the desktop, UNIX seems to be confined to high-end technical or very specialized workstations. Of course, the Mac still plays a small desktop role. (Mac OS, to my knowledge, does not really support multiple processes, much less threads.) Nearly everything a desktop user might want is cheaper, with more choice, under Windows than UNIX. This is certainly true for "personal productivity" applications (word processors, spread sheets, and so on), application development tools and environments, etc. Embedded Systems, Palmtops, etc.Windows CE seems to be gaining in this space as well. I do not have any knowledge of UNIX's role, if any, in these smaller systems. An Illustrative AnecdoteThe combined experiences of some of my clients illustrate many of the advantages of Windows over UNIX. These clients build and sell applications that were originally supported on a single vendor's UNIX system. (It was too expensive to support an application on more than one vendor's system.) The UNIX decision was generally due to either history (development was started before NT was available), concerns over NT performance, or even existing programmer skills. The UNIX-only, single platform vendor, product strategies led to several problems:
Needless to say, not everyone will have similar experiences, but this illustrates the challenge the UNIX world faces. Reader CommentsMike Innes, corresponding from the UK, would like to put in a word for UNIX, particularly at the high end. Mike's message is as follows: "I think the technical (low-level) issues are valid, although I think the biggest issue around the enterprise is scalability. NT currently will not scale to the same level as UNIX, partly because of the OS, but mainly because of the hardware. Even NT5 is not predicted to scale to the level of a cluster of 4 Sun Starfires. [JMH Note: I assume that the hardware limitations really refer to clustering limitations, as NT runs on Digital Alpha servers, which consistently provide leadership performance.] "The Wolfpack cluster is at least a generation behind UNIX clustering. We may start to see the peak of SMP soon, which means that hardware such as MPP or NUMA will have to be at the forefront if we are getting little or no advantage from faster processors. UNIX will be at this cutting edge for at least the next ten years, if only because of the UNIX momentum. The low-end systems will not be UNIX; this is definite, I think if we are going to have a revolution on the desktop then Java will do it, for mainly of the same reasons that UNIX has taken off: the standards, compatibility and more importantly multi-vendor. Can you see any reason why a Java/browser based thin client can't be used in most companies? [JMH Note: I said five years, but the outcome probably really depends upon Microsoft's commitment and strategy.] "As I learn more about NT/Win32, my belief that UNIX is a superior OS gets stronger. However, I am often pleasantly surprised by NT/Win32." Mike further reports that there is an article in Network News, 22 April 1998, that Microsoft is using a Sun Solaris server to run its Hotmail service. There is talk in the article Mike forwarded that thread performance is part of the problem with NT. Perhaps they ran into the Critical Section issue, or one of the other thread performance issues illustrated by the sample program, described elsewhere, or is it possible that they really need a large address space? [JMH Note: I have not verified this. More information would be appreciated.] Jeff Krob sent me the following comment, "I work with both Windows NT & *NIX (UNIX & Linux) and my biggest view of differences is in the Command Shell. Here *NIX wins hands down, and I think this is one of the BIG things keeping some *NIX types from going over to MS Windows. As far as I know, MS Windows only as 2 shells to do any scripting from (including Perl) where any of the *NIXs have 3, 4, or even 5 to choose from. Also, the primary shell in MS Windows has progressed little from DOS 6. "Now, if you are a system admin who does a lot of work from the command line or with scripts, and you have to choose between a system which has a weak, lame shell or one with a strong, rich shell...which would you choose (all else being equal)? In my opinion, Microsoft has missed the boat on this. They are so "windows-oriented" they ignore the shell and try to convert *NIX users by saying, 'You don't need the command line, everything is in the windows!' Of course, the *NIX users all laugh at that. If MS could stop forcing things on its users and start listening to what the "high-end" users would want (where they are trying to oust *NIX with MS Windows), like porting/adding Bourne, C, Korn or some shell like that to MS Windows, I think they would have a much easier time and a better chance of dislodging *NIX. However, I fear, the MS Command Console may be getting more "Macish" as time goes on; it's only there if the system crashes or it won't boot so you go to the command line for emergency repairs... how sad." |