Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
A
B
C
D
E
F
G
H
I
JK
L
M
N
O
P
QR
S
T
UV
WXYZ+
Get a full dump of the dictionary:
List of Names
Short Form
Full Form
- Concurrent Pascal
- See:
- Language type:
P - Parallel or Multi-programming
- Description:
Concurrent Pascal is a dialect of the
structure Pascal language, extended to
support abstract data types,
multi-tasking, and monitors. It was
intended for operating system programming
and research.
The syntax of Concurrent Pascal was
essentially the same as that of original Pascal,
except for the added concurrency and ADT
features, and a few features omitted.
The language is strongly typed and
safe: variant records and pointers as
defined in original Pascal are not
supported.
Concurrent Pascal adds the following
fundamentally new features
to Pascal: process types, monitors,
class types (no inheritance), init and
cycle statements, and queues.
Some fundamental features of Pascal were
dropped: recursion, goto statements,
packed arrays, pointers, and file types.
Original versions of Concurrent Pascal
were implemented on various mini-computer
and mainframe hardware in the 1970s.
No versions seem to be available on the
web.
- Origin:
- See Also:
- Remarks:
According to its creator, Concurrent Pascal
was created to satisfy the
following beliefs:
- Concurrent
programms can be written exclusively in
high-level language [Note: PL/I and C
don't count as high-level -- too unsafe!]
- Time-dependent programming errors
must be detected during compilation
- A concurrent programming language must
support a programming discipline that combines
data and procedures into modules.
- A programming language should be
abstract and secure [safe].
The high-level and formally defined
process and synchronization
constructs of Concurrent Pascal had a
profound influence on the programming
world, especially the operating system
and real-time programming. The fundamental
idea of monitors that Hansen
introduced with the language was
adopted in some fashion by many later,
major languages including Modula,
Ada, and Java.
and
- Date:
- Sample code:
{ A small example monitor and process from Hansen's 1993 }
{ paper given at HOPL-II. }
type linebuffer =
monitor
var contents : line;
full : Boolean;
sender, receiver : queue;
procedure entry receive(var text : line);
begin
if not full then delay(receiver);
text := contents; full := false;
continue(sender);
end;
procedure entry send(text : line);
begin
if full then delay(sender);
contents := text; full := true;
continue(receiver);
end;
begin full := false;
end; { linebuffer }
type printerprocess =
process(buffer: linebuffer)
var param : ioparam;
text : line;
begin
param.operation := output;
cycle
buffer.receive(text);
repeat io(text,param,printdevice)
until param.status = complete;
end
end;
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is ziring@home.com
[Ziring MicroWeb Home]
[Dictionary Start]
[Sign Guestbook]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.