[net.micro.cpm] Program Design Languages

COLSA@SIMTEL20.ARPA (Larry Armijo) (07/23/85)

I have heard that there exist Program Design Languages (PDL's) which are
used to develop preliminary versions of computer programs on larger computers.
Does anyone know if PDL's are available for micros?  I would think that
these design languages would be very useful in the preliminary design of
larger application programs.  If you know of any PDL's for micros, either
commercial or public domain, I would appreciate some guidance.  Thanks in
advance.

Larry
COLSA@SIMTEL20
-------

treid@MITRE-GATEWAY.ARPA (MS W932) (07/24/85)

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.