--- Begin Message ---
- Subject: Re: NT vs Unix -- reformatted
- From: davecook@home.com (David M. Cook)
- Date: Mon, 21 Dec 1998 08:04:39 GMT
- Newsgroups: comp.os.linux.advocacy
- Organization: http://www.kernel-panic.com/links/devel.html
- References: <367DD5C8.AFEC14AA@hal-pc.org>
- Xref: newsr.Belgium.EU.net comp.os.linux.advocacy:253720
Reformatted for readability -- DMC.
On Mon, 21 Dec 1998 04:59:52 +0000, Bob Canup <rcanup@hal-pc.org> wrote:
I wrote the following letter to an editor at EDN magazine; I think the
members of this newsgroup might find what it has to say interesting.
Mr. Wright,
Allow me to briefly introduce myself: My name is Bob Canup. My first
exposure to computers was in 1966 at the College of William and Mary. If I
remember correctly the machine was an IBM 360-30, a FORTRAN on punch cards
system. I have been the chief design engineer at two different computer
manufacturers, and at least one of my designs held the world record as the
fastest microcomputer - back in the pre IBM pc days. I have designed many
embedded systems, and written in excess of 100,000 lines of code in over 20
different computer languages. I have intentionally worked in as many fields
in the computer industry as I could in order to learn as much about the
field as possible. I have experience in production, assembly, test, systems
administration, networking, OS development, PLC's and have done a variety of
designs from floppy and hard disk interfaces, dynamic memory, operator
interface, cache, SCSI, video sub systems, monitors, keyboards, to
processors and both analog and digital I/O systems.
Years ago I would have agreed with your evaluation of NT vs Unix; alas I can
no longer do so.
Computers are very difficult to understand well for a very simple reason:
every time that you look at a computer it has changed; it can be a fax
machine one moment, and a printer or a calculator the next. My estimate is
that it takes most people about 20 years of experience and work with
computers to really understand them. My own views and understanding of
computers have changed significantly over the last 20 years. Indeed
computers are the single most complex technology which man has ever created.
Consider for a few moments attempting to diagram the Internet. Before you
could even complete such a task the system would have changed from what it
was when you started. Because they are so complex it takes about as long to
really grasp computers as it does to become an adult.
I have found it useful to explain computer operating systems by drawing an
analogy between various operating systems and books.
DOS is a primer:"See Dick run, run Dick run."
Windows 3.1 is a Casper the Friendly Ghost comic book. "Hi I'm Casper and I
want to be your friend."
Windows 9x is a Batman the Dark Avenger comic book: More serious and meant
for a more mature audience.
Windows NT is the "Classics Illustrated" version of Unix.
Unix is a serious piece of adult literature, a novel or a physics reference
book, written by adults, for use by adults.
Comic books are very important to children for a very good reason: children
lack experience, and it is difficult for them to form a mental picture of
what written words mean. A comic book, however, gives a child both words and
pictures to go with them; giving them more understanding than the words
alone could give them.
If you will think about a GUI for a few moments you will realize that what
is attractive about it to most people is that it gives them images of
processes going on inside a computer, so that people who lack experience
with them can have some understanding of what the computer is doing.
I would like to dispel some myths about computer interfaces. GUI's are NOT
easy to use, GUI's are easy to LEARN. Because a GUI is easy to learn it
creates the illusion that it is easy to use. In fact GUI's are mostly
roadblocks to performing tasks. As an example: open up Explorer in an NT
system and copy all of the *.c files in a directory to a floppy disk. How
much of a struggle is that to do? Notice how much you have to fight with the
computer to get it to do anything. As you grow more experienced with
computers you have less and less patience with fighting with the machine,
and more and more interest in getting things done.
Here is how I would accomplish the same task with the Unix command line:
cp *.c /floppy
Under a really good Unix shell like Bash I wouldn't type all of that, I
would type enough to let the machine understand what I wanted done and then
hit the tab key to let it complete the rest.
A Unix command line interface is hard to LEARN, but easy to USE once
you know how to use it.
Because the Unix command line is difficult to learn people make the error of
thinking that it is hard to use.
I found it much more difficult to install a modem on an NT system than I did
on my personal Linux system. Under Linux the install consisted of making a
symbolic link from from /dev/cua3 to /dev/modem. Under NT the install was a
15 minute job of wrestling with the computer, involving at least one reboot
and much profanity.
Yesterday I saw an NT system put up an irreparable 'Blue Screen of Death'
upon boot up simply because someone took a sound card out of the machine.
The machine refused to boot until the sound card was reinstalled. If a
trivial peripheral like a sound card dies, it can keep an NT system from
booting.
I think that you will agree with me that Microsoft knows much more about
computers than just about anyone that you know: they are the largest
software firm in the world. I am also sure that you have the automatic
impression that most people have of thousands of programmers sitting at NT
workstations churning out software at Microsoft- but that impression is a
false one. Microsoft is now, and has been for years, a Unix house; Microsoft
development is done on Unix systems. From their perspective Windows XX is
"chumpware" meant for mass consumption, but not anything they would use
themselves. This ought to be shouting a very important message to you.
If you need further messages from Microsoft consider this one: when
Microsoft created MSN they of course used NT; here was a public display of
their software and they could hardly afford to fall flat on their faces by
using anything else. Besides, they could get NT for free - rather than
spending millions of dollars on Unix licenses. At least they tried hard for
several weeks to use NT before they were forced to abandon the project as
hopeless; MSN is now run on Unix.
Stop to think for a moment: if you were Bill Gates, would there be any way
you would let that happen? Microsoft has billions of dollars to spend, and
thousands of programmers who literally have NOTHING better to do than fix
whatever is wrong with NT. After all Microsoft has stated that they are
betting the entire future of the company on NT. Yet they went to Unix, and
have made no attempt to go back to NT. WHY? The only possible answer is that
Microsoft discovered that NT has a fatal design flaw, at its very core,
which they are powerless to fix.
The feature for which Microsoft has received the greatest critical praise in
the computer press is the registry: a built in centralized database of
settings for the operating system and application programs. There is no
question that this is a much cleaner appearing approach than the hodge -
podge of initialization files in a Unix /etc directory. In general a
database is a much better way of accessing information than unrelated ASCII
text files would be. However, as Microsoft discovered, there is one place
where a centralized database is not the correct way to do things: at the
heart of an operating system.
A Unix system consults the files in the /etc directory only when a service
or program requests the information they contain. NT however must scan the
registry before launching any program or service - lest the registry have
some settings which are critical to the operation of the program or service.
As a result Unix spends very little time doing anything having to do with
the /etc directory. NT on the other hand spends more and more time searching
and updating the registry as the system ages and grows.
If you wish to see how dramatic the impact on performance the existence of
the registry is install a fresh copy of NT on a system and then add Computer
Associates' Unicenter TNG Framework. Even if you never run the TNG framework
every other program on the system will be slowed down because of the data
added to the registry. This is not because there is anything wrong with
Unicenter TNG, it is because it, quite properly, uses the registry exactly
as the Microsoft specifications require. I know of no other operating system
where simply adding a program to the system slows down the operation of
every other program on the system, even if the added program is never run.
An NT system starts off its fastest the day it is installed and slows down
the more it is used. Adding Visual Basic 6.0 professional to my NT system (a
process which expanded the registry by 5 megabytes) caused my 266 MHZ K6-II
to start performing about like a 386-20.
If performance were the only thing which the existence of the registry
impacted, that would be bad enough, but there is another much more serious
problem caused by the existence of the registry. In a Unix system if you
happen to corrupt one of the files in the /etc directory you might lose the
service to which the file refers. In an NT system if you corrupt the
registry, you lose the entire operating system.
Much of the real world stability of a Unix system comes from the fact that
you are unlikely to corrupt anything in the /etc directory: the files are
rarely changed, and being ASCII text files they are easily fixed. In NT on
the other hand, not only is the registry soon the largest file in the
operating system, it is also the one which is changed the most often. The
result is that the registry is THE most likely file to be corrupted in an NT
system. In addition, a keyed database, such as the registry, is inherently
more fragile than ASCII text files. The end result is that in real world,
day to day, use NT is much slower and more fragile than a Unix system.
In essence NT is like a heavy weight boxer with a glass jaw; he looks great
in sparring and on paper, but when he gets in the ring with another heavy
weight he quickly gets knocked out. NT can never be a contender. The
existence of the registry is the fatal design flaw which Microsoft uncovered
when they attempted to use NT as a mission critical operating system. They
are powerless to fix the problem because were the registry to be removed or
changed it would break all of the programs written to Microsoft's own
specifications.
Simple surface examinations of the OS such as might be conducted at a
magazine will never expose those kinds of flaws, and NT looks like a great
choice after a surface examination. However, like a beautiful but heartless
woman who is only after your money, NT is not something to which you want to
be married.
I would now like to address the question of why there is so much chaos in
the Unix world: why can't things be standardized? To answer that question I
have to propose a scenario: think about how much simpler things would be in
the real world if all of the doors in the world operated the same way; that
is that they all had the same standardized door handle and latching
mechanism. Once you learned how to operate one door you would know how to
operate them all.
Of course that is a childish thing to wish for: the latch which is
appropriate on the door to your bedroom is obviously inadequate to secure a
pressure door on an a jet airliner, or a water tight hatch on a cargo ship.
Adults soon realize that consistency is not something which is achievable in
life, given the sheer volume of things, people and events in the real world.
Suppose that there was a standardized way of talking to people: "Hello, I
see from your name tag that your name is Ellen. My wife's name is Ellen.
Ellen, are you my wife? ... How are you today Ellen? ... I am fine, thank
you for asking. Ellen, the house is on fire, please call the the fire
department. Please gather up our belongings. I will tell our children about
the problem. Hello, I see from your name tag that your name is Timothy. My
son's name is Timothy. Timothy are you my son?... Timothy, how are you
today? ... etc." Once again I think that this example shows how childish a
wish for consistency is.
Just as you don't speak to any two people in the same way - depending upon
their personality and level of knowledge, you cannot expect an adult
operating system to interface to all programs in the same way. Programs have
a 'personality and sophistication level' which differs from program to
program. Sometimes, such as when laying out a printed circuit board, a GUI
is the best way to talk to a program, sometimes a menu or a set of command
line options is faster and easier. Adults are very good at sizing up the
sophistication and knowledge level of the person to whom they are speaking
and adjusting how they talk to them. In a similar fashion computer adults
are able to talk to a variety of different program interfaces without
thinking about it: here is the personality of this program, and here is how
you talk to it.
To those who complain about the complexity of Unix I can only offer this
advice: "That's life, grow up".
Bob
--- End Message ---