Pascal
<language> (After the French mathematician Blaise Pascal (1623-1662)) A
programming language designed by Niklaus Wirth around 1970. Pascal was designed
for simplicity and for teaching programming, in reaction to the complexity of
ALGOL 68. It emphasises structured programming constructs, data structures and
strong typing. Innovations included enumeration types, subranges, sets, variant
records, and the case statement. Pascal has been extremely influential in
programming language design and has a great number of variants and descendants.
ANSI/IEEE770X3.97-1993 is very similar to ISO Pascal but does not include
conformant arrays.
ISO 7185-1983(E). Level 0 and Level 1. Changes from Jensen & Wirth's Pascal
include name equivalence; names must be bound before they are used; loop index
must be local to the procedure; formal procedure parameters must include their
arguments; conformant array schemas.
An ALGOL-descended language designed by Niklaus Wirth on the CDC 6600 around
1967--68 as an instructional tool for elementary programming. This language,
designed primarily to keep students from shooting themselves in the foot and
thus extremely restrictive from a general-purpose-programming point of view, was
later promoted as a general-purpose tool and, in fact, became the ancestor of a
large family of languages including Modula-2 and Ada (see also
bondage-and-discipline language). The hackish point of view on Pascal was
probably best summed up by a devastating (and, in its deadpan way, screamingly
funny) 1981 paper by Brian Kernighan (of K&R fame) entitled "Why Pascal is Not
My Favourite Programming Language", which was turned down by the technical
journals but circulated widely via photocopies. It was eventually published in
"Comparing and Assessing Programming Languages", edited by Alan Feuer and Narain
Gehani (Prentice-Hall, 1984). Part of his discussion is worth repeating here,
because its criticisms are still apposite to Pascal itself after ten years of
improvement and could also stand as an indictment of many other
bondage-and-discipline languages. At the end of a summary of the case against
Pascal, Kernighan wrote:
9. There is no escape
This last point is perhaps the most important. The language is inadequate but
circumscribed, because there is no way to escape its limitations. There are no
casts to disable the type-checking when necessary. There is no way to replace
the defective run-time environment with a sensible one, unless one controls the
compiler that defines the "standard procedures". The language is closed.
People who use Pascal for serious programming fall into a fatal trap. Because
the language is impotent, it must be extended. But each group extends Pascal in
its own direction, to make it look like whatever language they really want.
Extensions for separate compilation, Fortran-like COMMON, string data types,
internal static variables, initialisation, octal numbers, bit operators, etc.,
all add to the utility of the language for one group but destroy its portability
to others.
I feel that it is a mistake to use Pascal for anything much beyond its original
target. In its pure form, Pascal is a toy language, suitable for teaching but
not for real programming.
Pascal has since been almost entirely displaced (by C) from the niches it had
acquired in serious applications and systems programming, but retains some
popularity as a hobbyist language in the MS-DOS and Macintosh worlds.
See also Kamin's interpreters, p2c.
["The Programming Language Pascal", N. Wirth, Acta Informatica 1:35-63, 1971].
["PASCAL User Manual and Report", K. Jensen & N. Wirth, Springer 1975] made
significant revisions to the language.
[BS 6192, "Specification for Computer Programming Language Pascal", British
Standards Institute 1982].
[Jargon File]
(1996-06-12)
Nearby terms:
@-party « PARULEL « PASC « Pascal » Pascal- »
Pascal-80 » Pascal+CSP
|