Uday S Reddy
u.s.reddy at cs.bham.ac.uk
Tue May 13 10:42:59 EDT 2014
Philip Wadler writes:
> I finally downloaded a scan of "The FORTRAN automatic coding system". The
> word type appears several times, for instance to distinguish "IF-type
> statement" from "DO-type statement", but is not used to distinguish
> fixed-point from floating-point. Yours, -- P
> J. W. Backus, et al, The FORTRAN automatic coding system, Papers presented
> at the 26-28 February 1957, Western Joint Computer Conference.
Thanks for clearing that up! I do believe Fortran's distinction between
INTEGER and REAL was bascially carried over from assembly languages. In the
computers of the day, the instruction set worked on one word-long integers
and two word-long floating point numbers. So, even in assembly, one had to
reserve different amounts of storage for variables of different types, which
amounted to "variable declarations" in assembly. Fortran's variable
declarations were basically high-level counterparts of these assembly
Algol 60 report had a section 2.8 titled "Values and Types" in the preamble
where it is stated:
The various "types" (integer, real, Boolean) basically denote properties
of values. The types associated with syntactic units refer to the values
of these units.
Note the "types" in quotes, indicating that this was a novel usage of the
term in the Algol report.
The formal parameters of procedures were declared with "specifiers" and the
syntax of specifiers was given as:
<specifier> ::= string | <type> | array | <type> array
| label | switch | procedure | <type> procedure
These are closer to what we call types today.
In the History of Programming Languages discussion on Algol 60, Peter Naur
indicated that Algol 60 adopted call-by-name parameter passing essentially
to provide a single rule of evaluation that covered all these
types/specifiers, instead of a separate rule for each specifier (which were
apparently considered in earlier drafts).
More information about the Types-list