Below is the genealogy of the common high-level programming languages. For a more general presentation of the history of computing check out The Virtual Museum of Computing.
1957 FORTRAN I---+ FLOW-MATIC 58 FORTRAN II +-ALGOL 58 | 59 | | | LISP 60 | ALGOL 60 APL COBOL-----+ | 61 | | | | | +-----------------+ | | 62 FORTRAN IV | | | +------------| | | CPL | 63 | | | +---SIMULA I | | | | | 64 | | +---+ | BASIC PL/I | | 65 +----------- | --- | -- | ---------+---+ | | 66 | ALGOL W | | | | | 67 | | | SIMULA 67 | | | 68 | | ALGOL 68 | | | | | | 69 | | | | | | BCPL | 70 | | | | | | B | 71 | PASCAL | | | | C + | 72 | | | | | | | | | | 73 | | +----------+| | | | | | | 74 | | || | | | | | | 75 | | || | +----------+ | | SCHEME 76 | | || | | | | | | 77 | MODULA-2 || | | | | | | 78 FORTRAN 77 | || | | | | | | 79 | | || | | | | | 80 | | || Smalltalk 80 | | | | 81 | | |+---+ | | | | 82 | | | | | | | | | 83 | | Ada 83 | | | | | | 84 | | | | | | | | COMMON LISP 85 | | | | | C++ +----------+ 86 | +-- + | | +----+ | +---------+ | 87 | | | | | | +------+ | | 88 | | Oberon | | Quick Basic | | | 89 | MODULA-3 | | | | ANSI C 90 FORTRAN 90 +---Eiffel Visual Basic | 91 | | 92 | | 93 | | 94 | | 95 Ada 95 Java
IF
statement
IF(arithmetic expression) N1, N2, N3
where N1, N2, N3 are statement labels
( <0 =0 >0 )
DO
statement
DO N1 variable = first_value, last_value
where N1 is the label of the last statement in the loop (the statement following theDO
was the first statement in the loop)
I, J, L, M, and N
were implicitly integers and all others
were floats.
IF
statement
IF
statement with an else
option
CASE
statements
IF
and the GOTO
statement
switch
statement
switch S := S1, S2, Q[m], if v > -5 then S3 else S4
where: all expressions evaluate to statement labels that must
belong to blocks that are active at the time of the statement
own
own integer array intlist[1:99];
if if if a then b else c then d else f then g else h
begin
integer procedure f(x,y); value x, y; integer y, x;
a := f := x+1;
integer procedure g(x); integer x;
x := g := a +2;
a := 0;
outreal (1, a+f(a, g(a))/g(a))
end;
goto
statement
type
statement allows the programmer to define new
types
goto
statements but does have compound statements,
conditional, case statements and three forms of iteration statements
procedure fun(formal_parameter_list); forward;
array[1..10] of integer;
and
array[1..20] of integer;
are different types
procedure heading local variables local procedures begin procedure_body endThis can put the variable declarations far from use in the body of the program
private types
and limited private types
MaxSize: constant integer := 500;
CurrentSize: integer := 0;
Vect: array(1..10) of float;
Vect'First will have the value 1 Vect'Last will have the value 10
type DayofYear is range 1..366;
MyBirthday: DayOfYear := 219;
type Result is digits 7;
Answer: Result;
type Result is float range -1.0E12..1.0E12;
type Result is delta 0.005 range -1.0E12..1.0E12;
type class is (Fresh, Soph, Junior, Senior);
type CharPtr is access Character;
ThisChar: CharPtr;
ThisChar := new character;
type Stat is record
Age: integer;
Weight: float;
Height: float;
end record;
type StatPtr is access Stat;
ThisStat: StatPtr;
A: array(0..2,0..2) of float := ((1.0,1.0,1.0),
(2.0,2.0,2.0),
(3.0,3.0,3.0));
type Matrix is array (integer range<>, integer range <>) of float;
Table: Matrix(1..10,1..20);
NewList: array(1..N) of integer;
type string is array(positive range <>) of character;
MyString: string(1..30);
procedure SUB1;
var x: integer;
procedure SUB2;
begin
write('x =' x);
end; {of sub2}
procedure SUB3;
var x: integer;
begin
x := 3;
SUB4(SUB2);
end; {of sub3}
procedure SUB4(SUBX);
var x: integer;
begin
x := 4;
SUBX;
end; {of sub4}
begin {of sub1}
x := 1;
SUB3;
end; {of sub1}