Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Programming Languages The First 25 Years

Published: 01 December 1976 Publication History
  • Get Citation Alerts
  • Abstract

    The programming language field is certainly one of the most important subfields of computer science. It is rich in concepts, theories, and practical developments. The present paper attempts to trace the 25 year development of programming languages by means of a sequence of 30 milestones (languages and concepts) listed in more or less historical order. The first 13 milestones (M1-M13) are largely concerned with specific programming languages of the 1950's and 1960's such as Fortran, Algol 60, Cobol, Lisp, and Snobol 4. The next ten milestones (M14-M23) relate to concepts and theories in the programming language field such as formal language theory, language definition, program verification, semantics and abstraction. The remaining milestones (M24-M30) relate to the software engineering methodology of the 1970's and include a discussion of structured programming and the life cycle concept. This discussion of programming language development is far from complete and there are both practical developments such as special purpose languages and theoretical topics such as the lambda calculus which are not adequately covered. However, it is hoped that the discussion covers the principal concepts and languages in a reasonably nontrivial way and that it captures the sense of excitement and the enormous variety of activity that was characteristic of the programming language field during its first 25 years.

    References

    [1]
    A. V. Aho and J. R. Ullman, The Theory of Parsing, Translation and Compiling. Englewood Cliffs, NJ: Prentice-Hall, vol. I, 1972; vol. II, 1973.
    [2]
    E. Allman, M. Stonebraker, and G. Held, "Embedding a relational sublanguage in a general purpose programming language'" SIGPLAN Notices, Mar. 1976.
    [3]
    M. M. Astrahan and D. Chamberlin, "Implementation of a structured English query language," Commun. Ass. Comput. Mach., Oct. 1975.
    [4]
    C. Bohm and G. Jacopini, "Flow diagrams, turing machines, and languages with only two formation rules," Commun. Ass. Comput. Mach., May 1966.
    [5]
    C. W. Bachman, "A general purpose system for random access, memories," in FJCC Proc., 1964.
    [6]
    R. S. Boyer, B. Elspas, and K. N. Levitt, "A formal system for testing and debugging programs by symbolic execution," ICRS, Apr. 1975.
    [7]
    J. R. Brown and M. Lipow, "Testing for software reliability," ICRS, Apr. 1975.
    [8]
    F. T. Baker, "Structured programming in a production programming environment," ICRS, Apr. 1975.
    [9]
    P. Brinch Hansen, "The purpose of concurrent PASCAL," ICRS, Apr. 1975.
    [10]
    F. T. Baker and H. D. Mills, "Chief programmer teams," Datamation, 1973.
    [11]
    C. W. Bachman, "The programmer as navigator," (1973 Turing lecture), Commun. Ass. Comput. Mach., Nov. 1973.
    [12]
    COBOL 1961: Revised Specifications for a Common Business Oriented Programming Language, U. S. Govt. Printing Office, 1961.
    [13]
    E. F. Codd, "A relational submodel for large shared data banks," Commun. Ass. Comput. Mach., June 1970.
    [14]
    "CODASYL," Data Base Task Group Rep., Apr. 1971.
    [15]
    CS-4 Language Reference Manual and Operating System Interface, Intermetrics Publ., Oct. 1975.
    [16]
    N. Chomsky and G. A. Miller, Introduction to the Formal Analysis of Natural Languages, Handbook of Mathematical Psychology, vol. II. New York: Wiley, 1963.
    [17]
    D. Dahl and C. A. R. Hoare, Hierarchical Program Structures, in Dahl, Dijkstra and Hoare, Structured Programming. New York: Academic, 1972.
    [18]
    R. Dewar, "SPITBOL 2.0," Illinois Inst. Technol. Rep., 1971.
    [19]
    E. W. Dijkstra, "A constructive approach to the problem of program correctness, BIT, Aug. 1968.
    [20]
    E. W. Dijkstra, "Programming as a human activity," Proc. IFIP Congress, 1965.
    [21]
    E. W. Dijkstra, "Go to statement considered harmful," Commun. Ass. Comput. Mach. (Lett.), Mar. 1968.
    [22]
    E. W. Dijkstra, A Discipline of Programming. Englewood Cliffs, NJ: Prentice-Hall, 1976.
    [23]
    E. W. Dijkstra, "Making a translator for ALGOL 60," APIC Bull., vol. 7, 1961.
    [24]
    E. W. Dijkstra, Notes on Structured Programming, in Dahl, Dijkstra and Hoare, Structured Programming. New York: Academic, 1972.
    [25]
    C. J. Date, An Introduction to Data Base Systems. New York: Addison-Wesley, 1975.
    [26]
    Data Structures in Programming Languages, Proc. of Symp., SIGPLAN Notices, Feb. 1971.
    [27]
    "FORTRAN vs. basic FORTRAN," Commun. Ass. Comput. Mach., Oct. 1964.
    [28]
    J. Feldman and D. Gries, "Translator writing systems," Commun. Ass. Comput. Mach., Nov. 1968.
    [29]
    R. W. Floyd, Assigning Meanings to Programs, Proc. Symp. App. Math. vol XIX, AMS, 1967.
    [30]
    A. D. Falkoff and K. E. Iverson, The APL Terminlal System, in Klerer and Reinfelds, Interactive Systems for Experimental Applied Mathematics. New York: Academic, 1968.
    [31]
    D. A. Fischer, "A common programming language for the department of defense, background and technical requirements," IDA Sci. Technol. Division, paper P-1191, June 1976.
    [32]
    R. Griswold, J. Poage, and I. Polonsky, The SNOBOL 4 Programming Language. Englewood Cliffs, NJ: Prentice-Hall, 1971.
    [33]
    J. Gimpel, "A theory of discrete patterns and their implementation in SNOBOL 4," Commun. Ass. Comput. Mach., Feb. 1973.
    [34]
    L. Gilman and A. J. Rose, APL, an Interactive Approach, 2nd Ed. New York: Wiley, 1974.
    [35]
    J. B. Goodenough and S. L. Gerhard, "Towards a theory of test data selection," ICRS, Apr. 1975.
    [36]
    C. A. R. Hoare, "An axiomatic basis for computer programming," Commun. Ass. Comput. Mach., Oct. 1969.
    [37]
    C. A. R. Hoare and N. Wirth, "An axiomatic definition of the programming language PASCAL," Acta Inform.. vol. 2, no. 4, 1973.
    [38]
    C. A. R. Hoare and N. Wirth, Notes on Data Structuring, In Dahl, Dijkstra and Hoare, Structured Programming. New York: Academic, 1972.
    [39]
    C. A. R. Hoare and N. Wirth, "Data reliability," ICRS, Apr. 1975.
    [40]
    K. E. Iverson, A Programming Language. New York: Wiley, 1962.
    [41]
    Proc. Int. Conf. Reliable Software, Apr. 1975; also SIGPLAN Notices, June 1975.
    [42]
    J. Johnston, "The contour model of block structured processes," DSIPL, Feb. 1971.
    [43]
    D. E. Knuth,. "The Semantics of Context Free Languages," in Mathematical Systems Theory, vol. II, no. 2, 1968.
    [44]
    D. E. Knuth, "The remaining trouble spots in ALGOL 60," Commun. Ass. Comput. Mach., Oct. 1967.
    [45]
    D. E. Knuth, The Art of Computer Programming Volume III, Sorting and Searching, 1973.
    [46]
    D. E. Knuth, "Structured programming with go to statements," Comput. Surveys, Dec. 1974.
    [47]
    J. C. King, "Symbolic execution and program testing," Commun. Ass. Comput. Mach., July 1976.
    [48]
    J. G. Kemeny and T. E. Kurtz, Basic Programming. New York: Wiley, 1967.
    [49]
    P. Lucas and K. Walk, "On the formal description of PL/I," Annu. Rev. Automatic Programming, vol. 6, pt 3. New York: Pergamon, 1969.
    [50]
    R. L. London, "A view of program verification," ICRS. Apr. 1975.
    [51]
    B. H. Liskov, "A note on CLU," Computation Structures Group Memo 112, Nov. 1974.
    [52]
    B. M. Leavenworth, "Syntax macros and extended translation," Commun. Ass. Comput. Mach., Nov. 1966.
    [53]
    B. H. Liskov and S. N. Zillies, "Specification techniques for data abstractions," ICRS, Apr. 1975.
    [54]
    M. D. McIlroy, "Macro instruction extensions to compiler languages," Commun. Ass. Comput. Mach., Apr. 1960.
    [55]
    C. N. Mooers, "TRAC-A procedure-describing language for a reactive typewriter," Commun. Ass. Comput. Mach., Mar. 1976.
    [56]
    J. McCarthy et al., LISP 1.5 Programmers Manual. Cambridge, MA: MIT Press, 1965.
    [57]
    J. McCarthy, "Towards a mathematical science of computation," in Proc. IFIP Congr., 1962.
    [58]
    W. M. McKeeman, J. H. Horning, and D. B. Wortman, A Compiler Generator. Englewood Cliffs, NJ: Prentice-Hall, 1970.
    [59]
    Z. Manna, Mathematical Theory of Computation. New York: McGraw-Hill, 1974.
    [60]
    H. D. Mills, "Mathematical foundations for structured programming," IBM Corp., Gaithersburg, MD, FSC 72-6012, 1972.
    [61]
    J. H. Morissey, "The QUlKTRAN system," Datamation, Feb. 1964.
    [62]
    P. Naur, Ed., "Report on the algorithmic language ALGOL 60," Commun. Ass. Comput. Mach., May 1960.
    [63]
    P. Naur, "Revised report on the algorithmic language ALGOL 60," Commun. Ass. Comput. Mach., Jan. 1963.
    [64]
    P. Naur, Proofs of Algorithms by General Snapshots, BIT 6, 1966.
    [65]
    Newell et al., Information Processing Language V Manual, 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1965.
    [66]
    E. I. Organick and J. G. Cleary, "A data structure model of the B6500 computer system," DSIPL, Feb. 1971.
    [67]
    PL/I, Current IBM System 360 Reference Manual, (or Bates and Douglas), 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1975.
    [68]
    D. I. Parnas, "A technique for software module specification with examples," Commun. Ass. Comput. Mach., May 1972.
    [69]
    B. Randell and L. J. Russell, ALGOL 60 Implementation. New York: Academic, 1964.
    [70]
    D. J. Reifer, "Automated aids for reliable software," ICRS, Apr. 1975.
    [71]
    D. Scott and S. Strachey, "Towards a mathematical semantics'for computer languages," PRG 6, Oxford Univ. Comput. Lab., 1971.
    [72]
    J. Sammet, Programming Languages, History and Fundamentals. Englewood Cliffs, NJ: Prentice-Hall, 1969.
    [73]
    C. E. Shannon and W. Weaver, The Mathematical Theory of Communications. Urbana, IL: Univ. Illinois Press, 1962.
    [74]
    N. F. Schneiderwind, "Analysis of error processes in computer software," ICRS, 1975.
    [75]
    C. J. Shaw, "JOSS, a designers view of an experimental on-line system," in Proc. FJCC, 1964.
    [76]
    C. J. Shaw, "A specification of JOVIAL," Commun. Ass. Comput. Mach., Dec.1963.
    [77]
    E. H. Sibley, Ed., "Special issue: Data base management systems," Comput. Surveys, Mar. 1976.
    [78]
    A. M. Turing, "On computable numbers with an application to the entscheidungsproblem," in Proc. London Math. Soc., 1936.
    [79]
    J. Thomas, "Module intercpnnection in programming systems supporting abstractions," Ph.D. dissertation, Brown Univ., Providence, RI, May 1976.
    [80]
    R. D. Tennent, "The denotational semantics of programming languages," Commun. Ass. Comput. Mach., Aug. 1976.
    [81]
    J. Von Neumann, "The EDVAC report," in Computer from PASCAL to Von Neumann, H. Goldstein, Ed. Princeton, NJ: Princeton Univ. Press, 1972, Ch. 7, discussion.
    [82]
    V. Wingaarden et al., "Report on the algorithmic language ALGOL 68," Numer. Math., Feb. 1969; also revised report, Numer. Math., Feb. 1975.
    [83]
    M. V. Wilkes, D. J. Wheeler, and S. Gill, The Preparation of Programs for a Digital Computer. New York: Addison-Wesley, 1951 (revised Ed., 1957).
    [84]
    P. Wegner, Programming Languages, Information Structures and Machine Organization. New York: McGraw-Hill, 1968.
    [85]
    W. Waite, "A language independent macro processor," Commun. Ass. Comput. Mach., July 1967.
    [86]
    P. Wegner, "Three computer cultures, computer technology, computer mathematics and computer science," in Advances in Computers, vol. 10. New York: Academic, 1972.
    [87]
    P. Wegner, "Data structure models in programming languages," DSIPL, Feb. 1971.
    [88]
    P. Wegner, "The Vienna definition language," Comput. Surveys, Mar. 1972.
    [89]
    N. Wirth and H. Weber, "Euler-A generalization of ALGOL and its formal definition," Commun. Ass. Comput. Mach., Jan. and Feb. 1966.
    [90]
    N. Wirth, "Program development by stepwise refinement," Commun. Ass. Comput. Mach., Apr. 1971.
    [91]
    P. Wegner, "Abstraction-A tool in the management of complexity," in Proc. 4th Texas Symp. Comput., Nov. 1975.
    [92]
    N. Wirth, "The programming language PASCAL," Acta Inform., 1971.
    [93]
    P. Wegner, "Structured model building," Brown Univ., Providence, RI, Rep., 1974.
    [94]
    W. Wulf, R. L. London, and M. Shaw, "Abstraction and verification in ALPHARD, introduction to language and methodology," Carnegie-Mellon Univ., Dep. Comput. Sci. Rep., June 1976.
    [95]
    P. Wegner, "Operational semantics of programming languages," in Proc. Symp. Proving Assertations about Programs, Jan. 1972.
    [96]
    P. Wegner, "Research paradigms in computer science," in Proc. 2nd Int. Canf. Reliable Software, Nov. 1976.
    [97]
    N. Wirth, "Modula: A language for modular multiprogramming," ETH Institute for Informatics, TRI8, Mar. 1976.
    [98]
    P. Wegner, "Structured programming, program synthesis and semantic definition," Brown Univ. Rep., Providence, RI, 1972.
    [99]
    V. Yngve, "COMIT as an IR language," Commun. Ass. Comput. Mach., Jan. 1962.
    [100]
    M. Zloof, "Query by example," in Proc. Nat. Comput. Conf., 1975.

    Cited By

    View all

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image IEEE Transactions on Computers
    IEEE Transactions on Computers  Volume 25, Issue 12
    December 1976
    178 pages

    Publisher

    IEEE Computer Society

    United States

    Publication History

    Published: 01 December 1976

    Author Tags

    1. -Abstraction
    2. Algol
    3. Cobol
    4. Fortran
    5. Lisp
    6. assemblers
    7. axioms
    8. compilers
    9. modularity
    10. programming languages
    11. semantics
    12. structures programming
    13. syntax
    14. verification.

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0

    Other Metrics

    Citations

    Cited By

    View all
    • (1991)Some Approaches to, and Illustrations of, Programming Language HistoryIEEE Annals of the History of Computing10.1109/MAHC.1991.1000113:1(33-50)Online publication date: 1-Jan-1991
    • (1990)The computer reaches out: the historical continuity of interface designProceedings of the SIGCHI Conference on Human Factors in Computing Systems10.1145/97243.97284(261-268)Online publication date: 1-Mar-1990
    • (1987)Systems analysisCommunications of the ACM10.1145/214762.21476830:6(506-512)Online publication date: 1-Jun-1987
    • (1978)The development of the SIMULA languagesACM SIGPLAN Notices10.1145/960118.80839113:8(245-272)Online publication date: 1-Aug-1978
    • (1977)Formal module level specificationsProceedings of the 1977 annual conference10.1145/800179.810194(138-144)Online publication date: 1-Jan-1977

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media