Data types for very high level programming languages.

Very high level programming languages (higher than PL/I, Algol 60, etc.) attempt to free the programmer from providing details and let him concentrate on the algorithm for the problem at hand. The importance of very high level programming languages is further emphasized by decreasing machine costs, increased programming costs and the desire to have programs that are well structured, easy to understand and prove correct. Very high level languages provide powerful control structures and data structures that allow the problem to be specified in a natural manner. In this dissertation, we propose several ways of raising the level of a language. The different types of for iteration statements are consolidated into one general for statement. This, along with a new type, the domain of an array, provides us with an easy way of processing arrays; nested iteration statements are no longer necessary. The syntactic list and array generators and the concept of overloading make programming more flexible. The current notion that a data type is a set of values together with basic operations on that set leads us to conclude that formal parameter types need not be explicitly stated. Given a formal parameter X with operations $z_{1}, z_{2},\ldots, z_{n}$ being performed on it within the procedure, one should be able to supply, as an actual parameter in a call, a variable of any type that has the operations $z_{1}, z_{2},\ldots, z_{n}$ defined on it. For example, this concept allows us to write one procedure that finds the maximum value of the elements of an array of any dimension and any element or index type. Grids are arrays that can have any shape. Grid elements need not be contiguous i.e. grids can have holes in them. For example, grids can be trapezoidal, parabolic, rectangular with a hole or pyramid-like. Programs written using grids are more general than those written using arrays and/or functions to simulate non-array shapes. To alter an existing program to work for another grid shape one need only modify the grid declaration suitably, leaving the rest of the program intact. Programs are smaller, semantically clearer and have a more natural problem representation. Grids may be used to represent sparse matrices. Data security is achieved by allowing parts of grids pass as parameters to be readd only or completely masked out. Grids have been implemented as an extension to Fortran. Using Pascal as the base language, we show by series of examples from numerical analysis, data processing, engineering etc., how the above concepts raise the level of a programming language and how they blend together naturally and systematically. Efficient ways of implementing them are also discussed.