Discusses various ideas of abstraction.
Describes 3 epistemological arguments
What are programs?
Programs as Mathematical Objects - Programs are symbolic objects that can be manipulate -- like mathematical expressions.
Dualism - Programs are abstract. Programs are Concrete. The the actual text of the program can be said to be concrete. The ideas in it are abstract. The ideas can be implemented many different ways. Does this make software relative or absolute?
Program vs Specification - Is the specification a program? If a specification is sufficiently detailed and an interpreter program is written, it may be able to on-the-fly go directly from specification to program. In this sense, the specification becomes a meta-program, but still a program. Another form of dualism.
The Canonical form of an algorithm, is its normal form. A canonical/normal form cannot be reduced any further.
Programming Languages as Axiomatic Theories - Are they mathematical theories? Are they set theories? Are they operational theories? All of the above? None?