Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Reid G.C.Thinking in PostScript.1990.pdf
Скачиваний:
17
Добавлен:
23.08.2013
Размер:
846.44 Кб
Скачать

Chapter 2

PostScript is Not Like C

Many programmers try to treat a new language as if it were an old language with which they are already familiar. “If you know one programming language, you know them all.” That is somewhat true with procedural languages like C, Pascal, Modula 3, or maybe FORTRAN. There are only so many ways to say if ... then ... else, and once you learn one language, you can learn the others without too much difficulty. These languages typically only have a dozen or so language elements; if you were to name all the “reserved words” in Pascal or C, how many would you come up with? If you named the built-in features of the language, you wouldn’t get much past control structures, procedure definitions, data types, and input/output capabilities. These languages are general-purpose procedural languages.

But PostScript has over 300 individual special-purpose operators, it is interpreted rather than compiled, it uses post-fix notation, and is quite different from C. This is good, to a large extent, but again, you need to

9

understand the differences rather than to take the posture that it’s just another language.

In a procedural language, the interface between components of a program is formalized in the notion of a procedure call. (For more information about procedures, see Chapter 9). The program is typically written as a series of modular procedures or functions, with a well-defined calling mechanism for transferring control and passing data between the modules. This calling mechanism is artificial, and is apparent only at the programming language level. When compiled, the data (or pointers to the data) are in fact placed on the operand stack of the hardware processor, and an instruction to jump to a subroutine (JSR) is issued to transfer control to the other procedure, which then uses the data on the stack. The notion of type checking is carried out at the language level by requiring that the data be declared to be of an explicit type as the data are being passed to or from a procedure or function.

When writing C programs, the programmer designs the modules, the interfaces, and the interaction between them. The data structures are designed to work cleanly within the modular design of the program, and the parameters to the various procedures are set up to pass data appropriately between the modules or procedures. Data types and structures should be appropriate for the task at hand; some of them are made globally visible (and therefore can be used throughout the entire program); others are local to a particular procedure (and can be used only within that procedure). A fairly high percentage of coding time is spent just selecting names for data types, structure elements, procedures, variables, and modules. The names given to these program elements contribute heavily to the readability and maintainability of the code.

The PostScript language is an interesting hybrid between high-level and low-level languages. It is high level in the sense that there are individual operators that encompass very powerful functionality (the show operator, for example), yet the mechanics of the language are less structured than other high-level languages, and the manipulation of objects on the operand stack more closely resembles assembly-language programming.

10

Chapter 2: POSTSCRIPT IS NOT LIKE C