The Unification of Data and Algorithms

  • Mark PriestleyEmail author
Part of the History of Computing book series (HC)


In the 1970s it was common to describe programs as having two main aspects, namely the data structures that the program required and the algorithms used to manipulate that data. Investigations into programming methodology, however, had made it clear that there was a close relationship between these two areas, an approach which became referred to as ‘data abstraction’. This chapter examines in more detail the development of novel programming language support for data abstraction, and it suggests that a stable configuration of ideas, one that has profoundly influenced the design of programming languages up to the present day, was first achieved by the Smalltalk language. Although it drew heavily on work from the Algol research programme, the design of Smalltalk was also strongly influenced by ideas from completely different areas, and the chapter concludes by arguing that in various ways Smalltalk marks a limit to the influence of logic on programming language design.


Programming Language Program Module Data Abstraction Abstract Data Type Simulation Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. Dahl, O.-J., Nygaard, K.: SIMULA—a language for programming and description of discrete event systems. Introduction and user’s manual. Technical Report 11, Norwegian Computing Centre (1965). 5th edn. (1967) available at Accessed 4 May 2008
  2. Dahl, O.-J., Nygaard, K.: SIMULA—an ALGOL-based simulation language. Commun. ACM 9(9), 671–678 (1966) zbMATHCrossRefGoogle Scholar
  3. Dahl, O.-J., Nygaard, K.: Class and subclass declarations. In: Buxton, J.N. (ed.) Simulation Programming Languages, pp. 158–174. North-Holland, Amsterdam (1968) Google Scholar
  4. Dahl, O.-J., Myhrhaug, B., Nygaard, K.: Common base language. Technical Report S-2, Norwegian Computing Centre (1968) Google Scholar
  5. Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R.: Structured Programming. Academic Press, San Diego (1972) zbMATHGoogle Scholar
  6. Department of Defense: Reference manual for the Ada programming language. United States Department of Defense, ANSI/MIL-STD-1815A-1983 (1983) Google Scholar
  7. Dijkstra, E.W.: Structured programming. In: Buxton, J.N., Randell, B. (eds.) Software Engineering Techniques: Report on a Conference Sponsored by the NATO Science Committee, Rome, Italy, 27th to 31st October 1969, pp. 84–88. NATO (1969b) Google Scholar
  8. Goldberg, A., Kay, A.: Smalltalk-72 instruction manual. Technical Report SSL 76-6, Xerox Palo Alto Research Center (1976) Google Scholar
  9. Gordon, G.: A general purpose systems simulation program. In: Proceedings of the Eastern Joint Computer Conference, pp. 87–104 (1961) Google Scholar
  10. Gordon, G.: GPSS session: transcript of presentation (1981). In: Wexelblat, R.L. (ed.) History of Programming Languages, pp. 426–434. Academic Press, San Diego (1981) Google Scholar
  11. Hoare, C.A.R.: Record handling. In: Genuys, F. (ed.) Programming Languages, pp. 291–347. Academic Press, San Diego (1968) Google Scholar
  12. Ingalls, D.H.H.: The Smalltalk-76 system design and implementation. In: Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 9–16 (1978) Google Scholar
  13. Kay, A.C.: The early history of Smalltalk (1996). In: Bergin, T.J., Gibson, R.G. (eds.) History of Programming Languages—II, pp. 511–579. ACM, New York (1996) Google Scholar
  14. Kay, A., Goldberg, A.: Personal dynamic media. Computer 10(3), 31–41 (1977) CrossRefGoogle Scholar
  15. Knuth, D.E., McNeley, J.L.: SOL—a symbolic language for general-purpose systems simulation. IEEE Trans. Electron. Comput. EC-13(4), 401–408 (1964) CrossRefGoogle Scholar
  16. Liskov, B.: Report of session on structured programming. ACM SIGPLAN Not. 8(9), 5–10 (1973) CrossRefGoogle Scholar
  17. Liskov, B., Zilles, S.: Programming with abstract data types. ACM SIGPLAN Not. 9(4), 50–59 (1974) CrossRefGoogle Scholar
  18. Liskov, B.H., Zilles, S.N.: Specification techniques for data abstractions. IEEE Trans. Softw. Eng. SE-1(1), 7–19 (1975) CrossRefGoogle Scholar
  19. Markowitz, H.M., Hauser, B., Kerr, H.W.: SIMSCRIPT—A Simulation Programming Language. Prentice-Hall, New York (1963) Google Scholar
  20. Morris, J.H. Jr.: Protection in programming languages. Commun. ACM 16(1), 15–21 (1973) zbMATHCrossRefGoogle Scholar
  21. Nygaard, K., Dahl, O.-J.: The development of the SIMULA languages (1981). In: Wexelblat, R.L. (ed.) History of Programming Languages, pp. 439–480. Academic Press, San Diego (1981) Google Scholar
  22. Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972) CrossRefGoogle Scholar
  23. Shoch, J.F.: An overview of the programming language Smalltalk-72. ACM SIGPLAN Not. 14(9), 64–73 (1979) CrossRefGoogle Scholar
  24. Wirth, N.: Program development by stepwise refinement. Commun. ACM 14(4), 221–227 (1971a) zbMATHCrossRefGoogle Scholar
  25. Wirth, N.: The programming language Pascal. Acta Inform. 1, 35–63 (1971b) zbMATHCrossRefGoogle Scholar
  26. Wirth, N.: On the composition of well-structured programs. ACM Comput. Surv. 6(4), 247–259 (1974) zbMATHCrossRefGoogle Scholar
  27. Wirth, N.: Algorithms + Data Structures = Programs. Prentice-Hall, New York (1976) zbMATHGoogle Scholar
  28. Wulf, W.A., Russell, D.B., Haberman, A.N.: BLISS: a language for systems programming. Commun. ACM 14(12), 780–790 (1971) zbMATHCrossRefGoogle Scholar
  29. Zilles, S.N.: Procedural abstraction: a linguistic protection technique. ACM SIGPLAN Not. 8(9), 142–146 (1973) CrossRefGoogle Scholar

Copyright information

© Springer-Verlag London Limited 2011

Authors and Affiliations

  1. 1.LondonUK

Personalised recommendations