dan@idis.UUCP (Dan Strick) (10/11/83)
This flame presents a point of view different from that presented in the summary in net.unix-wizards of the article in the current issue of the magazine, The Dec Professional. My opinions are based on my experiences working as a systems and applications programmer on UNIX systems for the last seven years and as an applications programmer on a few other systems (IBM TSS and MVS; DEC TOPS-10, RT11, RSTS, and RSX) at various times during the last twelve years. I admit that I am biased in favor of UNIX. For good reasons. Another Opinion: UNIX Realities by Daniel Strick 1. UNIX is a good environment in which to develop and run applications. UNIX is not oriented towards any one application at the cost of any other. The file system has no difficult to use and even more difficult to avoid record management system or special file formats. Simple problems have simple solutions. Take a good look at a DECUS catalog sometime. Many of the programs available from DECUS are rather complicated utilities that would be trivial to implement or even unnecessary in a UNIX environment. Some operating systems include subroutine libraries that provide support for indexed sequential files and similar notions. Such subroutine libraries are only occasionally valuable. Few (i.e. much less than 50% of) applications benefit from them. It is sometimes nice if all programs can communicate directly with one of these rare applications (by reading the fancy files), but this benefit is overrated. The specialized application can include a translation utility. Using such subroutine libraries does have some drawbacks. Since there is no standard for such libraries, programs that use them are not portable. Since the libraries are intended to be usable by as many applications as possible, their specifications tend to be quite complicated (kitchen sink design). This makes them difficult to understand and to adapt to specific applications. Problems of medium complexity are often more easily solved with exclusively home grown software; and the solution may be portable. Unix is basically a multiple language system. UNIX systems have historically included large numbers of languages and other useful utilities that are seldom available for other operating systems. The failure of many binary UNIX vendors to include traditional UNIX utilities in their UNIX derived offerings is a failure of the vendors and not a failure of UNIX. Major hardware vendors do not have a better record. Remember the bowling ball. Layered products, such as forms management packages, or dbms can in some cases be acquired only from the hardware vendor, forcing a problem in support. Have you ever tried to get a large vendor to fix a serious problem? I have. Unless your problem affects most of their other customers, you might as well not try. The usual software maintenance contract entitles you to submit Software Problem Reports and to get new major versions (if any) of the software without having to pay additional fees. If you have submitted an SPR, the fix may or may not (usually not) have been made in a new version. Most applications can also run efficiently on UNIX systems. The exceptions are things like real time process control. Other operating systems may provide complicated system facilities that have the potential for improving performance but are seldom used because they are so complicated and are often not even accessible to applications programmers writing in high level languages. Does your FORTRAN I/O library provide control over disk block clustering or asynchronous I/O? UNIX automatically does things like disk file read ahead and write behind. As a result, UNIX applications run efficiently even if the application programmers lacked the time (or the knowledge!) required for tuning. 2. With UNIX, you always get a UNIX person (i.e. wizard). With other operating systems you get a five foot stack of manuals that always seems (after about a week of furious perusal) not to cover the important stuff. If you pay extra, you can have the manufacturer of your hardware send over an employee to help you set up your system. If he had understood software he would have been in software development or software support rather than customer support. Other operating systems also have wizards. The big difference between UNIX and the other operating systems I have used is that the other systems make doing even slightly nonstandard things very difficult. It is often impossible for non-wizards to do things not specifically foreseen by the designers of non-UNIX systems. UNIX is so simple that even average users can perform magic. This leaves UNIX wizards with time on their hands so they end up making unnecessary customizations to their environment which require nontrivial support. Perhaps they should be restrained. 3. UNIX systems look alike. I switched from UNIX V6 on a pdp11 to UNIX 32V on a vax without having to spend weeks or months learning the new system. It only took me a few hours to figure out how to start making unnecessary customizations to the 32V kernel. I think I can move to any reasonable approximation of a V6 or later UNIX on any kind of hardware and start getting useful work done immediately without reading any manuals first. There are such things as severely hacked UNIX systems. If they have mutated so far that things which used to work no longer work (e.g. ed commands don't behave like they used to), then these systems are no longer UNIX systems. It would be useful if there was a UNIX standard so that one could take advantage of obscure operating system facilities without sacrificing portability. I believe people are working on this. 4. UNIX does not break. There used to be a problem with broken file structures way back in v6 and v7 days. It seems to have gone away. I have not had to perform surgery on a disk pack since file structure writes were carefully reordered and the fsck program was developed. This was done several years ago. 5. UNIX is user friendly. UNIX tends not to enforce mysterious restrictions that can only be understood and circumvented by wizards. UNIX is so simple that even casual users can successfully use the system in ways unforeseen by its designers. There is a class of users who don't use their computer system enough to become familiar enough with it to benefit from the flexibility of the UNIX user interface. These people are easily satisfied by simple menu systems set up for them by others. There are commercial menu systems available for UNIX, but they have not been generally accepted because they are not universally useful. Show me a command system that even an inexperienced user can use, and I will show you a command system that only an inexperienced user would want to use. It would be nice if there were consistent conventions for specifying arguments to system programs. UNIX is pretty good about such things, but it could be better. I bet that if UNIX commands were made more consistent, the people who are now complaining about inconsistency would instead complain about the lack of stability. You can't win. It would be convenient, especially for users of binary UNIX distributions, if the manuals were more extensive. People are working on this. I fear that brevity (which is a virtue) will suffer and that only speed readers will be able to digest the result. 6. UNIX look-alikes usually don't. Big deal. I bet this isn't the first time a salesman lied to you. Dan Strick [decvax|mcnc]!idis!dan