Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!intercon!heaven!glenn@NeXT.COM From: heaven!glenn@NeXT.COM (Glenn Reid) Newsgroups: comp.lang.postscript Subject: Late night thoughts after reading comp.lang.postscript Message-ID: <1692@intercon.com> Date: 8 Jan 90 17:21:39 GMT Sender: amanda@intercon.com Reply-To: heaven!glenn@NeXT.COM (Glenn Reid) Organization: NeXT Inc. Lines: 94 [Note: I am posting this for Glenn from my machine, since he is evidently having problems posting directly. Feel free to verify with him that it's not a forgery :-) --Amanda Walker] --------------------------------------------------------------- This is a response to a whole slew of things I've seen on comp.lang.postscript in the past month or two. Forgive me for bringing up a whole bunch of unrelated things at once, and for jumping into the fray, but I am disappointed at the level of noise that has been clogging the arteries on what used to be a wonderful newsgroup. First order of business: Woody, I'm sure you are a wonderful hacker and very proud of your accomplishments, but almost everything you post to the net has nothing to do with "comp.lang.postscript" You are consistently well outside the boundaries of the PostScript language, as Amanda and others have been kindly and gently pointing out. Maybe it would be best for you to post your 20 messages per day to comp.laser-printers or wherever it is that they discuss printer internals and undocumented hacks and downloading machine code and stuff like that. I'm sure it's useful stuff, but it's useful to one person, in one location, for one printer, for one purpose. And if I were a "customer", I would be very, very worried about what happens when you aren't around to support the code and things quit working, since none of it is written down anywhere and much of seems dependent upon the dark underbelly of computing. Also, you need to understand what an "undocumented feature" is before you get your programmer's stripes. No one is being sneaky and deliberately hiding useful stuff from you. An undocumented feature is something that happens to work but is unsupported and may not work in the future or anywhere else. These are not documented precisely so that you won't think that they are part of the language and start using them. They are left undocumented for your own protection. If you can figure out how to use them, great. But don't flame the company for not documenting them, because they shouldn't be. Every computer company on the face of the earth has to make that decision, and Adobe has done an excellent job of drawing the line between the language and the printer implementation. You know, I have worked with PostScript intimately for over five years, and I know virtually nothing about secretdict, $printerdict, mumbledict, ROMnames, or any of the other undocumented features of PostScript. And I'm proud of that. There is no benefit that I can think of to knowing. It's like programming the Macintosh entirely without using the Toolbox, so that your program is guaranteed to break when they bring out the new system. It is like taking advantage of strange bugs in your C compiler that you know won't work on another compiler. It's like trying to write a portable program in assembly language. There just ain't any sense in it, and whatever benefit there is is very short term and not worth the time, energy, and money invested in it. A $5,000 laser printer is cheap compared to a good programmer's time, and I'm awfully tired of reading about it. I suppose that in fairness, maybe other people are getting something out of the conjecture, opinion, and misspellings that I have missed and that I shouldn't complain, but I will anyway. Now, on to other things. Someone asked why PostScript was designed the way it was, and somebody else asked how one might be able to print a 1 megabyte file or something very big. Well, they have the same answer, really. PostScript is interpreted and stack-based so that it can be executed on the fly directly from the input stream, without having to buffer lots of stuff or maintain much state in the interpreter. The program doesn't have to all fit into memory at once. You can execute arbitrarily large programs that way, and that's why it was done. If a program is reasonably well written, you should be able to make marks on the page all day long without exhausting the memory or resources. The early versions of Adobe's Colophon newsletter often were 6-10 megabyte PostScript files with images spanning a 17x22 inch spread, lots of downloaded fonts, etc. A little prudent use of save/restore and making sure to print images according to the example in the Red Book is all it takes. I think there were going to be more content to this message, but now I've managed to forget whatever it was that I was going to say. Oh, here are a few of them: "filenameforall" is supposed to supply a file name each time around the loop, otherwise it is useless; Adobe doesn't make anywhere near $1000 per printer (also, you don't double the royalty because the purchase price is double the manufacturing cost, the royalty is part of the manufacturing cost); In any case, let's bury the whole issue of undocumented code and talk about something more interesting, or else let's go find a net group that has no traffic and talk about PostScript there, instead. Glenn Reid speaking only for myself, from home, trying to rescue and preserve the spirit of the fine PostScript language