Article View: comp.lang.postscript
Article #9086Re: PostScript Language
From: Ivan N. Bach
Date: Tue, 27 Feb 1990 06:40
Date: Tue, 27 Feb 1990 06:40
146 lines
8092 bytes
8092 bytes
There have been several emotional responses to my recent posting about
the deficiencies of PostScript, but nobody disputed my claims by
offering some technical counter arguments.
So most of you seem to like PostScript, and you think that one of its
best features is that it supports only a readable format. You describe
PostScript as it was some new version of BASIC or LEGO, and you like to
code in that language.
The only problem is that PostScript was not designed for that purpose,
and most of the time it is not used the same way as, for example, BASIC.
John Warnock described PostScript as a "hidden layer" between a printer
driver and a printer. Most of the time (99.99% of the time) people are
using desktop-publishing applications, such as PageMaker or Ventura-
Publisher, to indirectly generate PostScript. They are not directly
writing PostScript code. When you request a printout, the application
calls a driver for your printer, the driver generates PostScript code,
and PostScript code is sent to a PostScript interpreter or stored in a
file. Most of the time PostScript code is automatically generated,
interpreted, and discarded, without ever being seen by a human being.
Sometimes PostScript is transmitted to another computer, or to a
remote PostScript printer. Only occassionally somebody looks at the
PostScript code because something goes wrong, or an adjustment has to
be made, and that adjustment cannot easily be made by using an
application program.
The fact is that the readable format is NEEDED only when you have
to manually change or debug a PostScript program, or when you have to
transmit it over a communications channel that does not transmit
binary data reliably. To insist that a readable format is needed all
the time is like insisting that all computer applications should be
distributed in a much longer, debugging version that preserves the
line numbers in source code, because somebody someday may want to
debug them.
Have you ever stopped to think why do you have to code directly in
PostScript? Most of the time the problem is that an application
does not give you access to the full power of PostScript, and the
only way you can achieve a particular special effect is to code
it yourself.
If PostScript was used only by a small number of people, I would
understand your lack of concern about how efficiently page descriptions
are encoded in PostScript, and how the efficiency of PostScript
compares with other methods of encoding the same data.
I have to remind you that PostScript was proposed as the ONLY method
for encoding page descriptions in all countries of the world, because
that will facilitate the transmission of page descriptions to remote
computers and printers. When you propose a new world standard for
storing and transmitting image data, you may want to check the
efficiency of your encoding, not to please me, but to avoid wasting
billions of dollars.
Let us assume that there are 1,000,000 people in the world who use
PostScript, and that each person on average wastes 1MB of disk
storage and 1 hour of time each year because of inefficient encoding.
The total waste would be huge year after year. I think that the
actual numbers are much greater, and growing each year. Not to
mention the Kanji version of PostScript.
I find it ironic that the users of USENET, who are used to the
warnings about wasting the bandwidth on our network, do not seem to
be very concerned about the efficiency of PostScript.
Just how inefficient is the PostScript readable format? I had the
opportunity to compare page descriptions in PostScript with the
corresponding page descriptions in a language that supported both
a readable and binary format. Depending on what kind of statements
you use, and how many bytes are taken by comment statements, you
can reduce the number of bytes needed to encode a given image by
as much as 90%. You people are telling me that this does not
matter, and that the fact that PostScript supports only a readable
format is of minor importance.
It is true that a PostScript program is usually more compact than
a bitmap that can be produced from that code, but nobody can tell
me that a statement such as:
/Helvetica-BoldOblique findfont 20 scalefont setfont
is the most compact way of specifying that you want a particular
20-point font. What do you think a PostScript interpreter does
with these long names as it scans the input stream of characters?
It immediately replaces them with more compact codes.
Some of you suggested that I should simply pay more if I wanted
to transmit page descriptions faster. That is like saying that
I should simply buy more gas if the engine in my car is not
designed to be very efficient. I was hoping that at least some
people from California would be concerned about unnecessary wasting
of scarce resources.
There are many programs which can be used to compress PostScript
code. The problem is that such code cannot be transmitted
directly to a PostScript printer. You have to implement some
program or device at the printer side that will decompress the
PostScript code before it is sent to the PostScript interpreter.
Some of the QMS interpreters accept a binary format just as
easily as the corresponding readable format. You do not have
to specify any options or set any switches. You just send
your code to the interpreter in one of the supported formats.
By default, the driver for a PostScript printer should generate
PostScript in a compact, binary format. The driver should
generate PostScript in a readable format upon request. A couple
of years ago, I implemented such a feature in one of my Windows
printer drivers.
Which binary format should we use for PostScript? It could
be proposed by Adobe. I understand that Adobe already uses a
binary format in its Display PostScript. Alternatively, we
could design an efficient binary format in this newsgroup and
submit our proposal to the companies which have developed
PostScript interpreters. We could implement the proposed
format in the QMS UltraScript interpreter to see how it works.
I think that it is about time that we make a substantial contribution
to the PostScript language in this group, instead of quarelling
about less important things.
When we finish designing the PostScript binary format, we could
design the user interface for an application like the Adobe
Illustrator that will give us access to the full power of
PostScript. Then we could implement such an interface under
Microsoft Windows, OS/2 Presentation Manager, X windows, etc.
We should also do something about the executive or interactive
use of PostScript. Have you ever tried to use a PostScript
interpreter in interactive mode? Most user interfaces for this
mode are worse than BASICA. You cannot load a PostScript program,
submit it for interactive interpretation, edit it, or resubmit
it the way you can do that with a program written in BASIC. We
could assign some line numbers to PostScript statements, so that
we can easily refer to them. Those line numbers would not become
part of the source code. Such a user interface would be much
more useful for learning PostScript than the current interfaces
which scroll the statements off the top of the screen, and force
you to reenter all statements if you make a slightest mistake.
Ivan N. Bach Tel (408) 986-9400, x508
QMS, Inc. Fax (408) 727-3725
2650 San Tomas Expressway arpa: ib@imagen.com
Santa Clara, CA 95051 uucp: decwrl!imagen!ib
Technical Details
Message-ID:
<9457@imagen.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!attcan!uunet!aplcen!uakari.primate.wisc.edu!brutus.cs.uiuc.edu!lll-winken!sun-barr!newstop!sun!imagen!daemonShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!aplcen!uakari.primate.wisc.edu!brutus.cs.uiuc.edu!lll-winken!sun-barr!newstop!sun!imagen!daemon From: ib@apolling (Ivan N. Bach) Newsgroups: comp.lang.postscript Subject: Re: PostScript Language Message-ID: <9457@imagen.UUCP> Date: 27 Feb 90 06:40:20 GMT Sender: daemon@imagen.UUCP Lines: 146