Data structures and their representation in storage

Abstract An attempt is made to define certain basic concepts involved in the representation of data and processes to be performed upon data within a high-speed, random-access computer memory. An important distinction is made between “data structures” and “storage structures,” and it is suggested that the programmer or problem-solver will find his effort amply repaid if he makes a thorough initial study of the data for his problem in terms of various alternative “data structures,” or patterns of mutual accessibility among elements of data, defined independently of any particular computer order code or programming language. An artificial problem is analyzed, and nine different solutions, involving different “data structures,” are described and compared to illustrate the application of the concepts and definitions provided. The formation of operands from particular data structures and the construction of new data structures during the course of a problem solution are then discussed. A method is described for representing data structures in diagrams and tables, and for representing storage structures in diagrams, in accordance with the concepts and definitions previously introduced. Twelve recently developed memory systems which appear to have a high potential utility for information storage and retrieval and for natural language processing are described and analyzed with the aid of the diagrams and tables. Some tentative conclusions are drawn concerning the comparative utility of the ten memory systems and programming languages for problems involving storage, manipulation, and retrieval of information from natural language text.

[1]  Alan J. Perlis,et al.  Symbol manipulation by threaded lists , 1960, Commun. ACM.

[2]  Victor H. Yngve COMIT as an IR language , 1962, CACM.

[3]  Gerard Salton,et al.  Manipulation of trees in information retrieval , 1962, CACM.

[4]  J. Bennett AN INTRODUCTION TO COMIT PROGRAMMING , 1961 .

[5]  Edward Fredkin,et al.  Trie memory , 1960, Commun. ACM.

[6]  G. L. Brumm A STUDY OF METHODS FOR REPRESENTING DATA STRUCTURE , 1963 .

[7]  H. Gelernter,et al.  A Fortran-Compiled List-Processing Language , 1960, JACM.

[8]  Joseph Weizenbaum Symmetric list processor , 1963, CACM.

[9]  David J. Farber,et al.  SNOBOL , A String Manipulation Language , 1964, JACM.

[10]  Allen Newell,et al.  An introduction to information processing language V , 1960, Commun. ACM.

[11]  Benson H. Scheff A catalogue entry retrieval system , 1963, CACM.

[12]  John McCarthy,et al.  LISP 1.5 Programmer's Manual , 1962 .

[13]  Carlos Christensen,et al.  On the implementation of AMBIT, a language for symbol manipulation , 1966, CACM.

[14]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[15]  Kenneth C. Knowlton,et al.  A fast storage allocator , 1965, CACM.

[16]  E. Blum,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[17]  Melvin E. Conway,et al.  Design of a separable transition-diagram compiler , 1963, CACM.

[18]  Carlos Christensen AMBIT: A PROGRAMMING LANGUAGE FOR ALGEBRAIC SYMBOL MANIPULATION. , 1964 .

[19]  Ralph E. Griswold,et al.  The snobol3 programming language , 1966 .

[20]  A. K. Scidmore,et al.  Storage and search properties of a tree-organized memory system , 1963, CACM.