
IEEE TRANSACTIONS ON COMPUTERS, VOL. C-25, NO. 12, DECEMBER 1976 1207 Programming Languages-The First 25 Years PETER WEGNER Abstract-The programming language field is certainly one of 1950-1960 Discovery and Description the most important subfields of computer science. It is rich in concepts, theories, and practical developments. The present paper A remarkably large number of the basic concepts of attempts to trace the 25 year development of programming lan- programming languages had been discovered and imple- guages by means of a sequence of 30 milestones (languages and mented by 1960. This period includes the development of concepts) listed in more or less historical order. The first 13 mile- stones (Ml-M13) are largely concerned with specific programming symbolic assembly languages, macro-assembly languages, languages of the 1950's and 1960's such as Fortran, Algol 60, Cobol, Fortran, Algol 60, Cobol, IPL V, Lisp, and Comit [72]. It Lisp, and Snobol 4. The next ten milestones (M14-M23) relate to includes the discovery of many of the basic implementation concepts and theories in the programming language field such as techniques such as symbol table construction and look-up formal language theory, language definition, program verification, techniques for assemblers and macro-assemblers, the stack semantics and abstraction. The remaining milestones (M24-M30) relate to the software engineering methodology of the 1970's and algorithm for evaluating arithmetic expressions, the acti- include a discussion of structured programming and the life cycle vation record stack with display technique for keeping concept. This discussion of programming language development track of accessible identifiers during execution of block is far from complete and there are both practical developments structure languages, and marking algorithms for garbage such as special purpose languages and theoretical topics such as collection in languages such as IPL V and Lisp. the lambda calculus which are not adequately covered. However, it is hoped that the discussion covers the principal concepts and This period was one of discovery and description of languages in a reasonably nontrivial way and that it captures the programming languages and implementation techniques. sense of excitement and the enormous variety of activity that was Programming languages were regarded solely as tools for characteristic of the programming language field during its first facilitating the specification of programs rather than as 25 years. interesting objects of study in their own right. The devel- Index Terms-Abstraction, assemblers, Algol, axioms, Cobol, opment of models, abstractions, and theories concerning compilers, Fortran, Lisp, modularity, programming languages, programming languages was largely a phenomenon of the semantics, structures programming, syntax, verification. 1960's. I. THREE PHASES OF PROGRAMMING LANGUAGE 1961-1969 Elaboration and Analysis DEVELOPMENT The 1960's were a period of elaboration of programming T HE 25 year development of programming lan- languages developed in the -1950's and of analysis for the guages may be characterized by three phases corre- purpose of constructing models and theories of program- sponding roughly to the 1950's, 1960's, and 1970's. The ming languages. 1950's were concerned primarily with the discovery and The languages developed in the 1960's include Jovial, description of programming language concepts. The 1960's PL/I, Simula 67, Algol 68, and Snobol 4. These languages were concerned primarily with the elaboration and anal- are, each in a different way, elaborations of languages de- ysis of concepts developed in the 1950's. The 1970's were veloped in the 1950's. For example, EL/I is an attempt to concerned with the development of an effective software combine the "good" features of Fortran, Algol, Cobol, and technology. As pointed out in [96], the 1950's emphasized Lisp into a single language. Algol 68 is an attempt to gen- the empirical approach to the study of programming eralize, as systematically and clearly as possible, the lan- language concepts, the 1960's emphasized a mathematical guage features of Algol 60. Both the attempt to achieve approach in its attempts to develop theories and general- greater richness by synthesis of existing features and the izations of concepts developed in the 1950's, and the 1970's attempt to achieve greater richness by generalization have emphasized an engineering approach in its attempt to led to excessively elaborate languages. We have learned harness concepts and theories for the development of that in order to achieve flexibility and power of expression software technology. in programming languages we must pay the price of greater complexity. In the 1970's there is a tendency to retrench Manuscript received September 3, 1976; revised August 23, 1976. This towards simpler languages like Pascal, even at the price of work was supported in part by the AFOST, the ARO, and the ONR under restricting flexibility and power of expression. Contract N00014-76-C-0160. The author is with the Division of Applied Mathematics, Brown Uni- Theoretical work in the 1960's includes many of the versity, Providence, RI 02912. basic results of formal languages and automata theory with 1208 IEEE TRANSACTIONS ON COMPUTERS, DECEMBER 1976 applications to parsing and compiling [1]. It includes the specific programming languages, and the development of development of theories of operational and mathematical implementation techniques, concepts and theories. semantics, of language definition techniques, and of several The four most important milestones are probably the frameworks for modeling the compilation and execution following ones. process [26]. It includes the development of the basic ideas Fortran, which provided an existence proof for higher of program correctness and program verification [54]. level languages, and is still one of the most widely used Although much of the theoretical work started in the programming languages. 1960's continued into the 1970's, the emphasis on theo- Algol 60, whose clean design and specification served as retical research as an end in itself is essentially a phe- an inspiration for the development of a discipline of pro- nomenon of the 1960's. In the 1970's theoretical research gramming languages. in areas such as program verification is increasingly mo- Cobol, which pioneered the development of data de- tivated by practical technological considerations rather scription facilities, was adopted as a required language on than by the "pure research" objective of advancing our department of defense computers and has become the understanding independently of any practical payoff. most widely used language of the 1970's. In the programming language field the pure research of Lisp, whose unique blend of simplicity and power have the 1960's tended to emphasize the study of abstract caused it to become both the most widely used language structures such as the lambda calculus or complex struc- in artificial intelligence and the starting point for the de- tures such as Algol 68. In the 1970's this emphasis on ab- velopment of a mathematical theory of computation. straction and elaboration is gradually being replaced by We shall consider about 30 milestones, and use this an emphasis on methodologies aimed at improving the section as a vehicle for presenting a brief history of the technology of programming. programming language field. The milestones can be split into three groups. Milestones M1-M13 are concerned 1970-? Technology largely with specific programming languages developed During the 1970's emphasis shifted away from "pure during the 1950's and 1960's. Milestones M14-M23 con- research" towards practical management of the environ- sider certain conceptual and theoretical programming ment, not only in computer science but also in other sci- language notions. Milestones M24-M30 are concerned entific areas. Decreasing hardware costs and increasingly with programming languages and methodology of the complex software projects created a "complexity barrier" 1970's. in software Ml -The ED VAC report, 1944 [81]: This report, writ- development which caused the management ten Von Neumann of software-hardware complexity to become the primary by in September 1944, contains the first practical problem in computer science. Research was di- description of the stored program computers, subsequently rected away from the development of powerful new pro- called Von Neumann machines. It develops a (one address) gramming languages and general theories of programming machine language for such computers and some examples language structure towards the development of tools and of programs in this machine language. methodologies for controlling the complexity, cost, and M2-Book by Wilkes, Wheeler, and Gill, 1951 [83]: This reliability of large programs. is the first book on both application software and system Research emphasized methodologies such as structured software. It discusses subroutines and subroutine linkage, programming, module design and specification, and pro- and develops subroutines for a number of applications. It gram verification [41]. Attempts to design verifiable lan- contains a set of "initial orders" which act like a sophisti- guages which support structured programming and mod- cated loader, performing decimal to binary conversion for ularity are currently being made. Pascal, Clu, Alphard, operation codes and addresses, and having relative ad- Modula, and Euclid are examples
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages19 Page
-
File Size-