Programmiersprache Pascal
Evolution der Pascal-Systeme
Aufgeführt werden Sprach(version)en, die bei der Entwicklung der
Pascal-Sprachfamilie eine wichtige Rolle gespielt haben. Dabei wird sowohl
auf Vorgänger und Nachfolger von Pascal als auch einige der zahlreichen
Varianten von Pascal eingegangen.
Die Angaben wurden überwiegend aus der folgenden Quelle entnommen:
The Language List - Version 2.4, January 23, 1995
Collected information on about 2350 computer languages, past and present.
Available online as:
http://cui_www.unige.ch/langlist
ftp://wuarchive.wustl.edu/doc/misc/lang-list.txt
Maintained by:
Bill Kinnersley, Computer Science Department, University of Kansas
Algol
Als Vorbildsprache für Pascal kann ALGOL 60 gelten.
In der Grundstruktur des Programms und bei der Darstellung von Algorithmen
gibt es eine Reihe von Ähnlichkeiten.
- IAL
-
International Algebraic Language. Original name of ALGOL 58.
"Preliminary report - International Algebraic Language", CACM 1(12):8
(1958).
- ALGOL 60
-
ALGOrithmic Language. Designed as a portable language for
scientific computations. ALGOL 60 was small and elegant. It was
block-structured, nested, recursive, and free form. It was also the first
language to be described in BNF. There were three lexical representations:
hardware, reference, and publication. The only structured data types were
arrays, but they were permitted to have lower bounds and could be dynamic.
Keywords. Conditional expression. Introduced :=, if-then-else, very
general 'for' loops. Switch declaration (an array of statement labels
generalizing FORTRAN's computed goto). Parameters were call-by-name and
call-by-value. Static local 'own' variables. Lacked user-defined types,
character manipulation and standard I/O. "Report on the Algorithmic
Language ALGOL 60", Peter Naur ed, CACM 3(5):299-314 (May 1960).
- ALGOL W
-
Derivative of ALGOL 60. Introduced double precision, complex
numbers, bit strings and dynamic data structures. Parsed entirely by
operator precedence. Used call-by-value-result. "A Contribution to the
Development of Algol", N. Wirth, CACM 9(6):413-431 (June 1966). "ALGOL W
Implementation", H. Bauer et al, TR CS98, Stanford U, 1968.
- EULER
-
(named for the Swiss mathematician Leonhard Euler (1707-1783))
Revision of ALGOL. A small predecessor of Pascal. "EULER: A
Generalization of ALGOL and Its Formal Definition", N. Wirth, CACM 9(1)
(Jan 1966) and 9(2) (Feb 1966).
Eine Sprache, die ALGOL 60 als Teilmenge enthält, ist SIMULA.
SIMULA ist die erste Sprache, die Elemente des objektorientierten
Programmierens bereitstellt.
- SIMULA I
-
SIMUlation LAnguage. Kristen Nygaard & Ole-Johan Dahl, designed
1962, implemented 1964. Extension to ALGOL 60 for the Univac 1107, for
discrete simulation. Coroutines.
- SIMULA 67
-
A general-purpose successor to SIMULA I, in which the
simulation support is defined in object-oriented terms. Introduced the
record class, leading the way to data abstraction and object-oriented
programming. Garbage collection.
- SIMULA
-
Current version of SIMULA 67. Used as the introductory
programming language at Lund Inst Tech, Sweden and U Bergen, Norway.
"Object-Oriented Programming with SIMULA", Bjorn Kirkerud, A-W 1989. "Data
Processing - Programming Languages - SIMULA", Swedish Standard SS 63 61 14
(1987), ISBN 91-7162-234-9, available through ANSI. Association for SIMULA
Users, Royal Inst of Tech, S-100 44 Stockholm, Sweden. Simula a.s.,
Postboks 4403 - Torshov, N-0402 Oslo 4, Norway, versions for almost every
computer.
ALGOL 68 hat die Entwicklung von Programmiersprachen durch eine Reihe von
Ideen beeinflußt. Die Sprache war zwar kaum im praktischen Einsatz, hat
aber beträchtlichen Einfluß auf die Gestaltung der Theorie der
Programmiersprachen genommen.
ALGOL 60 und ALGOL 68 unterscheiden sich trotz des gemeinsamen Namensstamms
ALGOL wesentlich voneinander.
- ALGOL 68
-
Adriaan van Wijngaarden et al. Discussed from 1963 by Working
Group 2.1 of IFIP. Definition accepted Dec 1968. ALGOL 68 was complex,
and posed difficulties for both implementors and users. Structural
equivalence. Automatic type conversion, including dereferencing. Flexible
arrays. Generalized loops (for-from-by-to-while-do-od), if-then-elif-fi,
integer case statement with 'out' clause, skip statement, goto. Blocks,
procedures and user-defined operators. Procedure parameters. Concurrent
execution (cobegin/coend) and semaphores. Generators heap and loc for
dynamic allocation. No abstract data types, no separate compilation.
Pascal
- Pascal
-
(named for the French mathematician Blaise Pascal (1623-1662)) N.
Wirth, ca. 1970. Designed for simplicity, in reaction to the complexity of
ALGOL 68, and intended as a teaching language. Innovations: enumeration
types, subranges, sets, variant records, case statement. Pascal has been
extremely influential in programming language design, and has led to a
great number of variations and descendants. "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.
ANSI/IEEE770X3.97-1993, very similar to ISO Pascal, but does not include
conformant arrays.
BS 6192, "Specification for Computer Programming Language Pascal",
British Standards Institute 1982.
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.
- Extended Pascal
-
Extended Pascal - ISO, 1992. A superset of ANSI and ISO Pascal. Many
enhancements, including modules, separate compilation, type schemata,
variable-length strings, direct-access files, complex numbers, initial
values, constant expressions. ANSI/IEEE770X3.160-1989 and ISO 10206.
Andere Sprachen
Aufgeführt sind hier einige Sprachen, die einerseits in der Pascal-Tradition
stehen, anderseits aber auch Anregungen für die Entwicklung von neuerer
Pascal-Versionen sowie für die Pascal-Nachfolgesprachen Modula und Oberon
gegeben haben.
- CLU
-
CLUster. 1974-1975. CLU is an object-oriented language of the
Pascal family designed to support data abstraction, similar to Alphard.
Introduced the iterator: a coroutine yielding the elements of a data
object, to be used as the sequence of values in a 'for' loop.
A CLU program consists of separately compilable procedures, clusters
and iterators, no nesting. A cluster is a module naming an abstract type
and its operations, its internal representation and implementation.
Clusters and iterators may be generic. Supplying actual constant values
for the parameters instantiates the module.
There are no implicit type conversions. In a cluster, the explicit
type conversions 'up' and 'down' change between the abstract type and the
representation. There is a universal type 'any', and a procedure force[]
to check that an object is a certain type. Objects may be mutable or
immutable. Garbage collection is built in.
Exceptions are raised using 'signal' and handled with 'except'.
Assignment is by sharing, similar to the sharing of data objects in LISP.
Arguments are passed by call-by-sharing, similar to call by value, except
that the arguments are objects and can be changed only if they are mutable.
CLU has own variables and multiple assignment.
TED (a text editor), R (a document formatter), SWIFT (an operating
system), and lp (a proof tool used for formal specification) have been
written in CLU.
"Abstraction and Specification in Program Development", Barbara Liskov
and John Guttag, McGraw-Hill, 1986. "CLU Reference Manual", Barbara Liskov
et al, LNCS 114, Springer 1981.
- Mesa
-
Xerox PARC, 1977. System and application programming for
proprietary hardware: Alto, Dolphin, Dorado and Dandelion. Pascal-like
syntax, Algol68-like semantics. An early version was weakly typed. Mesa's
modules with separately compilable definition and implementation parts
directly led to Wirth's design for Modula. Threads, coroutines
(fork/join), exceptions, and monitors. Type checking may be disabled.
Mesa was used internally by Xerox to develop ViewPoint, the Xerox Star,
MDE, and the controller of a high-end copier. It was released to a few
universitites in 1985. Succeeded by Cedar. "Mesa Language Manual", J.G.
Mitchell et al, Xerox PARC, CSL-79-3 (Apr 1979). "Early Experience with
Mesa", Geschke et al, CACM 20(8):540-552 (Aug 1977).
- Cedar
-
Xerox PARC. Superset of Mesa, adding garbage collection, dynamic
types and a universal pointer type (REF ANY). A large complex language
designed for custom Xerox hardware and the Cedar OS/environment. Data
types: atoms, lists, ropes ("industrial strength" strings), conditions.
Multiprocessing features include threads, monitors, signals and catch
phrases. Used to develop the Cedar integrated programming environment. "A
Description of the Cedar Language", Butler Lampson, Xerox PARC, CSL-83-15
(Dec 1983). "The Structure of Cedar", D. Swinehart et al, SIGPLAN Notices
20(7):230-244 (July 1985).
- Ada
-
(named for Ada Lovelace (1811-1852), arguably the world's first
computer programmer.) Jean Ichbiah's team at CII Honeywell, for the U.S.
Department of Defense, 1979. Ada is a large, complex block-structured
language aimed primarily at embedded computer applications. It has
facilities for real-time response, concurrency, hardware access, and
reliable run-time error handling. In support of large-scale software
engineering, it emphasizes strong typing, data abstraction and
encapsulation. The type system uses name equivalence and includes both
subtypes and derived types. Both fixed and floating point numerical types
are supported.
Control flow is fully bracketed: if-then-elsif-end if, case-is-when-end
case, loop-exit-end loop, goto. Subprogram parameters are in, out, or
inout. Variables imported from other packages may be hidden or directly
visible. Operators may be overloaded, and so may enumeration literals.
There are user-defined exceptions and exception handlers.
An Ada program consists of a set of packages encapsulating data objects
and their related operations. A package has a separately compilable body
and interface. Ada permits generic packages and subroutines, possibly
parametrized.
Ada programming places a heavy emphasis on multitasking. Tasks are
synchronized by the rendezvous, in which a task waits for one of its
subroutines to be executed by another. The conditional entry makes it
possible for a task to test whether an entry is ready. The selective wait
waits for either of two entries or waits for a limited time.
"Reference Manual for the Ada Programming Language", ANSI/MIL STD
1815A, U.S. DoD (Jan 1983). Earlier draft versions appeared in July 1980
and July 1982. ANSI 9183, ISO 1987. Russian: GOST 27831-88.
- Ada 9X (now Ada 95)
-
Revision and extension of Ada begun in 1988, currently under
development. Additions include object-orientation (tagged types, abstract
types and class-wide types), hierarchical libraries, and synchronization
with shared data (protected types) similar to Orca. Lacks multiple
inheritance. "Introducing Ada 9X", J.G.P. Barnes, Feb 1993.
Pascal Versionen
Pascal hat die Entwicklung neuerer Sprachen wesentlich entwickelt.
Andererseits haben neuere Sprachen gegenüber Pascal einige Verbesserungen
gebracht. Diese nehmen nun wiederum Einfluß auf die Weiterentwicklung von
Pascal.
- Concurrent Pascal
-
Brinch Hansen, 1972-75. Extension of a Pascal subset,
Sequential Pascal. The first language to support monitors. Access to
hardware devices through monitor calls. Also processes and classes. "The
Programming Language Concurrent Pascal", Per Brinch Hansen, IEEE Trans Soft
Eng 1(2):199-207 (Jun 1975).
- Pascal Plus
-
Jim Welsh & D. Bustard, Queens U, Belfast. Pascal with
extensions for object-oriented multiprogramming, uses an 'envelope'
construct for both packages and classes. "Pascal Plus - Another Language
for Modular Multiprogramming", J. Welsh et al, Soft Prac & Exp 9:947
(1979). "Sequential Program Structures", J. Welsh et al, P-H 1984, ISBN 0-
13806828-3.
- Object Pascal
-
Developed jointly by Apple Computer and Niklaus Wirth. An
object-oriented Pascal. "Object Pascal Report", Larry Tesler, Structured
Language World 9(3):10-17 (1985).
- Pascal++
-
ISO, 1994. An extension of Extended Pascal, inspired by Pascal
Plus. Adds concurrency, exceptions and object orientation, including
virtual types and multiple inheritance.
- Compas Pascal
-
Predecessor of Turbo Pascal, by POLY Data of Denmark.
Later renamed POLY Pascal, and afterwards sold to Borland.
- Turbo Pascal
-
Borland Intl's Pascal. Perhaps the first integrated
development environment for MS-DOS.
Versions 1.0-3.0: standard Pascal with a few extensions
Versions 4.0 (1987) and 5.0: separate compilation
Version 5.5: object-oriented facilities
Version 6.0: Turbo Vision OOP library
Version 7.0: Borland Pascal with Objects
(Version 8.0:) Borland Delphi for Windows with Object Pascal
Pascal Nachfolger
- Modula
-
MODUlar LAnguage. Wirth, 1977. Predecessor of Modula-2, more
oriented towards concurrent programming but otherwise quite similar.
"Modula - A Language for Modular Multiprogramming", N. Wirth, Soft Prac &
Exp 7(1):3-35 (Jan 1977).
- Modula-2
-
Wirth, ETH 1978. Developed as the system language for the
Lilith workstation. The central concept is the module which may be used to
encapsulate a set of related subprograms and data structures, and restrict
their visibility from other portions of the program. Each module has a
definition part giving the interface, and an implementation part. The
language provides limited single-processor concurrency (monitors,
coroutines and explicit transfer of control) and hardware access (absolute
addresses and interrupts). Uses name equivalence. "Programming in
Modula-2", N. Wirth, Springer 1985.
- Modula-3
-
L. Cardelli et al, DEC and Olivetti, 1988. A descendant of
Modula-2+ and Cedar, designed for safety and simplicity. Objects,
generics, threads, exceptions and garbage collection. Modules are
explicitly safe or unsafe. As in Mesa, any set of variables can be
monitored. No multiple inheritance, no operator overloading. Uses
structural equivalence. "Modula-3 Report", Luca Cardelli et al, TR 52, DEC
SRC, and Olivetti Research Center, Aug 1988 (revised Oct 1989). The
changes are described in "System Programming with Modula-3", Greg Nelson
ed, P-H 1991, ISBN 0-13-590464-1. "Modula-3", Sam Harbison, P-H 1992.
Version: SRC Modula-3 V1.5.
- Oberon
-
Wirth, 1988. A descendant of Modula-2 eliminating many things:
variant records, enumeration types, subranges, lower array indices and
'for' loops. Additions are extensible record types, multidimensional open
arrays and garbage collection. "The Programming Language Oberon", N.
Wirth, Soft Prac & Exp 18(7):671-690 (July 1988). "Programming in Oberon:
Steps Beyond Pascal and Modula", M. Reiser & N. Wirth, A-W 1992.
- Oberon-2
-
H. Moessenboeck, 1991. A superset of Oberon-1 to include
object-orientation. A redesign of Object Oberon. Type-bound procedures
(equivalent to methods), read-only export of variables and record fields,
open array variables, and a 'with' statement with variants. The 'for'
statement is reintroduced. Second Intl Modula-2 Conf, Sept 1991.
P. Böhme, 02.09.1996