hjm@cernvax.UUCP (hjm) (05/02/88)
Dear Rest-of-the-World,
I've been following the rantings and ravings of the UNIS v. VMS flame-show
and I feel that I want to put in my share, but rather more of an oil-on-water
type comment.
I am a VAX sysmanager and a UNIX user, and, quite frankly, I find both
systems far too complicated for my liking! I find the UNIX style
flexible and most annoying because of the alt-control-shift-meta-coke-
bottle featurism that is evident throughout. I also find VMS has some
really nice bits, but again it's too damned complicated.
(An aside: everyone else spends their time arguing about the applications that
run under the two OS's, but noone seems to know about how the two things are
put together. If you are going to argue, try telling the authors of the
applications that, and don't burn up my time with junk. If you want it better
or different, then WRITE IT the way you want. Both systems allow you to do
what the hell you want, so do it and don't gas off.)
This is really a cry from the heart addressed to the rest of the world
just asking for a simpler life for all of us. Next time you are going
write or design anything, try thinking about the following items FIRST:
1) Everyone wants code that is efficient and fast, compact, easy to use
and understand, is bug free and is as flexible as possible. Agreed?
2) The secret of good design is to make the right generalisations. If
everything can be treated in the same elegant and efficient fashion
then the following rules apply:
o Less special cases implies less IF statements;
o Less IFs implies smaller code;
o Less IFs implies less testing effort and bugs;
o Less IFs implies easier understanding; and
o Less IFs makes the things more flexible and general.
3) So, avoid "features" at all costs. Maintain orthogonality between
functions and also between data, and KEEP IT SIMPLE.
4) Make life easy for yourself by writing less code and thinking before
you design, not after or during.
5) If you're writing something low-level like the core of an operating
system, or the lowest levels of a network system, or a filing system,
then don't try to write all of your users applications for them in the
kernel. For instance, try to reduce the number of fundamental
functions that you provide to a minimum, and choose them so that the
application programmer can do what he/she/it wants (remember, only they
know what they want!). Push everything into the application,
especially error handling, as only the application knows what it
wants to do about errors (like arithmetic overflow etc.).
Enough of MY ranting ... just to say that both VMS and UNIX let you do want you
want if you're prepared to do it for yourself, which is how it should be. If it
isn't what you want, then write it, but please make a good job of it, or we'll
be saying just the same things about YOUR program on a news board somewhere!
< *** Flame off *** >
Phew,... Just a few of my thoughts to try and make the world a:
F E A T U R E F R E E Z O N E
(Usual disclaimer about this being my own personal vendetta and not my v. nice
employer's etc. etc.)
Hubert Matthews
CERN
Geneva
Switzerland
--------------------------------------------------------------------------------
VMS is a reg. tm. of Digital Eqpt. Corp.
UNIX is a reg. tm. and well known footnote of AT&T.