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