[comp.ai] What is a program?

kp@uts.amdahl.com (Ken Presting) (12/28/89)

In article <973@metapsy.UUCP> sarge@metapsy.UUCP (Sarge Gerbode) writes:
>Good question.  What *is* a "program", anyway?  The ascii source
>characters, taken as an aggregate?  The machine-language code, as a
>sequence of octal or hex characters?  The magnetic patterns on the
>disc?  The electronic patterns in RAM when the program is loaded?

IMO, what make computers so attractive a technology for AI is this:  The
symbol/implementation relationship in the computer seems to parallel the
thought/neuron realtionship in people.  So, a definition of "program"
should allow us to highlight both the hardware/sofware distinction and
the hardware/software relationship.

Here is a property which any definition of "program" should entail:

     A program is a sentence of a formal grammar which denotes an
     equivalence class of mechanical devices.

To get a specific definition, the types of acceptable grammar should be
identified, as well as the denotation function.  Defining what it is for
a machine to execute a program is a little trickier, but that's another
problem.

One perhaps controversial implication is that programs are absolutely
*not* "purely abstract".  I think Searle et. al. are just mistaken about
that.  Every programming language has a semantics which is firmly
grounded in physical reality - that's why your CPU chip has a programmer's
reference.

  Sarge continues:
>Or is it, as I suspect, the detailed *concept* the programmer had in
>mind when he wrote the source code?  Perhaps the program (or, if you
>will, the overall algorithm) is a *possibility* that can be
>actualized (implemented) in a variety of ways.  This possibility
>exists in the mind of a conscious being as the concept called "the
>program".  Without the concept, you would not have a "program" but a
>mere pattern of electronic whatevers.

   The availability of public semantics for programming languages
makes the conept in the mind of an individual programmer less important.
Hopefully, the programmer's concept of his program's operation will match
the semantics of his language as defined by the compiler and processor.
But I agree with Sarge that the concept and the variety of possible
implementations are both significant.