Date : Tue, 23 Jul 1985 20:12:49 EDT (Tuesday)
From : Tom Reid (MS W932) <treid@MITRE-GATEWAY.ARPA>
Subject: Re: Program Design Languages
While the Ada movement has tried to make the concept of PDLs concrete,
the traditional notion is a "pidgen or structured English" statement
of the intent of a procedure; the procedures being produced in a top-down,
step-wise refinement process. The "syntax" is usually derived from an
ALGOL base (Pascal, Ada, etc.). The object of a procedure written in PDL
is WHAT the procedure is to accomplish, not HOW. The key words such as
IF, THEN, WHILE, DO, BEGIN, etc. are there with the expressions and
statements replaced with ENGLISH language statements. An example:
WHILE train has not arrived DO
IF you have a quarter
THEN play pac-man
ELSE
IF you have a $1 bill
THEN use coin changer
ELSE try begging
The English language statements can become comments in your final program.
The object in this design phase is the overall structure and logic of what
you want to accomplish, leaving the how to the next lower refinement.
The Ada community has settled on the obvious: why should your PDL be any
different from the programming language ==> the PDL for an Ada program
should very closely resemble Ada so that there is little translation from
the design to the implementation. In fact, you should be able to make the
English language statements comments and/or replace them with the HOW.
My feeling is that the PDL should be rather informal and very reader
oriented with the intent of explaining what a routine is to do in the
easiest, most understandable way without having a lot of syntax thrust
upon you. PDL is for the human <--> the programming language is for the
computer (I agree, too simplistic).
There are some pseudo-compilers/interpreters which will execute and
attempt to analyze PDL (ie., a logical expression is displayed and
the user is prompted for a Y/N, an arithmetic expression is prompted
for a number, and an English statement displayed as an effect - you
are attempting to symbolicly execute your design). However, PDL
languages with the usual notion of compilers are not really applicable.