Main Steps in Algol Development History


Three main jumps were in Algol60 development:

First jump was autocode (simple assembler language).

Second jump was Fortran.

Last jump was Algol60 itself.


First Jump (autocode) gave:

  • Symbolic names for processor commands
  • Symbolic names for memory words
  • Symbol labels for control transfer

Secong Jump (Fortran) gave a lot:

  • Automatic memory allocation for variables
  • One dimensional and two dimensional arrays
  • Two types of variables (REAL and INTEGER), type of veriable defines by its name
  • Real and integer arithmetic expressions
  • Library of standard subprograms as part of language
  • loop statement 'DO' with integer counter
  • logical IF statement with using as condition of complex logical expression
  • CALL statement for subprogram call keeps list of arguments
  • passing parameters to subprogram by reference (name)
  • separated address spaces for main program and subprograms
  • operators READ/WRITE/FORMAT for formatted input/output
  • operators OPEN/CLOSE for working with files

Third Jump (Algol60) also gave a lot:

  • boolean data type and boolean expressions
  • multiple loop creation methods:
    • integer loop with integer control variables
    • real loop with real control variables
    • using logical variables for loop stop condition
    • using 'while' for loop interrupt control
    • separete definition of loop control variable values
  • block structure of program: main program block and sub-blocks in it, local definitions of variables and procedures
  • multidimensional arrays without dimension number limitation
  • array dynamic allocation in subblocks and procedures
  • comment statement
  • static local variables in subblocks and procedures (modifier own)
  • metalanguage for programming language description
  • multi assignment statements
  • conditional arithmetic/logical expressions
  • operator if ... then ... else ...
  • parameter passing to procedures by name(reference) and by value
  • free program syntax without line division
  • recursive procedure calls
  • concept of hidden environmental block with standard library procedures

What was lost in Algol60 in Third Jump :

  • operators READ/WRITE/FORMAT for formatting input/output
  • operators OPEN/CLOSE for working with files

Next Jump was AlgolW (introduced in 1966) has new features:

  • new data type "long real"
  • new data types "complex" and "long complex"
  • new data type "bits" with corresponding bit operations
  • new data type "string" with string operations
  • separate characters as one symbol string
  • data structure type (record), invented by C.A.R. Hoar at 1965
  • new control statement "while ... do"
  • new control statement "case"
  • exceptions processing
  • new library procedure "assert"
  • underscore symbol can be used in variable names

And in 1972 was introduced C programming language:

  • it has many data types
    • "char" and "unsigned char"
    • "short int" and "unsigned short int"
    • "int" and "unsigned int"
    • "long" and "unsigned long"
    • "long long" and "unsigned long long" later
    • "float"
    • "double"
    • "long double"
  • different interpretation of type "char" as a number and as a symbol
  • introduce reference (pointer) types to all data types
    • "char*" and "unsigned char*"
    • "short int*" and "unsigned short int*"
    • "int*" and "unsigned int*"
    • "long*" and "unsigned long*"
    • later "long long*" and "unsigned long long*"
    • "float*"
    • "double*"
    • "long double*"
  • dereferencing operation *
  • array name is a pointer to memory area, where array is allocated
  • unions for allocation of different data types in the same memory area
  • dynamic memory allocation library
  • new control statements:
    • "switch"
    • "do ... while"
    • "continue"
    • "break"
  • program text preprocessing directives
  • interpretation of string as a char array with ending 0 element
  • very power function libraries for working with
    • text files
    • binary files
    • strings
    • math calculations
    • time management