Browse Prior Art Database

Symmetric programming languages

IP.com Disclosure Number: IPCOM000128725D
Original Publication Date: 1984-Dec-31
Included in the Prior Art Database: 2005-Sep-16
Document File: 8 page(s) / 30K

Publishing Venue

Software Patent Institute

Related People

David Gelernter: AUTHOR [+3]

Abstract

A symmetric programming languages is one in which, for any set of statements or expressions c we can write not only that the c succeed each other in time (in other words that they are executed sequentially) but that they succeed each other in space, or in other words co-exist. While no existing programming languages are symmetric in our sense, any one of a significant class of existing languages can be transformed into a symmetric analog, and the transform is both simpler and more powerful than the original. The class of "symmetrically transformable" languages appears to include most of the Algol languages and Lisp; we will concentrate on Pascal and its symmetric transform, Symmetric Pascal. Symmetric transformation is interesting (we argue) not only because it leads to more powerful languages, but because it sheds some light on the nature of programming languages generally.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 15% of the total text.

Page 1 of 8

THIS DOCUMENT IS AN APPROXIMATE REPRESENTATION OF THE ORIGINAL.

Symmetric programming languages

David Gelernter Yale University Department of Computer Science New Haven, Connecticut

July, 1984 z

1. Introduction.

A symmetric programming languages is one in which, for any set of statements or expressions c we can write not only that the c succeed each other in time (in other words that they are executed sequentially) but that they succeed each other in space, or in other words co-exist. While no existing programming languages are symmetric in our sense, any one of a significant class of existing languages can be transformed into a symmetric analog, and the transform is both simpler and more powerful than the original. The class of "symmetrically transformable" languages appears to include most of the Algol languages and Lisp; we will concentrate on Pascal and its symmetric transform, Symmetric Pascal. Symmetric transformation is interesting (we argue) not only because it leads to more powerful languages, but because it sheds some light on the nature of programming languages generally.

2. The and-structure.

We will describe the symmetric transformation in terms of an evaluation procedure eval.

In symmetric languages, large structures may be built from small ones using either of two structuring tools: the sequence-form aTd the and-form. The sequence form appears as

This material is based upon work supported by the National Science Foundation under Grant No. MCS al; s2; ... sn. Each si is either a statement or an expression. Applying eval to this sequence form results in eval's being invoked on each st in sequence. Evaluation is complete when eval of each si is complete, and the value returned is the value of eval(sn).

The and-form appears as

(Equation Omitted)

Each di is either a variable declaration or a procedure declaration. Each si is either a statement or an expression. Applying eval to this and-form results in eval's being invoked on all si concurrently. The entities named by the declarations di are accessible to the si until evaluation of all si is complete; a variable or procedure Q that occurs in an si refers to the Q declared by some di, if there is one. If no di declares an entity named Q, then Q refers to an entity named in the encompassing and-form; failing that, to a Q declared in the next-encompassing and-form and so on, Evaluation is complete when eval of each si is complete, and the value returned is

(Equation Omitted)

Yale University Page 1 Dec 31, 1984

Page 2 of 8

Symmetric programming languages

whose meaning we discuss below. Like the Lisp list, the and-form is both an expression and a data structure; eval, in other words, is not the only operation defined over and-forms. We discuss others in section 3.

The fundamental meanings (as opposed to the operational definitions) of the sequence-form and the and-form are as follows: the components of a sequence-form have disjoint sequential lifetimes, but occupy one space;...