The point about control abstraction is that the flow of control is structured and individual control points do not have to be named or numbered. The imperfection of early expression abstraction was repeated with control abstraction. In this case the obvious flaw was the horrid Algol 60 switch which has now been replaced by the case statement of languages such as Pascal. The third advance was data abstraction . This means separating the details of the representation of data from the abstract operations defined upon the data.
Older languages take a very simple view of data types.
In all cases the data is directly described in numerical terms. This mapping is purely in the mind of the programmer and does not appear in the written program except perhaps as a comment. It is probably a consequence of this fact that software component libraries have not emerged except in numerical analysis. Numerical algorithms, such as those for finding eigenvalues of a matrix, are directly concerned with manipulating numbers and so these languages, whose data values are numbers, have proved appropriate. The point is that the languages provide the correct abstract values in this case only.