pic x(3). 05 postcode pic x(8). 03 amount-owing pic 9(8) comp. 1960 – ALGOL 60 Arrays were the only composite data type in Algol 60. 1964 – PL/I dcl 1 newtypet based (P); 2 (a, b, c) fixed bin(31), 2 (i, j, k) float, 2 r ptr; allocate newtypet; 1968 – ALGOL 68 int max = 99; mode newtypet = [0..9] [0..max]struct ( long real a, b, c, short int i, j, k, ref real r ); newtypet newarrayt = (1, 2, 3, 4, 5, 6, heap real := 7) For example, a linked list might be declared as: mode node = union (real, int, compl, string), list = struct (node val, ref list next); For ALGOL 68 only the type name appears to the left of the equality, and most notably the construction is made – and can be read – from left to right without regard to priorities. 1970 – Pascal type a = array [1..10] of integer; b = record a, b, c: real; i, j, k: integer; end; 1972 – K&R C #define max 99 struct newtypet { double a, b, c; float r; short i, j, k; } newarrayt[10] [max + 1]; 1977 – FORTRAN 77 Fortran 77 has arrays, but lacked any formal record/structure definitions. Typically compound structures were built up using or statements: CHARACTER NAME*32, ADDR*32, PHONE*16 REAL OWING COMMON /CUST/NAME, ADDR, PHONE, OWING 1983 – Ada type Cust is record Name : Name_Type; Addr : Addr_Type; Phone : Phone_Type; Owing : Integer range 1..999999; end record;Ada 95 brought OOP concepts through tagged types (the equivalent of a C++ class), Ada 2012 added support for substitution verification through class-wide contracts. 1983 – C++ const int max = 99; class { public: double a, b, c; float &r; short i, j, k; }newtypet[10] [max + 1]; 1991 – Python max = 99 class NewTypeT: def __init__(self): self.a = self.b = self.c = 0 self.i = self.j = self.k = 0.0 # Initialise an example array of this class. newarrayt = [[NewTypeT() for i in range(max + 1)] for j in range(10)] 1992 – FORTRAN 90 Arrays and strings were inherited from FORTRAN 77, and a new reserved word was introduced: type type newtypet double precision a, b, c integer*2 i, j, k * No pointer type REF REAL R end type type (newtypet) t(10, 100) FORTRAN 90 updated and included FORTRAN IV's concept called