heintze@fmcsse.enet.dec.com (Siegfried Heintze) (10/18/90)
Having used VMS for many years and being terribly ignorant of the different flavors of U* I would like solicit comments from programmers experienced in both VMS and U*. Specifically I would like to know what makes U* a better development environment. (I assume there is someone out there who is certain U* is a better development environment.) As I understand it, the biggest difference between the capabilities of VMS and U* is that when you get U* you get many important tools for free whereas in VMS you have to pay extra. VAXset is an example of a set of tools for VMS that includes LSE (a fully programmable language sensitive editor vaguely akin to EMACs editor using templates - I think), PCA (Performance Coverage Analyzer, a profiler) and SCA (source code analyzer - I don't know if U* has a counterpart). SCA has been extremely useful because it is integrated with LSE and allows you make very complex queries about your source code like "find all the occurences of variables of type x whose name matches the pattern *jj*h in the set of routines whose names match j* in call tree x ..." So, assuming VAXset is part of the VMS environment, what makes U* better? (Feel free to answer in the context of "money is of no concern" as well as "money is significant"). Sieg
mjr@hussar.dco.dec.com (Marcus J. Ranum) (10/18/90)
In article <16438@shlump.nac.dec.com> heintze@fmcsse.enet.dec.com (Siegfried Heintze) writes: >So, assuming VAXset is part of the VMS environment, what makes U* better? >(Feel free to answer in the context of "money is of no concern" as well as >"money is significant"). As a pure development environment, none is better than whatever one you're most familiar with. When I did [uck!] some coding on PCs, I used a toolkit that hid the PC from me by making it look Unix-like. If I do development on VMS, I'll try to work from within Eunice. Not because one or the other is inherently *better*, but because Unix is what I know best. [I happen to have learned Unix in preference to everything else because the way it works resonates nicely with the way I think] This argument cuts both ways, of course. The big benefit I think a lot of people see in Unix is that it offers the *potential* for a high degree of portability (inter vendor, inter platform, inter O/S - sometimes) if due care is taken. This makes a *BIG* difference if "money is significant" is the answer. mjr.
ckp@grebyn.com (Checkpoint Technologies) (10/18/90)
In article <16438@shlump.nac.dec.com> heintze@fmcsse.enet.dec.com (Siegfried Heintze) writes: >Having used VMS for many years and being terribly ignorant of the different >flavors of U* I would like solicit comments from programmers experienced >in both VMS and U*. > >Specifically I would like to know what makes U* a better development >environment. (I assume there is someone out there who is certain U* >is a better development environment.) > >So, assuming VAXset is part of the VMS environment, what makes U* better? >(Feel free to answer in the context of "money is of no concern" as well as >"money is significant"). > Sieg We switched from VMS to Unix for the reason that, these days, "portability" and "openness" are industry watchwords. Using VMS ties you specifically to DEC and whatever direction they choose to take. Using Unix means that we can abandon a vendor which is not supporting us adequately, and switch to another (which might not either), in search of the best available support. The switch from one vendor's Unix to another may not be trivial, but it's sure less painful than VMS to anything else. Personally, as a programmer I prefer the facilities of VMS, which are capable if not necessarily convenient; and the VMS manual set which, if not exactly readable, at least has all the details I have needed. I can't exactly say the same for Unix. I haven't used the VAXset, and now I probably never will. -- First comes the logo: C H E C K P O I N T T E C H N O L O G I E S / / \\ / / Then, the disclaimer: All expressed opinions are, indeed, opinions. \ / o Now for the witty part: I'm pink, therefore, I'm spam! \/
chris@mimsy.umd.edu (Chris Torek) (10/18/90)
In article <16438@shlump.nac.dec.com> heintze@fmcsse.enet.dec.com (Siegfried Heintze) writes: [much about tools deleted] >So, assuming VAXset is part of the VMS environment, what makes U* better? >(Feel free to answer in the context of "money is of no concern" as well as >"money is significant"). If one assumes that money is significant, a simple answer turns up, one which has little to do with availability of tools (though some to do with their prices). That answer is this: DEC uVAX 3 with VMS: cost approximately US$15,000; speed around 5 or 6 Meaningless Indicators of Processor Speed. Any SPARC or MIPS system with UNIX: cost approxmately US$5,000; speed around 20 Meaningless Indicators of Processor Speed. The MIPS numbers are extremely slippery, and the costs above are far too `rounded', but it is now clear that Unix boxes cost less and run faster than VMS boxes. The money saved can be spent on buying or developing production tools if necessary, and the result is a system that runs about four times faster. You can get a faster VMS machine by throwing more money at the problem, but you can also get a faster Unix machine the same way. For the price of a VAX 9000 system you can probably buy an Amdahl or a couple of dozen MIPS 6280s (the MIPS 6280 system being between 55 and 65 Meaningless IPS). This is, of course, a relatively recent development, but certainly an important one. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 405 2750) Domain: chris@cs.umd.edu Path: uunet!mimsy!chris
herrickd@iccgcc.decnet.ab.com (10/19/90)
In article <16438@shlump.nac.dec.com>, heintze@fmcsse.enet.dec.com (Siegfried Heintze) writes: > Having used VMS for many years and being terribly ignorant of the different > flavors of U* > I would like solicit comments from programmers experienced in both VMS and U*. > > Specifically I would like to know what makes U* a better development > environment. [much of his question omitted] > your source code like "find all the occurences of variables of type x whose name > matches > the pattern *jj*h in the set of routines whose names match j* in call tree x > ...." > This one "feature" of VMS is enough to make one climb the walls after one becomes accustomed to UNIX regular expressions. There are one or two other advantages of UNIX. dan herrick
wcs) (10/21/90)
In article <1990Oct17.211857.19213@decuac.dec.com>, mjr@hussar.dco.dec.com (Marcus J. Ranum) writes: > >So, assuming VAXset is part of the VMS environment, what makes U* better? > As a pure development environment, none is better than whatever > one you're most familiar with. Only if the environment you're familiar with is good enough. When I switched to UNIX, the environment I was most familiar with was IBM TSO, and ANYTHING was better than that, except punch cards which I also knew well. (Unfortunately, vi is "good enough", so I stil haven't switched to EMACS, in spite of its obvious superiorities. :-) Marcus goes on to say good things about using toolkits to make the new environment emulate the old one when possible. Bill -- Thanks; Bill # Bill Stewart 908-949-0705 erebus.att.com!wcs AT&T Bell Labs 4M-312 Holmdel NJ Government is like an elephant on drugs: It's very confused, makes lots of noise, can't do anything well, stomps on anyone in its way, and it sure eats a lot.
davidsen@sixhub.UUCP (Wm E. Davidsen Jr) (10/22/90)
Well, there are a lot of tools using the same conventions, so you can learn something and use the info in many places. Regular expressions come to mind. There are a number of user interfaces, allowing the developer to use the one most suited to his (her) needs or preferences. In the same vein there are more editors than you can count, and many are customizable. UNIX has a large number of tools which manipulate data and pass it on, giving the ability to do many ad hoc text enquiries and manipulations using pipes, without intermediate files. This is simply not practical in VMS, due to the high overhead required for process creation. No matter what the horsepower of the CPU, a pipe with more than a few processes is slow. I have run DECshell on an unloaded large VAX (sorry, number escapes me), and it is a pig. The filenames are more consistant in UNIX, and you can have links when needed to make directory structures intuitive. That doesn't mean simple, just that you can find the same data file in /techrept/mit and mit/techrept, without having multiple copies. You don't need to know where a file is physically to get to it, that's the diference of "~joe_s/doc/scan" as opposed to "BIGVAX::USR$DISK3:[JOES.DOCS]SCAN." VMS assumes that it knows what you're doing, and UNIX assumes that *you* know what you're doing. If a filename doesn't have a dot in it VMS usually wants to add one, and a filetype. Often it guesses right, but it still guesses. UNIX has what appear to be better tools standard to allow multiple users to develop on the same project, Notable SCCS and make. And there are versions of these themes if you don't find vanilla fits your situation. Portability is important. You can do development on a number of platforms, and if you follow some rules the result can be run on any and all of them. You really can do development on mixes like Ultrix, SunOS, and V.3.2, with all developers compiling the successive production parts on their machine, but doing the editing and testing of modules against the current base locally. NFS makes this possible. Access control in VMS can be by access control list, that's not in most versions of UNIX. UNIX uses groups to get the same functionality, but it works poorly if you have a large number of files and need to control access to each one individually. That is not usually needed or even remotely useful in most software development environments. That's about it for head to head in my mind, I find the UNIX environment easy to tailor to the way I want a computer to work, and that usually improves productivity. -- bill davidsen - davidsen@sixhub.uucp (uunet!crdgw1!sixhub!davidsen) sysop *IX BBS and Public Access UNIX moderator of comp.binaries.ibm.pc and 80386 mailing list "Stupidity, like virtue, is its own reward" -me
andyo@glasperl.masscomp (Andy Oram) (10/23/90)
It's been almost a week since Siegfried Heintze made his bold request. I'm gratified to see no one has flamed him, but really no one has made a strong answer either. The utilities and shell tricks and so forth are nice, but what about the design choices that make UNIX popular for systems and applications programming? This group is comp.unix.programmer, after all. Isn't there someone out there who can summarize the differences in working with the guts of VMX and UNIX, someone who can speak from the experience of porting highly interactive applications or writing device drivers or something like that? There must be some good general learning experiences here. Guess everybody's too busy developing more such experience... (I don't have such direct experience, so I've limited myself to replying to Mr. Heintze by E-mail.) ------------------------------------------------------------------------------- Andrew Oram Concurrent Computer Corporation (I don't represent Concurrent; this message represents my own opinion) Digital Communications Route: andyo@westford.ccur.com {harvard,uunet,petsd}!masscomp!andyo Analog Communications Route: (508) 392-2865 Automatic UN*X documentation utility: cref | compress | crypt | man -------------------------------------------------------------------------------
hamm@austoto.sps.mot.com (Steve Hamm) (10/25/90)
-----On 23 Oct 90 14:14:16 GMT, andyo@glasperl.masscomp (Andy Oram) said: Andy> It's been almost a week since Siegfried Heintze made his bold Andy> request. I'm gratified to see no one has flamed him, but really Andy> no one has made a strong answer either. The utilities and shell Andy> tricks and so forth are nice, but what about the design choices Andy> that make UNIX popular for systems and applications programming? Andy> This group is comp.unix.programmer, after all. Isn't there Andy> someone out there who can summarize the differences in working Andy> with the guts of VMX and UNIX, someone who can speak from the Andy> experience of porting highly interactive applications or writing Andy> device drivers or something like that? There must be some good Andy> general learning experiences here. I would speculate that there aren't that many people who have seriously used both VMS and UNIX. I have, at least somewhat seriously, although I don't consider myself expert on either one. I've used most of the system service calls under VMS, and done some strange terminal I/O stuff under BSD. More explicitly, I used VMS from versions 1.x to 4.x, from 1979 to 1986, and UNIX from 1986 to present. I bought VAXset, which was referred to earlier, when it first came out, and watched it develop. I develop simulation software, and do not do device drivers or kernel hacking. My views would undoubtedly be different if I did device drivers or internals. Frankly, other than the portability argument, I don't think that there's a lot of reason to switch from VMS to UNIX. (Other than getting out from under DEC's very expensive domain.) VAXset compares very favorably with the standard make/SCCS setup. VERY favorably: CMS has features in it that make it look OK compared to SCCS/RCS. MMS (comparable to make) is miserable and cryptic, but so is make. The code/variable navigation capability of (PCS? forget the name) isn't available under UNIX unless you buy some third party stuff. The VMS C compiler was nearly ANSI three or four years ago -- most other vendors haven't got their ANSI compilers out yet. And, as a command language environment, UNIX has a lot to hate: every command is its own little world, with its own syntax and, frequently, the same switch does something entirely different. VMS has commands that behave according to the same rules, with consistent syntax. There are some things that I used to do under VMS with a one line, relatively short command, that take a shell script with a find command to do under UNIX. Of course, you can do anything with a complex enough find command ;-) VMS, of course, has lots to get irritated about also, but I think a person in the know can match point-for-point with similarly irritating UNIX characteristics. I can get my job done, reasonably well, in either UNIX or VMS. Now I am using UNIX and wouldn't go back to VMS (well, if someone offered me LOTS of $$, perhaps). Why? DEC lost the workstation war (or at least the first round of battles), and my program runs on workstations. If I port to a DEC machine, it will have to be one running ULTRIX: VMS is an expensive, proprietary environment, and that means lots of work, time, and effort in porting for a limited audience. -- Steve Hamm ------- Motorola Inc. Semiconductor Systems Design Technology 3501 Ed Bluestein Blvd., MD-M2, Austin TX 78762 Ph: (512) 928-6612 Internet: hamm@austoto.sps.mot.com Fax:(512) 928-7662 UUCP: ...cs.utexas.edu!oakhill!austoto!hamm
geoff@edm.uucp (Geoff Coleman) (10/25/90)
From article <ANDYO.90Oct23101417@glasperl.masscomp>, by andyo@glasperl.masscomp (Andy Oram): > This group is comp.unix.programmer, after all. Isn't there someone out there > who can summarize the differences in working with the guts of VMX and UNIX, > someone who can speak from the experience of porting highly interactive > applications or writing device drivers or something like that? There must be > some good general learning experiences here. > Sorry I missed the original question so I might be jumping in with both feet firmly implanted in mouth here. What do you mean by the guts of VMS and UNIX? If you are talking system level programming and accessing devices then Unix is a big winner IMHO. Why you ask? Well any O/S who's language of choice for opening and controlling devices is FORTRAN (or BLISS) ala VMS has definite drawwbacks. I seem to remember that when I wanted to open a tape drive I had to convert the C strings into structs with a length component etc. THe other obvious downfall of VMS from my point of view was the need to worry about the inifinite combination of file types (fixed length records, fixed block size) versus the UNIX philosophy of a file is a file is a file. As well there are the obvious problems of proprietary systems not easily supporting third party terminals etc. Of course all of this is a few years old. Geoff Coleman Unexsys Systems > Guess everybody's too busy developing more such experience... > > (I don't have such direct experience, so I've limited myself to replying to > Mr. Heintze by E-mail.) > > ------------------------------------------------------------------------------- > > Andrew Oram Concurrent Computer Corporation > (I don't represent Concurrent; this message represents my own opinion) > > Digital Communications Route: andyo@westford.ccur.com > {harvard,uunet,petsd}!masscomp!andyo > Analog Communications Route: (508) 392-2865 > > Automatic UN*X documentation utility: > > cref | compress | crypt | man > > -------------------------------------------------------------------------------
gringort@wsl.dec.com (Joel Gringorten) (10/27/90)
In article <1990Oct25.160937.28144@edm.uucp>, geoff@edm.uucp (Geoff Coleman) writes: |> Well any O/S who's language of choice for opening and controlling |> devices is FORTRAN (or BLISS) ala VMS has definite drawwbacks. I seem to |> remember that when I wanted to open a tape drive I had to convert the C |> strings into structs with a length component etc. It sounds like what you are recalling is conformance to the VAX-11 calling standard. This standard makes it possible for languages to call routines written any other language. You need not a clue as to what the routine was written in. This is considered a major feature of VMS. |> THe other obvious downfall |> of VMS from my point of view was the need to worry about the inifinite |> combination of file types (fixed length records, fixed block size) Oh, I see. You consider the fact that VMS supports multiple file and record types to be a bug. Some people consider things like ISAM file support built into the runtime library to be a feature. |> fixed block size) versus the |> UNIX philosophy of a file is a file is a file. You must mean the UNIX philosophy of a file is a stream of bytes. Guess what? The C runtime library under VMS supports stream files as the default file type as well as supporting the full complement of standard C lib file routines. To stick with the subject at hand... Fast process creation and pipes are major features of Unix that VMS doesn't have. Disparate existing programs can be linked together via program or shell control. The VMS distributed lock manager is a major feature that Unix doesn't have. Disparate programs can share data to record level without stepping on each others toes. Process creation is heavy. Programs can call other programs, but it's slow and difficult. But hey, they both have their philosophies, disadvantages and advantages. I worked on VMS for 5 years and Unix for last 6 years and have a lot of appreciation for both operating systems. It just so happens that Unix is my OS of choice now. I find prototyping quicker in Unix. It's simpler and more elegant. Being a hacker I like that. VMS is a better operating system for running comercial applications like banks. It has better data, file integrity and security features. It's also a whole lot more user friendly. I'd switch back to VMS if I had to. But, it would take a lot of money :-) -joel
peter@ficc.ferranti.com (Peter da Silva) (10/28/90)
In article <1990Oct26.131224@wsl.dec.com> gringort@wsl.dec.com (Joel Gringorten) writes: > Oh, I see. You consider the fact that VMS supports multiple file and record > types to be a bug. Some people consider things like ISAM file support built > into the runtime library to be a feature. Run-time library, yes. Operating system, no. You should not have to know what format a file is in to do things like search it for text strings. > The C runtime library under VMS supports stream files as the default file type > as well as supporting the full complement of standard C lib file routines. True, but only for files created by the C runtime library. > It's also a whole lot more user friendly. Yep. Everything is an option to "SET". -- Peter da Silva. `-_-' +1 713 274 5180. 'U` peter@ferranti.com
chris@mimsy.umd.edu (Chris Torek) (10/29/90)
>>[VMS is] also a whole lot more user friendly. In article <+SP6XL@xds13.ferranti.com> peter@ficc.ferranti.com (Peter da Silva) writes: >Yep. Everything is an option to "SET". Or `SHOW'. Lessee, now, to get a listing of files, was it `SHOW FILES'? No, wait, `SHOW FILES/DIRECTORY=CURRENT', er, no, `SET LISTING=FILES/CURRENT_DIRECTORY'... :-) (Or, to print a file to the screen, that was `PRINT FOO'? And to type one out on the letter-quality typewriter-device, that was `TYPE FOO'. Yeah, right.) [end scarcasm mode] The one nice thing I remember about VMS was that its `help' facility mostly worked. I did miss the equivalent of `apropos'.... (Mind you, this was VMS 2.3.) -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 405 2750) Domain: chris@cs.umd.edu Path: uunet!mimsy!chris
hughes@copper.ucs.indiana.edu (larry hughes) (10/29/90)
In article <1990Oct25.160937.28144@edm.uucp> geoff@edm.uucp (Geoff Coleman) writes: > What do you mean by the guts of VMS and UNIX? If you are talking >system level programming and accessing devices then Unix is a big winner IMHO. >Why you ask? Well any O/S who's language of choice for opening and controlling >devices is FORTRAN (or BLISS) ala VMS has definite drawwbacks. I seem to >remember that when I wanted to open a tape drive I had to convert the C >strings into structs with a length component etc. THe other obvious downfall >of VMS from my point of view was the need to worry about the inifinite >combination of file types (fixed length records, fixed block size) versus the >UNIX philosophy of a file is a file is a file. > This really isn't an argument...where is it stated that the language of choice is FORTRAN or BLISS? This has never been my impression or experience. Also, what does "a file is a file is a file" mean? In Unix, a file is essentially a bytestream; a VMS (RMS actually) text file can be treated this way, and also gives you added benefits (ISAM, etc.) for other file formats. The "downfall" you describe about structs with a length component (they're called string descriptors) is how VMS achieves true language independence. It turns out that this IS awkward when programming in C (particularly because after system service calls you have to null terminate the strings yourself), but this is because most languages do not use null terminated strings, and VMS simply does not favor one language over another (even though DEC is supposedly rewriting most of the kernel in C). For the record, I'm a fan of both VMS and Unix...both have advantages, disadvantages, and their proper place. /=========================================================================\\ || Larry J. Hughes, Jr. || hughes@ucs.indiana.edu || || Indiana University || || || University Computing Services || "The person who knows everything || || 750 N. State Road 46 Bypass || has a lot to learn." || || Bloomington, IN 47405 || || || (812) 855-9255 || Disclaimer: Same as my quote... || \\==========================================================================//
lewine@dg-rtp.dg.com (Donald Lewine) (10/30/90)
In article <1990Oct25.160937.28144@edm.uucp>, geoff@edm.uucp (Geoff Coleman) writes: |> Well any O/S who's language of choice for opening and controlling |> devices is FORTRAN (or BLISS) ala VMS has definite drawwbacks. This can also be considered a feature. If you are a C programmer then it is obvious that UNIX is well matched to C. On the other hand if you program in FORTRAN, BASIC, PASCAL, or ADA, then VMS does very well. If you want to build a complex application in a combination of programming languages then VMS is quite good. I will admit the the VMS call-by-descriptor mechanism is poorly supported by VAX C. |> The other obvious downfall |> of VMS from my point of view was the need to worry about the inifinite |> combination of file types (fixed length records, fixed block size) versus the |> UNIX philosophy of a file is a file is a file. Again, one man's bug is another's feature. If I want to print an ISAM file under VMS the print spooler will do it for me. The fact that the system supports many record types means that the appplications programmer does not have to. A C program can read any format as stdin and VMS's Record Management Service (RMS) converts it to new-line delimited strings. In UNIX it is not possible to support anything but flat ASCII files without special code in the application. That is why most UNIX systems have only flat ASCII files. This may be fine for software engineering but it is not what the Data Processing world wants. These are only my humble opinions. I have spent many years writing applications for both VMS and UNIX. I like them both but for different reasons. -------------------------------------------------------------------- Donald A. Lewine (508) 870-9008 Voice Data General Corporation (508) 366-0750 FAX 4400 Computer Drive. MS D112A Westboro, MA 01580 U.S.A. uucp: uunet!dg!lewine Internet: lewine@cheshirecat.webo.dg.com
kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) (10/30/90)
In article <1990Oct25.160937.28144@edm.uucp>, geoff@edm.uucp (Geoff Coleman) writes: > From article <ANDYO.90Oct23101417@glasperl.masscomp>, by andyo@glasperl.masscomp (Andy Oram): >> This group is comp.unix.programmer, after all. Isn't there someone out there >> who can summarize the differences in working with the guts of VMX and UNIX, >> someone who can speak from the experience of porting highly interactive >> applications or writing device drivers or something like that? There must be >> some good general learning experiences here. >> > Sorry I missed the original question so I might be jumping in with both > feet firmly implanted in mouth here. > Likewise, I missed the original question: if the comments below are irrelevant or irritating, please place all responses in a file and copy it to /dev/null or NLA0:, whichever you prefer... Now, ignoring all OS wars and "mine's better than your's" claims, I humbly offer my experience as someone who's worked in both U*x and VMS. The following is very long, so you may want to save it for later. Applications: ------------- 1. Applications written in Unix that use fork, exec, or system will need to be changed and will suffer significant performance degradation under a corresponding VMS implementation. Also, the standard utilities usually invoked by system or exec are not present under VMS, so you may end up having to write your own replacements if there are no similar VMS utilities available. Usually, the VMS libraries provide routines to accomplish what the Unix programmer calls shell routines for, so it requires some modest code changes. This makes VMS programs much more self-contained at the possible expense of re-inventing algorithms (unless you're smart). 2. Files can be tricky for someone familiar with one OS looking at another OS, in either direction. This isn't really a major concern unless you need to communicate files from one OS to the other via FTP or similar transfer program. If so, then you may need to modify the VMS FDL description of the file to "Stream-LF" to get VMS to interpret your file the same way as Unix does. Also beware that binary mode transfers to VMS are likely to pad your file out with nulls until its size is an integral of 512 bytes. To get an FDL description of a file, use "CREATE/FDL filename"; the output filename.FDL file may be edited as described above, and then the file may be updated by the CONVERT/FDL routine as necessary. Since there are lots of parameters here, I won't go too deep, as some experimentation may be necessary. The RMS library (Record Management Services) under VMS provide a program level interface to many different types of files, allowing specific directives and general read/write requests for a file that force the RMS to do all the work like sorting, searching, etc. This generally makes writing database applications easier under VMS since you don't have to parse the file yourself, at the expense of a simple representation that may be interpreted in many ways. A few simple parameters in the VAX C extension of the fopen call allow optimization of file accesses to a particular method, allowing the programmer who knows how the file will be used to increase the speed of his program. 3. Another sometimes surprising element of VMS is that a single file can (and usually does) have multiple versions existing at any one time. This means that opening an existing file for create/write access will cause a new file with an incremented version number to be generated rather than replacing the currently existing file. Therefore, Unix utilities which use temporary files or similar concepts may need to be enhanced to clean up properly after themselves, whereas VMS programmers are likely to be very uncomfortable for a while with no backup of their work. 4. Overall, the C RTL is very similar between Unix and VMS, with the effort for VMS C being to adhere to the C "standard" (chuckle, chuckle :-) and make non-destructive language enhancements where needed. There are some changes, but those are usually documented, and are found by the linker under worst case. As far as the system RTL availability, the VMS has a large and very convenient RTL, which is implemented with a general callable interface that allows ANY supported language under VMS to access the RTL in a generic fashion. Unfortunately, this callable interface uses a "string descriptor" for string representation, which does not coincide with the zero-terminated string representation in C, so some extra effort needs to be made here, but once you do it a time or two, it becomes rote (and macro-able). 5. VMS supports a very large number of third-party terminal devices, so it is not probable that you are going to have problems here. Although VMS C implements curses, I find the native VMS SMG screen management utilities much more pleasing. 6. VMS has a large run-time library available, completely separate from C, which is available to perform a large variety of tasks, including lock management as mentioned by another poster here. This means that you can continue to write your programs with maximum portability in mind, in which case you make very few assumptions about your environment and do almost everything yourself, or you can write a VMS specific utility which is optimized both in speed and size for the VMS environment. Also, since portability is not a large requirement for VMS itself, some of the capabilities (such as screen management mentioned earlier) can take significant advantage of known environmental characteristics. Drivers: -------- Because the OS's are considerably different, driver writing is as well. A driver is, by definition, a three-way bridge between the operating system, a device, and the application program. If you are writing a device driver, there are several significant differences to be aware of. My general impression is that the Unix environment for a driver is much simpler and therefore easier to write to, whereas the VMS environment is more complicated, but provides better tools. 1. VMS has the concept of allocatable virtual memory, which may be obtained by calling system routines; most VMS device drivers use this technique for buffering data, etc. Unix (usually) also has the concept of allocatable virtual memory (implying non-pageable, kernel space), but few Unix drivers actually use this technique. The Unix drivers (that I've seen) usually pre-allocate a large chunk of memory at compile time and use that memory as needed. The problem arises in that, while VMS returns an error indicating when no memory is available, Unix simply "sleeps". This is effectively a suspending of the current process until memory becomes available. Unfortunately, the VMS driver does not depend on process context to execute, which brings us to point 2: 2. In Unix, when an application issues a driver request, the PC is transferred to the appropriate driver routine in kernel and remains there, in execution, until the request completes, at which time the routine exits and the user level code resumes. There is no Unix implementation of "no-wait", "asynchronous", or "background" IO. In VMS, the application issues a driver request. That process is then placed in a wait state after a VMS structure is initialized to describe the request. That structure is then passed through several parts of the device driver in several stages and interrupt levels to accomplish the request. Each intermediary routine is free to do its work and then exit which returns to the OS. When the user's request is finally completed, a specific "wakeup" is issued to the process with an output status. At this point, VMS introduces the "no-wait" IO, where the process is not actually placed in a wait state when its request is issued. The descriptive structure is created and begins its trek through the driver, but the process continues execution. The process can actively poll for completion of the request, or an asynchronous routine may be specified to be activated by the OS when the IO completion "wakeup" is issued. This allows true "no-wait" IO, along with multiple outstanding requests. 3. Everything except interrupt handlers in Unix are written in "user" context, whereas only the preliminary portion of a VMS driver (the FDT routines) are in user context. This means that all buffer validation and copying from the user space must be done from the FDT routines in VMS; copyout of data after the request completes is done by VMS based on addresses and flags in the structure describing the request. This also means that, whereas a Unix driver has a relatively straight- forward code flow, with perhaps a sleep to await later rescheduling, the VMS environment is more versatile at the cost of a much more complex code flow. Care must be taken in a VMS driver not to access user level data and such from most of the driver, whereas a Unix driver must insure user context for kernel memory allocation, sleep requests, and much more. 4. The VMS synchronization is much more specific and explicit, and in some cases much better than Unix synchronization, but that is partially because VMS is specific to Digital machines, whereas Unix is forced to be much more general. 5. With a few considerations, it is possible to re-load a driver into a running VMS system, and it is also possible to boot a VMS system without a driver. This generally means that the debugging turnaround is faster in a VMS environment: VMS: Boot system Unix: Boot system Compile & link driver Compile & link driver Install driver into system Build new system with driver Run test programs Reboot to run system w/driver Hit bug Run test programs Reboot system Hit bug Analyze dump Reboot system Fix, compile and link driver Analyze dump Install driver into system Fix, compile, and link driver Run test programs Build new system w/fixed driver : Reboot with new system Run test programs : where the Unix steps of building a system and rebooting take a significant amount of time as compared to the milliseconds it takes to install/load a VMS driver. Overall, VMS provides a much more versatile environment at the cost of a much more specific and complex driver environment. I've typically taken the approach of using a daemon process in Unix to provide a general process context for a "dispatcher" to emulate the VMS "fork dispatcher" functionality for asynchronous, multiple-event drivers. This is probably a result of my VMS background, and might have been done differently had I started out as a Unix programmer, but means that for most of the driver work I do, I find the VMS environment more convenient and spend some time reproducing elements of that environment in the Unix world. Both environments can be rewarding and fulfilling, but it takes an open mind and a willingness to examine ones algorithms and restructure them as necessary. My impression is that I would much rather be a VMS driver writer learning the looser Unix environment than the Unix driver writer that must climb a large learning curve to get into the VMS environment. If you can do both, then your only problem is switching mental gears about 40 times a day to answer various questions! ;-) If you have specific questions or comments, email me (address below), but no guarantee on turnaround time. -- -- Kevin Quick, Simpact Associates, Inc., San Diego, CA. Internet: simpact!kquick@crash.cts.com
linwood@cbnewsk.att.com (linwood.d.johnson) (10/30/90)
In article <27237@mimsy.umd.edu>, chris@mimsy.umd.edu (Chris Torek) writes: > >>[VMS is] also a whole lot more user friendly. > > In article <+SP6XL@xds13.ferranti.com> peter@ficc.ferranti.com > (Peter da Silva) writes: > >Yep. Everything is an option to "SET". > > Or `SHOW'. Lessee, now, to get a listing of files, was it `SHOW FILES'? > No, wait, `SHOW FILES/DIRECTORY=CURRENT', er, no, `SET > LISTING=FILES/CURRENT_DIRECTORY'... :-) > > (Or, to print a file to the screen, that was `PRINT FOO'? And to type > one out on the letter-quality typewriter-device, that was `TYPE FOO'. > Yeah, right.) > The one nice thing I remember about VMS was that its `help' facility > mostly worked. I did miss the equivalent of `apropos'.... (Mind you, > this was VMS 2.3.) Yeah, all of that stuff is frustrating. But, try to redirect output/input to/from a file. Or send the output from one program to another. Man, you talk about wordiness. $ ASSIGN FOO.OUT SYS$OUTPUT $ ASSIGN SYS$INPUT FOO.INPUT But, VMS has a great debugger. The greatest debugger that I've ever used. Other than the debuggers that I've used on the PC. +===================================================================+ | Linwood D. Johnson | linwood@ihlpf.att.com | +-------------------------------------------------------------------+ | Disclaimer: Opinions expressed here are mine and mine only. | | Besides, who else would want them? | +===================================================================+ -- +===================================================================+ | Linwood D. Johnson | linwood@ihlpf.att.com | +-------------------------------------------------------------------+ | Disclaimer: Opinions expressed here are mine and mine only. |
linwood@cbnewsk.att.com (linwood.d.johnson) (10/30/90)
In article <1990Oct30.021328.13001@cbnewsk.att.com>, linwood@cbnewsk.att.com (linwood.d.johnson) writes: > In article <27237@mimsy.umd.edu>, chris@mimsy.umd.edu (Chris Torek) writes: > > >>[VMS is] also a whole lot more user friendly. > > > > In article <+SP6XL@xds13.ferranti.com> peter@ficc.ferranti.com > > (Peter da Silva) writes: > > >Yep. Everything is an option to "SET". > > > > Or `SHOW'. Lessee, now, to get a listing of files, was it `SHOW FILES'? > > No, wait, `SHOW FILES/DIRECTORY=CURRENT', er, no, `SET > > LISTING=FILES/CURRENT_DIRECTORY'... :-) > > > > (Or, to print a file to the screen, that was `PRINT FOO'? And to type > > one out on the letter-quality typewriter-device, that was `TYPE FOO'. > > Yeah, right.) > > The one nice thing I remember about VMS was that its `help' facility > > mostly worked. I did miss the equivalent of `apropos'.... (Mind you, > > this was VMS 2.3.) > > Yeah, all of that stuff is frustrating. But, try to redirect > output/input to/from a file. Or send the output from one program to > another. Man, you talk about wordiness. > $ ASSIGN FOO.OUT SYS$OUTPUT > $ ASSIGN SYS$INPUT FOO.INPUT > > > But, VMS has a great debugger. The greatest debugger that I've ever used. > Other than the debuggers that I've used on the PC. Oh yeah. VMS has some great editors also. I used to love using the TPU mode of ed. We used to call it EVE (Extensible Vax Editor). It was great. You could define all of the functions of the keyboard to be something; like whatever you wanted it to be. I found the editors in the world of UNIX to be somewhat hostile when compared to EVE. +===================================================================+ | Linwood D. Johnson | linwood@ihlpf.att.com | +-------------------------------------------------------------------+ | Disclaimer: Opinions expressed here are mine and mine only. | | Besides, who else would want them? | +===================================================================+ -- +===================================================================+ | Linwood D. Johnson | linwood@ihlpf.att.com | +-------------------------------------------------------------------+ | Disclaimer: Opinions expressed here are mine and mine only. |
smb@cs.purdue.EDU (Scott M. Ballew) (10/30/90)
In article <1809.272c3135@dcs.simpact.com> kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) writes: >4. Overall, the C RTL is very similar between Unix and VMS, with the effort > for VMS C being to adhere to the C "standard" (chuckle, chuckle :-) and > make non-destructive language enhancements where needed. There are some > changes, but those are usually documented, and are found by the linker > under worst case. If my memory serves me correctly, the VAX C compiler is identical for VMS and Ultrix (DEC's Unix). It was originally written for the Ultrix world and then retro-fitted to the VMS world. Similarly, VAX Fortran was originally written for the VMS world and then retro-fitted to the Ultrix world. >5. VMS supports a very large number of third-party terminal devices, so > it is not probable that you are going to have problems here. Although > VMS C implements curses, I find the native VMS SMG screen management > utilities much more pleasing. While this is true, the most frustrating "feature" of VMS if ran into in my VMS days was trying to get the VAX editors (EDT, EVE) to actually talk to these third-party terminals. I did the whole bit of describing to VMS (via there termcap-like method) what our terminals sent and expected only to find that for reasons of speed and efficiency, EDT (and perhaps EVE, I don't remember) did NOT use the SMG routines so would still not talk to our terminals correctly. In contrast, I have not yet run into a Unix program that did not use either the termcap library or curses (which uses the termcap library). >4. The VMS synchronization is much more specific and explicit, and in > some cases much better than Unix synchronization, but that is partially > because VMS is specific to Digital machines, whereas Unix is forced > to be much more general. Actually, since Unix was originally designed for DEC machines, this is not a valid statement. The difference really lies in the philosophy underlying the systems' designs. See Bach's book on the design of Unix for a discussion. Having worked under both systems, I agree that each has its relative strengths and weaknesses. However, being a bit of a hacker at heart, I prefer a system where the operating system gets in my way as little as possible, allowing me to get my work done. Unix, because of its research origins, does just that (though at times, it STILL gets in my way). VMS, on the other hand, is a much friendlier environment for the user who is not a programmer. It has a (fairly) regular set of options to (rather) intuitive command names. If the user does not wish to do anything that requires programming, it is a comfortable, secure enviroment. Unix is, however, far more customizable and extensible, in my opinion, than VMS and so, I have found it a much more comfortable environment in which to work. By the way, no one has mentioned Unix's biggest strength: since most implementations can be obtained with complete sources on line, it is realitively easy to repair bugs in or add features to any part of the system, something that VMS makes nearly impossible. Scott Ballew Cypress Network Operations Center Purdue University Department of Computer Sciences
terryl@sail.LABS.TEK.COM (10/31/90)
In article <1990Oct30.035412.15523@cbnewsk.att.com> linwood@cbnewsk.att.com (linwood.d.johnson) writes: > Oh yeah. VMS has some great editors also. I used to love using > the TPU mode of ed. We used to call it EVE (Extensible Vax > Editor). It was great. You could define all of the > functions of the keyboard to be something; like whatever you > wanted it to be. I found the editors in the world of UNIX to > be somewhat hostile when compared to EVE. Yeah, a stupid (And I do mean STUPID) standard editor that forces one to have line numbers while one is editing a file, and have said line numbers stay static even if one is adding/deleting lines, and those line added MUST not be out of the range of line numbers one is adding between, and having such stupid default line numbers such that one could add at MOST one line between two lines, and then forcibly going back into command mode (instead of input line mode), and forcing the user to MANUALLY renumber all of the lines in the d*mn file??? You call that a great editor??? Boy, I thought I had a warped view of the world..... (To be fair, this was MANY, MANY moons ago on a VMS 1.6 system, if memory serves me correctly, but gads how I hated EDIT!!! Luckily, it was somewhat easy to change all of the default numbering schemes, but there was ABSOLUTELY no way to defeat the line numbering scheme while in the editor, and every so often you would find yourself forcibly thrown out of line input mode back into command mode, where the only thing you could really do is a command to cause all of the lines in the file to be renumbered....)
terryl@sail.LABS.TEK.COM (10/31/90)
In article <1809.272c3135@dcs.simpact.com> kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) writes:
+Drivers:
+--------
+
+Because the OS's are considerably different, driver writing is as well. A
+driver is, by definition, a three-way bridge between the operating system,
+a device, and the application program. If you are writing a device driver,
+there are several significant differences to be aware of. My general
+impression is that the Unix environment for a driver is much simpler and
+therefore easier to write to, whereas the VMS environment is more
+complicated, but provides better tools.
+
+1. VMS has the concept of allocatable virtual memory, which may be obtained
+ by calling system routines; most VMS device drivers use this technique
+ for buffering data, etc.
+
+ Unix (usually) also has the concept of allocatable virtual memory (implying
+ non-pageable, kernel space), but few Unix drivers actually use this
+ technique. The Unix drivers (that I've seen) usually pre-allocate a large
+ chunk of memory at compile time and use that memory as needed.
+
+ The problem arises in that, while VMS returns an error indicating when
+ no memory is available, Unix simply "sleeps". This is effectively a
+ suspending of the current process until memory becomes available.
+ Unfortunately, the VMS driver does not depend on process context to
+ execute, which brings us to point 2:
+
+2. In Unix, when an application issues a driver request, the PC is transferred
+ to the appropriate driver routine in kernel and remains there, in execution,
+ until the request completes, at which time the routine exits and the user
+ level code resumes. There is no Unix implementation of "no-wait",
+ "asynchronous", or "background" IO.
+
+ In VMS, the application issues a driver request. That process is then
+ placed in a wait state after a VMS structure is initialized to describe
+ the request. That structure is then passed through several parts of the
+ device driver in several stages and interrupt levels to accomplish the
+ request. Each intermediary routine is free to do its work and then exit
+ which returns to the OS. When the user's request is finally completed,
+ a specific "wakeup" is issued to the process with an output status.
Actually, no, the Unix driver does NOT "remain in execution" in the driver
until the request completes. For disk drivers, as an example, what happens is
that a request for a transfer is queued, and then the higher level OS code
will wait for the transfer to complete, thus giving up the processor to another
process so it may run. While it is true that some device drivers may do a busy
wait, waiting for some command to complete while in the driver, these are usu-
ally commands that are known to complete in a very short amount of time, but
they are usually the exeception, and not the rule (like clearing error condi-
tions).
As for the "no-wait", "asynchronous", or "background" IO, at the user
level, yes, that is true, but at the kernel level, it is possible to do this.
+3. Everything except interrupt handlers in Unix are written in "user"
+ context, whereas only the preliminary portion of a VMS driver (the
+ FDT routines) are in user context.
+
+ This means that all buffer validation and copying from the user space
+ must be done from the FDT routines in VMS; copyout of data after the
+ request completes is done by VMS based on addresses and flags in the
+ structure describing the request.
+
+ This also means that, whereas a Unix driver has a relatively straight-
+ forward code flow, with perhaps a sleep to await later rescheduling,
+ the VMS environment is more versatile at the cost of a much more
+ complex code flow.
+
+ Care must be taken in a VMS driver not to access user level data and
+ such from most of the driver, whereas a Unix driver must insure user
+ context for kernel memory allocation, sleep requests, and much more.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I'm a little confused here on what you call "user" context. To me, a
"user" context consists of a transfer direction (eg a read or a write), a
transfer count, a starting block number, and a buffer address (to use my
previous disk analogy). That's it; nothing more, nothing less. Also, your
comment about Unix "must insure user context for kernel memory allocation,
sleep requests, and much more" is a little cryptic. All the driver has to
do is validate the user's buffer address, and that the transfer is valid
with respect to the disk geometry. Now Unix does provide both direct-from-
user-space I/O, and also from the internal kernel buffers into the user-
provided buffer address, but I'm still not sure what you mean by the above
quoted remarks. For transfers into/out of the internal kernel buffers men-
tioned above, the user context doesn't even come into play. It is taken care
of at a higher level. For transfers directly into/out of the user's buffer
address, again, most of that is taken care of at a higher level. By the time
it gets down to the driver level, all the driver sees is a transfer direction,
a transfer count, a starting block, and a buffer address. As far as the driver
is concerned, there isn't much of a distinction between a kernel buffer address
and a user buffer address.
kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) (10/31/90)
In article <12234@medusa.cs.purdue.edu>, smb@cs.purdue.EDU (Scott M. Ballew) writes: > In article <1809.272c3135@dcs.simpact.com> kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) writes: > >>4. The VMS synchronization is much more specific and explicit, and in >> some cases much better than Unix synchronization, but that is partially >> because VMS is specific to Digital machines, whereas Unix is forced >> to be much more general. > > Actually, since Unix was originally designed for DEC machines, this is > not a valid statement. The difference really lies in the philosophy > underlying the systems' designs. See Bach's book on the design of > Unix for a discussion. > > Scott Ballew > Cypress Network Operations Center > Purdue University Department of Computer Sciences I would agree with the position of Mr. Ballew's statement with regards to the origins of the Unix OS, but later developments in computer hardware have caused a divergence between Unix and VMS; Unix, while initially developed in a DEC environment, attempts to maintain a portability focus as much as possible, and therefore the synchronization mechanisms are limited to that subset that exists most broadly throughout the many architectures that today support the Unix environment. VMS, on the other hand, has been free to use and "feature" all of the hardware developments available in the DEC environment because it is not required to be portable outside that environment. VMS implements 32 discrete interrupt priority levels with OS tasks being specifically performed at the various levels; the recent addition of multiple CPUs in the SMP environment overlay a ranked spinlock structure onto this interrupt scheme to provide inter-cpu synchronization as well as intra-cpu syncronization. Unix provides 8 interrupt levels, accessed via standard spl routines which may or may not provide that many discrete interrupt lockout levels as determined by the underlying hardware. There are various spinlock additions to support SMP environments, although my limited experience with these indicates that they are not as complex (well developed?) as the VMS counterparts. Anyhow, I digress in defense of my original statement, and perhaps this topic is becoming more apropo to the comp.unix.internals newsgroup. -- -- Kevin Quick, Simpact Associates, Inc., San Diego, CA. Internet: simpact!kquick@crash.cts.com
peter@ficc.ferranti.com (Peter da Silva) (10/31/90)
In article <1809.272c3135@dcs.simpact.com> kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) writes: > 4. Overall, the C RTL is very similar between Unix and VMS, with the effort > for VMS C being to adhere to the C "standard" (chuckle, chuckle :-) and > make non-destructive language enhancements where needed. Well, they made some arbitrary language "enhancements" as well, that didn't need to be done. For example, "#include stdio" instead of "#include <stdio.h>". Now you can keep on #including <stdio.h> instead of stdio, but it's quicker the other way... even though they're semantically identical. Arbitrary. > As far as the system RTL availability, the VMS has a large and very > convenient RTL, which is implemented with a general callable interface The number of features in the standard VMS library are nice. The interface to them from C has an un-necessary amount of suckiness, but the features themselves are handy. It also comes with a number of VM features that are very useful, equivalent to mmap() on SunOS. > 5. VMS supports a very large number of third-party terminal devices, so > it is not probable that you are going to have problems here. It's virtually certain that you will not be able to use non DEC-compatible terminals. It comes with a terminfo clone, but none of the editors support it. Dumb. -- Peter da Silva. `-_-' +1 713 274 5180. 'U` peter@ferranti.com
emcguire@ccad.uiowa.edu (Ed McGuire) (10/31/90)
In article <1809.272c3135@dcs.simpact.com> kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) writes: > VMS is specific to Digital machines, whereas Unix is forced to be much > more general. In article <12234@medusa.cs.purdue.edu> smb@tristram.cs.purdue.edu (Scott M Ballew) writes: > Actually, since Unix was originally designed for DEC machines, this is > not a valid statement. The difference really lies in the philosophy > underlying the systems' designs. This is pretty misleading. UNIX was originally developed for the PDP-7, not the VAX-11. These are a very different. UNIX was later ported to the PDP-11, and to the VAX-11 when it was released. More recently, it was ported to MIPS (the heart of the DECstation: not a Digital chip though). All these machines have different CPU architectures. VMS was designed for and around the VAX-11. Both claims are essentially correct: VMS is specific to and optimized for the VAX architecture, but probably could not be ported to anything else. UNIX was designed to be ported easily to another CPU, but cannot take advantage of all strengths of the architecture. And these differences are clearly reflections of different design philosophies. Though take a look at the modern PDP-11 sometime. RSTS/E provides a significant subset of the "look and feel" of VMS on a PDP-11. Hats off to those guys. -- peace. -- Ed "Just under half the DEC vice presidents who report to Senior VP Jack Smith are named Bill." -- Digital Review/October 22, 1990
linwood@cbnewsk.att.com (linwood.d.johnson) (10/31/90)
In article <8354@tekgvs.LABS.TEK.COM>, terryl@sail.LABS.TEK.COM writes: > > Oh yeah. VMS has some great editors also. [the rest deleted for the sake of brevity] [but the rest repeated to make a point] > > > Yeah, a stupid (And I do mean STUPID) standard editor that forces one > to have line numbers while one is editing a file, and have said line numbers > stay static even if one is adding/deleting lines, and those line added MUST > not be out of the range of line numbers one is adding between, and having > such stupid default line numbers such that one could add at MOST one line > between two lines, and then forcibly going back into command mode (instead > of input line mode), and forcing the user to MANUALLY renumber all of the lines > in the d*mn file??? You call that a great editor??? Boy, I thought I had a > warped view of the world..... > > (To be fair, this was MANY, MANY moons ago on a VMS 1.6 system, if memory > serves me correctly, but gads how I hated EDIT!!! Luckily, it was somewhat > easy to change all of the default numbering schemes, but there was ABSOLUTELY > no way to defeat the line numbering scheme while in the editor, and every so > often you would find yourself forcibly thrown out of line input mode back into > command mode, where the only thing you could really do is a command to cause > all of the lines in the file to be renumbered....) Boy, I'm glad you were fair about it!!! Damn, I always wondered what VMS was like in the STONE AGE. I was talikng about a later, much later version than 1.6. Like, somewhere close to the present. Maybe one should look at the present before hollering about how hard it was in the past. -- +===================================================================+ | Linwood D. Johnson | linwood@ihlpf.att.com | +-------------------------------------------------------------------+ | Disclaimer: Opinions expressed here are mine and mine only. |
theune@aplcen.apl.jhu.edu (Peter Theune) (10/31/90)
terryl@sail.LABS.TEK.COM writes: Stuff deleted.... Whining about Vax EDIT deleted... > (To be fair, this was MANY, MANY moons ago on a VMS 1.6 system, if memory ^^^^^^^^^^^^^^ Come on , give us a break, VMS 1.6 was updated in 1979. Want to discuss some of the early versions on u*ix ? If you are going to compare, at least talk about reasonably current versions.. sheesh. There is a place for both, neither is "better". Peter Theune ( a VMS hacker & U*ix wannabe) (I'm working on it.)
kehoe@scotty.dccs.upenn.edu (Brendan Kehoe) (10/31/90)
In <1990Oct31.011215.23303@cbnewsk.att.com>, linwood@cbnewsk.att.com writes: > Boy, > I'm glad you were fair about it!!! Damn, I always wondered what VMS >was like in the STONE AGE. I was talikng about a later, much later >version than 1.6. Like, somewhere close to the present. Maybe one >should look at the present before hollering about how hard it was in the >past. I have to agree with terry about the line editing -- even in 5.4. It SUCKS. (And it's exactly how he described it .. do set term/dev=unknown and try doing edit foo.bar). TPU is still great though -- I've learned to love Emacs, though TPU still has a really good feel to it. Brendan Kehoe | Soon: brendan@cs.widener.edu [ Well, in 1990 I hope. ] For now: kehoe@scotty.dccs.upenn.edu | Also: brendan.kehoe@cyber.widener.edu "It's a distinctly non-trivial task to decompile a stripped, encrypted binary into something that can be understood." - Keith Bostic, on the Internet worm
darcy@druid.uucp (D'Arcy J.M. Cain) (10/31/90)
In article <1089@dg.dg.com> uunet!dg!lewine writes: > [...] > In UNIX it is not possible to support anything but flat ASCII > files without special code in the application. That is why > most UNIX systems have only flat ASCII files. This may be fine > for software engineering but it is not what the Data Processing > world wants. > I can't speak for everyone who programs in Unix but in my case I started programming using fixed length records in C. By that I mean to get record 'rec_num' I would do something like this: #define ASSUME_APPROPRIATE_ERROR_CHECKING typedef { int something; char something_else[32]; ... } S_TYPE; S_TYPE s_buf; ... fseek(fp, rec_num * sizeof(S_TYPE), SEEK_SET); fread(s_buf, sizeof(S_TYPE), 1, fp); This worked very well. It was quick and relatively simple to program. As I moved to Unix however I started to move away from this model and started using the flat ASCII line delimited model. The reason for this was data portability. Sed, awk, grep etc. can now work on my files. It is no longer necessary for every program that works on a data file to know the internals of the program that created it. I guess what I am saying is that you may have the cart before the horse here. Unix programmers like the flat ASCII model because the nature of the file system promotes this sort of data sharing. If somehow files could only be read by programs written specifically for them I think you would see much different, and perhaps more efficient, ways of storing data under Unix. >These are only my humble opinions. Me too. -- D'Arcy J.M. Cain (darcy@druid) | D'Arcy Cain Consulting | I support gun control. West Hill, Ontario, Canada | Let's start with the government! + 416 281 6094 |
cs@cci632.UUCP (Craig Schmackpfeffer) (10/31/90)
Enough already! This request for information has degenerated into a name-calling waste of bandwidth. I vote we redirect this chatter to alt.your.os.sucks. Editor preferences are just that -- preferences. If the people who are going to work on the project in question come from a VMS background, then it would probably serve them best to stay with what they know for a major project. They can play with other operating systems on small projects. I have found it is NOT intuitive to move directly from one to the other. Craig = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Me: Craig Schmackpfeffer (another damn yankee) Disclaimer: Disclaim'er? I don't even know her! Address: ccird1!cs@cci632.UUCP Go Bills! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) (11/01/90)
Note: I apologize for leaving large portions of the previous messages in this text, but I felt that they were needed to form the context for my replies. In article <8355@tekgvs.LABS.TEK.COM>, terryl@sail.LABS.TEK.COM writes: > In article <1809.272c3135@dcs.simpact.com> kquick@dcs.simpact.com (Kevin Quick, Simpact Assoc., Inc.) writes: > +Drivers: > +-------- > + > +Because the OS's are considerably different, driver writing is as well. A > +driver is, by definition, a three-way bridge between the operating system, > +a device, and the application program. If you are writing a device driver, > +there are several significant differences to be aware of. My general > +impression is that the Unix environment for a driver is much simpler and > +therefore easier to write to, whereas the VMS environment is more > +complicated, but provides better tools. > + > +1. VMS has the concept of allocatable virtual memory, which may be obtained > + by calling system routines; most VMS device drivers use this technique > + for buffering data, etc. > + > + Unix (usually) also has the concept of allocatable virtual memory (implying > + non-pageable, kernel space), but few Unix drivers actually use this > + technique. The Unix drivers (that I've seen) usually pre-allocate a large > + chunk of memory at compile time and use that memory as needed. > + > + The problem arises in that, while VMS returns an error indicating when > + no memory is available, Unix simply "sleeps". This is effectively a > + suspending of the current process until memory becomes available. > + Unfortunately, the VMS driver does not depend on process context to > + execute, which brings us to point 2: > + > +2. In Unix, when an application issues a driver request, the PC is transferred > + to the appropriate driver routine in kernel and remains there, in execution, > + until the request completes, at which time the routine exits and the user > + level code resumes. There is no Unix implementation of "no-wait", > + "asynchronous", or "background" IO. > + > + In VMS, the application issues a driver request. That process is then > + placed in a wait state after a VMS structure is initialized to describe > + the request. That structure is then passed through several parts of the > + device driver in several stages and interrupt levels to accomplish the > + request. Each intermediary routine is free to do its work and then exit > + which returns to the OS. When the user's request is finally completed, > + a specific "wakeup" is issued to the process with an output status. > > Actually, no, the Unix driver does NOT "remain in execution" in the driver > until the request completes. For disk drivers, as an example, what happens is > that a request for a transfer is queued, and then the higher level OS code > will wait for the transfer to complete, thus giving up the processor to another > process so it may run. While it is true that some device drivers may do a busy > wait, waiting for some command to complete while in the driver, these are usu- > ally commands that are known to complete in a very short amount of time, but > they are usually the exeception, and not the rule (like clearing error condi- > tions). > > As for the "no-wait", "asynchronous", or "background" IO, at the user > level, yes, that is true, but at the kernel level, it is possible to do this. > Actually, I should have clarified my point a little better. I did not intend to imply that the *host processer* continues to execute the driver code for that request until the request completes, but that the *process's code thread* does so. This means that, as Terry stated, the process makes a request, the driver pre-processes that request, the driver signals the device, and then the driver tells Unix to suspend the current process and go handle someone else until the device interrupt routine issues a wakeup, at which time the requesting process is restarted from its suspended state and continues at the next instruction to do post-processing and exit. The difference between this scheme and VMS is that under Unix, the driver routine must be very careful not to exit via a return statement until the I/O request has been completely handled; if it needs to wait for the device then it issues the "sleep" request to suspend the current process until the device interrupts and restarts this process. Under VMS, the OS automatically suspends the process (assuming wait I/O) after the descriptive structure is generated. When driver code needs to wait for something, it tells VMS where to resume when the event occurs and then simply exits -- back to the VMS OS. When the specified event occurs, the specified routines are activated to resume processing the I/O; the user process is not restarted until a driver routine explicitly tells VMS that the I/O has been completed. > +3. Everything except interrupt handlers in Unix are written in "user" > + context, whereas only the preliminary portion of a VMS driver (the > + FDT routines) are in user context. > + > + This means that all buffer validation and copying from the user space > + must be done from the FDT routines in VMS; copyout of data after the > + request completes is done by VMS based on addresses and flags in the > + structure describing the request. > + > + This also means that, whereas a Unix driver has a relatively straight- > + forward code flow, with perhaps a sleep to await later rescheduling, > + the VMS environment is more versatile at the cost of a much more > + complex code flow. > + > + Care must be taken in a VMS driver not to access user level data and > + such from most of the driver, whereas a Unix driver must insure user > + context for kernel memory allocation, sleep requests, and much more. > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > I'm a little confused here on what you call "user" context. To me, a > "user" context consists of a transfer direction (eg a read or a write), a > transfer count, a starting block number, and a buffer address (to use my > previous disk analogy). That's it; nothing more, nothing less. Also, your > comment about Unix "must insure user context for kernel memory allocation, > sleep requests, and much more" is a little cryptic. All the driver has to > do is validate the user's buffer address, and that the transfer is valid > with respect to the disk geometry. Now Unix does provide both direct-from- > user-space I/O, and also from the internal kernel buffers into the user- > provided buffer address, but I'm still not sure what you mean by the above > quoted remarks. For transfers into/out of the internal kernel buffers men- > tioned above, the user context doesn't even come into play. It is taken care > of at a higher level. For transfers directly into/out of the user's buffer > address, again, most of that is taken care of at a higher level. By the time > it gets down to the driver level, all the driver sees is a transfer direction, > a transfer count, a starting block, and a buffer address. As far as the driver > is concerned, there isn't much of a distinction between a kernel buffer address > and a user buffer address. More clarification: "User" context, as I've used it, is intended to mean that you are not executing on the interrupt stack, and that the user process that made the I/O request is the "current" process as far as the scheduler (and the pager, etc.) are concerned. The better Unix driver documentation will warn you not to use the kernel memory allocation routines from interrupt level, since these routines usually "sleep" the current process if no memory is available at that time; when you are in interrupt context, who knows what process is currently scheduled that you may be suspending with this sleep function, or better yet, you're interrupt level is above that of the scheduler, so your sleep hangs the system because it can't pass control to the scheduler to activate the next process in the run queue! Also, and for similar reasons, you should never be copying data to or from the user's memory region at interrupt level (unless you have previously, in user context, locked that memory into the physical working set, and are accessing that physical location in your interrupt routine) since you don't know what process is current, and what that process is keeping in that memory location. The reason I have compared this to VMS, is that all parts of a VMS driver except the FDT routines may be considered to be in "interrupt context", since they have been asynchronously scheduled independent of what the current process on the system is, and therefore may not access "user" space or other user data structures. All of the above is doubly important when writing an asynchronous multiplexed driver which can handle multiple user requests simultaneously; one user's request may need to wait for some event, but unless you use "sleep" for this scheduling, how can you tell which user context that code is in after the event has occurred? -- -- Kevin Quick, Simpact Associates, Inc., San Diego, CA. Internet: simpact!kquick@crash.cts.com
rhl@astro.Princeton.EDU (Robert Lupton (the Good)) (11/01/90)
Before you all move over to VMS, happy in the knowledge that it supports stream linefeed (unix-style) files, beware that the C rtl implementation of read/write/open/close that works with them is glacially slow. Too slow to be used (at least for the sort of image processing that I was doing). I'm supposed to say that this is my humble opinion, which it is. But my hatred of the VaxMonSter isn't just an opinion, it's the way I am. Sorry. Robert
pena@fuug.fi (Olli-Matti Penttinen) (11/01/90)
In article <3749@idunno.Princeton.EDU> rhl@astro.Princeton.EDU (Robert Lupton (the Good)) writes: >Before you all move over to VMS, happy in the knowledge that it supports >stream linefeed (unix-style) files, beware that the C rtl implementation >of read/write/open/close that works with them is glacially slow. Too slow >to be used (at least for the sort of image processing that I was doing). The best thing about RMS is it's ability to support DBMS's which generally run circles 'round a similar one under Ultrix/BSD. Besides, it's a little bit simpler to implement a database using a filesystem w/ built in ISAM instead of opening a Unix partition and seeking here and there. The worst thing is that (at least under VMS 4.x) you really had to know the exact file type of a *TEXT FILE* to be able to do anything usefull with it. For example: you could not fseek into the middle of a line (i.e. record) of a variable-lenght-record file, or whatchamacallit, which happens to be the default for all FORTRAN and EDIT output. You had to convert it to stream type before processing. One other point: when was the last you looked at the source of MicroEmacs? I'm not saying that it's optimally (or even sensibly) coded for each OS, but it sure strikes odd to find all that VMS only code in it. MicroEmacs 3.10: ibmpc.c: 11928 bytes os2.c: 11389 bytes unix.c: 14470 bytes vms.c: 32526 bytes Unfortunately (for VMS), there even are missing features ... ==pena -- Olli-Matti Penttinen <pena@fuug.innopoli.fi> Brainware Oy "When in doubt, use brute force." Tekniikantie 17 --Ken Thompson 02150 ESPOO, Finland Tel. +358 0 4375 320 Fax. +358 0 4553 117
peter@ficc.ferranti.com (Peter da Silva) (11/02/90)
Yes, the classic UNIX kernel model is rather freaky. It does have the virtue of being simple to implement, but it's not a very friendly place for deiver writing. *BUT* UNIX is not defined by the UNIX kernel model. It is defined by the user and programmer interfaces (the UNIX programmer's manual, SVID, POSIX, what have you). You can have whatever kernel you want and if I can compile "make" and it runs it's UNIX. And that's the most important advantage UNIX has over other operating systems. It's not the portability that's important so much as the relatively high level of the programmer interface. -- Peter da Silva. `-_-' +1 713 274 5180. 'U` peter@ferranti.com
sweh@tharr.UUCP (Stephen Harris) (11/02/90)
How in VMS do you have filters and pipelines? eg, what would be the VMS (DCL?) equivalent of getso - | tbl | pic | eqn | rof | col | sqps | lpr -Ppost < file Is there an equivalent, or would it need a lot of temporary files? -- Stephen Harris Disclaimer: me have an opinion? | Email: ..!ukc!axion!tharr!sweh What an idea! | sweh%tharr.uucp@uk.co.bt.axion Wanted: humour transplant | tharr!sweh@uk.ac.ukc <-- tharr *free* public access to Usenet in the UK 0234 261804 -->
hughes@copper.ucs.indiana.edu (larry hughes) (11/05/90)
In article <1380@tharr.UUCP> sweh@tharr.UUCP (Stephen Harris) writes: >How in VMS do you have filters and pipelines? >eg, what would be the VMS (DCL?) equivalent of > getso - | tbl | pic | eqn | rof | col | sqps | lpr -Ppost < file > >Is there an equivalent, or would it need a lot of temporary files? Yes, you would need a lot of temporary files. The output of each step would have to redirected to a file (ala $ DEFINE/USER SYS$OUTPUT filename) and then the temp file would have to be redirected as input to the next step (ala $ DEFINE/USER SYS$INPUT filename). And, don't forget to delete the temp files! (Yes, this is slightly worse that the way that MS-DOS does it...at least DOS makes the temp file usage transparent.) //=========================================================================\\ || Larry J. Hughes, Jr. || hughes@ucs.indiana.edu || || Indiana University || || || University Computing Services || "The person who knows everything || || 750 N. State Road 46 Bypass || has a lot to learn." || || Bloomington, IN 47405 || || || (812) 855-9255 || Disclaimer: Same as my quote... || \\==========================================================================//
bhoughto@cmdnfs.intel.com (Blair P. Houghton) (11/06/90)
In article <69986@iuvax.cs.indiana.edu> hughes@copper.ucs.indiana.edu (larry hughes) writes: >In article <1380@tharr.UUCP> sweh@tharr.UUCP (Stephen Harris) writes: >>How in VMS do you have filters and pipelines? >>eg, what would be the VMS (DCL?) equivalent of >> getso - | tbl | pic | eqn | rof | col | sqps | lpr -Ppost < file >> >>Is there an equivalent, or would it need a lot of temporary files? > >Yes, you would need a lot of temporary files. Would a POSIX-compliant VMS fix this? --Blair "You know what comes next."
jmaynard@thesis1.hsch.utexas.edu (Jay Maynard) (11/06/90)
In article <803@inews.intel.com> bhoughto@cmdnfs.intel.com (Blair P. Houghton) writes: >Would a POSIX-compliant VMS fix this? ------------------- Uhm, Blair...could VMS be hacked up into POSIX compliance? If so, then it's a looser standard than it should be... -- Jay Maynard, EMT-P, K5ZC, PP-ASEL | Never ascribe to malice that which can jmaynard@thesis1.hsch.utexas.edu | adequately be explained by stupidity. "With design like this, who needs bugs?" - Boyd Roberts
hughes@copper.ucs.indiana.edu (larry hughes) (11/06/90)
In article <4283@lib.tmc.edu> jmaynard@thesis1.hsch.utexas.edu (Jay Maynard) writes: >In article <803@inews.intel.com> bhoughto@cmdnfs.intel.com (Blair P. Houghton) writes: >>Would a POSIX-compliant VMS fix this? > ------------------- >Uhm, Blair...could VMS be hacked up into POSIX compliance? If so, then it's >a looser standard than it should be... VMS is scheduled for POSIX-compliance (though I cannot remember the timeframes). It's called VIP (VMS Integrated POSIX). To answer the first question, a POSIX-complaint VMS would not fix this, to my understanding. POSIX defines the calling standard (interface) to the operating system. However, I don't have a deep understanding of this, so don't take my word for it. Any POSIX gurus out there that can give a brief comment? //=========================================================================\\ || Larry J. Hughes, Jr. || hughes@ucs.indiana.edu || || Indiana University || || || University Computing Services || "The person who knows everything || || 750 N. State Road 46 Bypass || has a lot to learn." || || Bloomington, IN 47405 || || || (812) 855-9255 || Disclaimer: Same as my quote... || \\==========================================================================//
rja7m@chaos.cs.Virginia.EDU (Ran Atkinson) (11/06/90)
In article <803@inews.intel.com>, bhoughto@cmdnfs.intel.com (Blair P. Houghton) writes: >>Would a POSIX-compliant VMS fix this? In article <4283@lib.tmc.edu>, jmaynard@thesis1.hsch.utexas.edu (Jay Maynard) writes: > Uhm, Blair...could VMS be hacked up into POSIX compliance? > If so, then it's a looser standard than it should be... DEC have publically stated that they intend to make VMS a POSIX compliant system eventually. There participation in the various POSIX committees bears this out. BTW, I agree with Jay that the POSIX standard is looser than it should be -- especially in the Shell & Tools area. The fact that DEC plans a POSIX compliant VMS without a major overhaul is an excellent existence proof that the standard is too loose. Followups to alt.religion or comp.std.unix as appropriate...
emery@linus.mitre.org (David Emery) (11/06/90)
There are two parts of POSIX you'd need to do
>> getso - | tbl | pic | eqn | rof | col | sqps | lpr -Ppost < file
First, you need the pipe facilities provided by P1003.1. No problem,
that will have to be in the VIP release.
The second thing you need is the shell. I'm not a P1003.2 shell
expert, but I don't see why this isn't a legal POSIX shell command.
The question is: will VIP come with a P1003.2-conformant shell? If
so, then this should work just fine...
dave emery
emery@aries.mitre.org
mjr@hussar.dco.dec.com (Marcus J. Ranum) (11/06/90)
In article <EMERY.90Nov5145850@aries.linus.mitre.org> emery@linus.mitre.org (David Emery) writes: >[...] will VIP come with a P1003.2-conformant shell? I'd expect that's "by definition". I don't know how it'll be done, though - starting up processes on VMS is more expensive than UNIX - long pipelines will probably not be a great deal of fun. It'll be nice to finally be able to pass parameters to a program in a reasonable manner... (unless P1003.2 has enough holes in it that you get hit with "CAT /VERBOSE=TRUE/PACK=WHITSPACE/INPUT=FILE.TXT") mjr. -- "I defy anyone to trick me. Men would have to be exceptional rascals to be as bad as I assume them to be." - Emperor Napoleon I [conversation, 1816]
bhoughto@cmdnfs.intel.com (Blair P. Houghton) (11/06/90)
I told you you knew what was coming! :-) In article <1990Nov5.191934.19739@murdoch.acc.Virginia.EDU> Ran Atkinson <randall@Virginia.EDU> writes: >BTW, I agree with Jay that the POSIX standard is looser than it >should be -- especially in the Shell & Tools area. The fact >that DEC plans a POSIX compliant VMS without a major overhaul >is an excellent existence proof that the standard is too loose. Did they say it wasn't a major overhaul? EE Times article on page 1 ("Digital to take RISC/Unix road", Oct. 29, '90) (the title isn't actually descriptive; DEC's still clinging to this dead baby (i.e., VMS) and hoping someone will want to buy it; they claim tens thousand of applications (most of them of course options to SET :-)) nd half a million installed systems) indicates little about the actual effort. DEC may have 20,000 or 2 people working on it, for all anyone knows. They call it an "open VMS". What's that mean? Beats me. The time-frame is apparently _next_quarter_ (that's BEFORE April of 1991, kids) for POSIX.1, .2, and .3 compliance. The rest of it is supposed to be out by "mid-1991." As to whether it will handle pipes, I dare say it should! But there I dare pretty far, not having read the system-services section of POSIX (or any other section, for that matter), but would it be Unix without pipes? Heck, no! --Blair "THIS, I gotta SEE!" P.S. to Randall: leave the cute 'Followup-to:' crap in alt.flame. Some of us are serious about this discussion.
rang@cs.wisc.edu (Anton Rang) (11/06/90)
In article <PENA.90Nov1164830@fuug.fi> pena@fuug.fi (Olli-Matti Penttinen) writes: > The worst thing is that (at least under VMS 4.x) you really had to >know the exact file type of a *TEXT FILE* to be able to do anything >useful with it. This is an argument which comes up fairly often. It's only partly true. The C I/O model (a file is a stream of bytes) works well for an awful lot of applications. The problem is that if you have a more complex file structure, mapping it into the stream-of-bytes framework in a way that makes sense is difficult. The way that most languages under VMS do their I/O is by using the high-level RMS calls. You can $OPEN a file, and then read through it, one record at a time, using $GET. This will let you sequentially scan through file with a record structure--whether it's a variable-length record file, a stream file, a 'relative' (numbered-record) file, or an ISAM file. You can use $PUT and/or $UPDATE to change files, one record at a time. It's difficult to map this directly into a read/write/fseek model, except with stream files (which are basically identical to UNIX text files). For instance, each record in a (sequential) variable-length record file has a two-byte length field, and may include a byte of padding. If you want to treet fseek() as taking an offset which is a character count, in this file type, you don't know where to position the 'file pointer' without scanning from the start of the file. (That's why it's a "sequential file"--it's designed for sequential access, and shouldn't be used [under VMS] for random access.) An ISAM file type is even worse...if you have records with keys of 'abc', 'def', and 'ghi', they may have that logical order, but be stored physically in a different order, different parts of the record may be in different areas of the disk, and the record itself may be stored in compressed form. How could fseek() deal rationally with this? If you want an easy port of a program using the UNIX I/O facilities, it will have to deal with stream files, since that's what UNIX provides. (Unfortunately, the VMS C RTL still had some rather odd quirks last time I looked, but the latest release was supposed to improve it--I haven't used it since then.) Hopefully this isn't really controversial, but I've directed followups to alt.religion.computers just in case.... Anton +---------------------------+------------------+-------------+ | Anton Rang (grad student) | rang@cs.wisc.edu | UW--Madison | +---------------------------+------------------+-------------+
tp@mccall.com (Terry Poot) (11/07/90)
In article <803@inews.intel.com>, bhoughto@cmdnfs.intel.com (Blair P. Houghton) writes: >In article <69986@iuvax.cs.indiana.edu> hughes@copper.ucs.indiana.edu (larry hughes) writes: >>In article <1380@tharr.UUCP> sweh@tharr.UUCP (Stephen Harris) writes: >>>How in VMS do you have filters and pipelines? >>>eg, what would be the VMS (DCL?) equivalent of >>> getso - | tbl | pic | eqn | rof | col | sqps | lpr -Ppost < file >>> >>>Is there an equivalent, or would it need a lot of temporary files? >> >>Yes, you would need a lot of temporary files. VMS already has a mechanism similar to pipes, called mailboxes. The major difference is that mailboxes are record rather than character oriented. "Fixing" this would only require a new device driver to implement a character oriented mailbox (aka pipe). Note that the record oriented nature is not an insurmountable problem, even now. You just have to make sure your buffers are properly flushed. I ported the PBMPLUS utilities to VMS and can pipe them all together just fine. The code that does the pipes has been floating around the net for a long time, and is widely available. I made a very simple mod to handle binary data. Thus this is possible, just not commonly done on VMS. One of the reasons for that is that VMS is slower at creating subprocesses than unix, another is just a cultural issue. >Would a POSIX-compliant VMS fix this? In answer to the various responses to this comment: Jay Maynard: >Uhm, Blair...could VMS be hacked up into POSIX compliance? If so, then it's >a looser standard than it should be... Why, because VMS can comply with it? :-) Yes, VMS will be made POSIX compatible. This will be delivered in '91. It will also be made XPG/3 compatible (not sure about the time frame). This is not a small project, DEC has been talking about it for over a year at DECUS sessions. Larry Hughes: >To answer the first question, a POSIX-compliant VMS would not >fix this, to my understanding. POSIX defines the calling standard >(interface) to the operating system. However, I don't have a deep >understanding of this, so don't take my word for it. As I said, VMS can already do this. If pipes are part of the POSIX standard, then it will be able to do it with even less work. Whether the standard VMS utilities are modified to work as filters is a whole 'nother question. Ran Atkinson: BTW, I agree with Jay that the POSIX standard is looser than it >should be -- especially in the Shell & Tools area. The fact >that DEC plans a POSIX compliant VMS without a major overhaul >is an excellent existence proof that the standard is too loose. Who said it wasn't a major overhaul? At the presentation I attended, they said that the POSIX system calls would be added to the VMS kernal, equal in status to the existing VMS system services. Supporting unix-style links will require major changes to the file system. This is a major, long-term project that DEC has been working on for years. They have announced their intention to support future POSIX standards as they stabilize (they are currently only talking about 3 of them, I forget which). They will have VMS branded by X/OPEN as XPG/3 compatible. They are going to add much if not most of the OSF technology (they already have Motif), especially the DCE (distributed computing environment), with the eventual goal of being completely compatible with the OSF specs. They fully intend to make VMS a proper superset of "standard" unix, as such a thing comes into existance. As far back as the founding of OSF, before they decided they were going to license code and not just write specs, Ken Olsen boasted that VMS would be the first OSF compliant operating system (which created a furor among unix vendors who think that open systems must be unix by definition, which would be a cute oxymoron). Who knows, if all the unix vendors had to implement OSF from scratch, they might have made it (especially since significant parts of Motif and the DCE come from DEC in the first place). Disclaimer: I am not affiliated with DEC except as a customer. The above information all comes from articles published in various DEC-oriented magazines, and presentations given by DEC employees that I have attended at various DECUS symposia. -- Terry Poot <tp@mccall.com> The McCall Pattern Company (uucp: ...!rutgers!ksuvax1!mccall!tp) 615 McCall Road (800)255-2762, in KS (913)776-4041 Manhattan, KS 66502, USA
boyd@necisa.ho.necisa.oz (Boyd Roberts) (11/07/90)
In article <1380@tharr.UUCP> sweh@tharr.UUCP (Stephen Harris) writes: >How in VMS do you have filters and pipelines? >eg, what would be the VMS (DCL?) equivalent of > getso - | tbl | pic | eqn | rof | col | sqps | lpr -Ppost < file > >>Is there an equivalent, or would it need a lot of temporary files? > It would be a lot of temporary files. But look at it this way, you could set up a file `stdout.dat' manipulated by a DCL script that ran all the commands in sequence such that: process n's stdout.dat;N == process n+1's standard input process n+1's stdout.dat;N+1 == process n+2's standard input etc... It'd be marvellous, a different version of stdout for each output stage of the pipeline. All individually named by version number and _all_ of them left lying around after the completion of the `pipeline' The possibilities are endless! :-) Boyd Roberts boyd@necisa.ho.necisa.oz.au ``When the going gets wierd, the weird turn pro...''
dnb@meshugge.media.mit.edu (David N. Blank) (11/08/90)
I actually have a C program which allowed VMS users to do things like redirection to/from files and do piping (it handled the mailbox setups for you). However, this brings up another problem with this scenario: the standard VMS programs don't seem to be written with pipelining in mind. They're not careful to use the stdin and stdout type models. As a result, the program I used for pipelines only had limited functionality. Peace, dNb
guy@auspex.auspex.com (Guy Harris) (11/10/90)
(Dunno if "alt.religion.computers" is the right place, but it's probably better than "comp.unix.programmer" at this point....) > The best thing about RMS is it's ability to support DBMS's which >generally run circles 'round a similar one under Ultrix/BSD. Besides, >it's a little bit simpler to implement a database using a filesystem >w/ built in ISAM instead of opening a Unix partition and seeking here >and there. Does a UNIX system with, say, an XPG3-compliant ISAM library have "a filesystem w/ built in ISAM"? If not, why not? If the answer is "because that's implemented atop the file system rather than built into the file system", how is this different from VMS, which as I remember implements ISAM, just as it implements the various text file types, atop QIOs that just read and write blocks of files? If the answer is "well, RMS runs in *executive* mode rather than *user* mode", how much does this really matter? If the answer is "well, Files-11 lets you store all sorts of attributes in the file header that the low-level QIO interface doesn't interpret, but that RMS does", again, how much does this really matter?