Understanding Programming Language Concepts Via Operational Semantics

  • Cliff B. Jones
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4710)


The origins of “formal methods” lie partly in language description (although applications of methods like VDM, RAISE or B to areas other than programming languages are probably more widely known). This paper revisits the language description task but uses operational (rather than denotational) semantics to illustrate that the crucial idea is thinking about an abstract model of something that one is trying to understand or design. A “story” is told which links together some of the more important concepts in programming languages and thus illustrates how formal semantics deepens our understanding.


Programming Language Context Condition Operational Semantic Abstract Syntax Semantic Rule 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [ACJ72]
    Allen, C.D., Chapman, D.N., Jones, C.B.: A formal definition of ALGOL 60. Technical Report 12.105, IBM Laboratory Hursley (August 1972)Google Scholar
  2. [Ame89]
    America, P.: Issues in the design of a parallel object-oriented language. Formal Aspects of Computing 1(4) (1989)Google Scholar
  3. Backus, J.W., Bauer, F.L., Green, J., Katz, C., McCarthy, J., Naur, P., Perlis, A.J., Rutishauser, H., Samelson, K., Vauquois, B., Wegstein, J.H., van Wijngaarden, A., Woodger, M.: Revised report on the algorithmic language Algol 60. Communications of the ACM 6(1), 1–17 (1963)CrossRefGoogle Scholar
  4. Bekič, H., Bjørner, D., Henhapl, W., Jones, C.B., Lucas, P.: A formal definition of a PL/I subset. Technical Report 25.139, IBM Laboratory Vienna (December 1974) Google Scholar
  5. [BJ78]
    Bjørner, D., Jones, C.B. (eds.): The Vienna Development Method: The Meta-Language. LNCS, vol. 61. Springer, Heidelberg (1978)zbMATHGoogle Scholar
  6. [BJ82]
    Bjørner, D., Jones, C.B.: Formal Specification and Software Development. Prentice Hall International, Englewood Cliffs (1982)zbMATHGoogle Scholar
  7. [Boo54]
    Boole, G.: An Investigation of the Laws of Thought. Macmillan (1854) (reprinted by Dover (1958))Google Scholar
  8. [But00]
    Butler, M.J.: CSP2B: A practical approach to combining CSP and B. Formal Aspects of Computing 12(3), 182–198 (2000)zbMATHCrossRefGoogle Scholar
  9. [CJ07]
    Coleman, J.W., Jones, C.B.: Guaranteeing the soundness of rely/guarantee rules (revised). Journal of Logic and Computation (accepted for publication, 2007)Google Scholar
  10. [CJJ06]
    Coleman, J.W., Jefferson, N.P., Jones, C.B.: Comments on several years of teaching of modelling programming language concepts. Technical Report CS-TR-978, Newcastle University (2006)Google Scholar
  11. [CM92]
    Camilleri, J., Melham, T.: Reasoning with inductively defined relations in the HOL theorem prover. Technical Report 265, Computer Laboratory, University of Cambridge (August 1992)Google Scholar
  12. [Dij76]
    Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)zbMATHGoogle Scholar
  13. [DW99]
    D’Souza, D.F., Wills, A.C.: Objects, components, and frameworks with UML: the catalysis approach. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA (1999)Google Scholar
  14. [Eng71]
    Engeler, E.: Symposium on Semantics of Algorithmic Languages. Lecture Notes in Mathematics, vol. 188. Springer, Heidelberg (1971)zbMATHGoogle Scholar
  15. [FL98]
    Fitzgerald, J., GormLarsen, P.: Modelling systems: practical tools and techniques in software development. Cambridge University Press, Cambridge (1998)Google Scholar
  16. [Gor79]
    Gordon, M.J.C.: The Denotational Description of Programming Languages: An Introduction. Springer, Heidelberg (1979)zbMATHGoogle Scholar
  17. [Gor88]
    Gordon, M.J.C.: Programming Language Theory and its Implementation. Prentice-Hall International, Englewood Cliffs (1988)Google Scholar
  18. [Hen90]
    Hennessy, M.: The Semantics of Programming Languages: an elementary introduction using structural operational semantics. Wiley, Chichester (1990)zbMATHGoogle Scholar
  19. [HJ70]
    Henhapl, W., Jones, C.B.: On the interpretation of GOTO statements in the ULD. Technical Report LN 25.3.065, IBM Laboratory, Vienna (March 1970)Google Scholar
  20. [HJ71]
    Henhapl, W., Jones, C.B.: A run-time mechanism for referencing variables. Information Processing Letters 1, 14–16 (1971)zbMATHCrossRefGoogle Scholar
  21. [Hoa78]
    Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21, 666–677 (1978)zbMATHCrossRefGoogle Scholar
  22. [JL71]
    Jones, C.B., Lucas, P.: Proving correctness of implementation techniques. In: [Eng71], pp. 178–211 (1971)Google Scholar
  23. [JLRW05]
    Jones, C.B., Lomet, D., Romanovsky, A., Weikum, G.: The atomicity manifesto (2005)Google Scholar
  24. [Jon93]
    Jones, C.B.: A pi-calculus semantics for an object-based design notation. In: Best, E. (ed.) CONCUR 1993. LNCS, vol. 715, pp. 158–172. Springer, Heidelberg (1993)Google Scholar
  25. [Jon94]
    Jones, C.B.: Process algebra arguments about an object-based design notation. In: Classical, A. (ed.) A Classical Mind: Essays in Honour of C. A. R. Hoare, ch. 14, Prentice-Hall, Englewood Cliffs (1994)Google Scholar
  26. [Jon96]
    Jones, C.B.: Accommodating interference in the formal design of concurrent object-based programs. Formal Methods in System Design 8(2), 105–122 (1996)CrossRefGoogle Scholar
  27. [Jon01a]
    Jones, C.B.: On the search for tractable ways of reasoning about programs. Technical Report CS-TR-740, Newcastle University, Superceded by [Jon03a] (2001)Google Scholar
  28. [Jon01b]
    Jones, C.B.: The transition from VDL to VDM. JUCS 7(8), 631–640 (2001)zbMATHGoogle Scholar
  29. [Jon03a]
    Jones, C.B.: The early search for tractable ways of reasonning about programs. IEEE, Annals of the History of Computing 25(2), 26–49 (2003)CrossRefMathSciNetGoogle Scholar
  30. [Jon03b]
    Jones, C.B.: Operational semantics: concepts and their expression. Information Processing Letters 88(1-2), 27–32 (2003)CrossRefMathSciNetGoogle Scholar
  31. Klein, G., Nipkow, T., von Oheimb, D., Nieto, L.P., Schirmer, N., Strecker, M.: Java source and bytecode formalisations in Isabelle (2002) Google Scholar
  32. [Lis96]
    Liskov, B.: A history of CLU. In: History of programming languages—II, pp. 471–510. ACM Press, New York (1996)Google Scholar
  33. [LW69]
    Lucas, P., Walk, K.: On The Formal Description of PL/I. In: Annual Review in Automatic Programming Part 3, vol.  6, Pergamon Press, Oxford (1969)Google Scholar
  34. [McC66]
    McCarthy, J.: A formal description of a subset of ALGOL. In: [Ste66], pp. 1–12 (1966)Google Scholar
  35. [Mil89]
    Milner, R.: Communication and Concurrency. Prentice-Hall, Englewood Cliffs (1989)zbMATHGoogle Scholar
  36. [Mos92]
    Mosses, P.D.: Action Semantics. Cambridge Tracts in Theoretical Computer Science, vol. 26. Cambridge University Press, Cambridge (1992)zbMATHGoogle Scholar
  37. [Mos06]
    Mosses, P.D.: Teaching semantics of programming languages with Modular SOS. In: Teaching Formal Methods: Practice and Experience. Electr. Workshops in Comput. BCS (2006)Google Scholar
  38. [MP66]
    McCarthy, J., Painter, J.: Correctness of a compiler for arithmetic expressions. Technical Report CS38, Computer Science Department, Stanford University (April 1966) (see also Proc. Symp. in Applied Mathematics, vol.19, pp. 33–41, Mathematical Aspects of Computer Science, American Mathematical Society (1967))Google Scholar
  39. [MPW92]
    Milner, R., Parrow, J., Walker, D.: A calculus of mobile processes. Information and Computation 100, 1–77 (1992)zbMATHCrossRefMathSciNetGoogle Scholar
  40. [NN92]
    Nielson, H.R., Nielson, F.: Semantics with Applications: A Formal Introduction. Wiley, Chichester (1992), available on the WWW as zbMATHGoogle Scholar
  41. [Plo81]
    Plotkin, G.D.: A structural approach to operational semantics. Technical report, Aarhus University (1981)Google Scholar
  42. [Plo04a]
    Plotkin, G.D.: The origins of structural operational semantics. Journal of Logic and Algebraic Programming 60–61, 3–15 (July–December, 2004)CrossRefMathSciNetGoogle Scholar
  43. [Plo04b]
    Plotkin, G.D.: A structural approach to operational semantics. Journal of Logic and Algebraic Programming 60–61, 17–139 (July–December, 2004)MathSciNetGoogle Scholar
  44. [Rey98]
    Reynolds, J.C.: Theories of Programming Languages. Cambridge University Press, Cambridge (1998)zbMATHGoogle Scholar
  45. [San99]
    Sangiorgi, D.: Typed π-calculus at work: a correctness proof of Jones’s parallelisation transformation on concurrent objects. Theory and Practice of Object Systems 5(1), 25–34 (1999)CrossRefMathSciNetGoogle Scholar
  46. [Sco00]
    Scott, M.L.: Programming Language Pragmatics. Morgan Kaufmann, San Francisco (2000)Google Scholar
  47. [Ste66]
    Steel, T.B.: Formal Language Description Languages for Computer Programming. North-Holland, Amsterdam (1966)Google Scholar
  48. [Sto77]
    Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, Cambridge (1977)Google Scholar
  49. [SW01]
    Sangiorgi, D., Walker, D.: The π-calculus: A Theory of Mobile Processes. Cambridge University Press, Cambridge (2001)Google Scholar
  50. van Wijngaarden, A., Sintzoff, M., Mailloux, B.J., Lindsey, C.H., Peck, J.E.L., Meertens, L.G.L.T., Koster, C.H.A., Fisker, R.G.: Revised report on the Algorithmic Language ALGOL 68, Mathematisch Centrum, Amsterdam. Mathematical Centre Tracts 50 (1976) Google Scholar
  51. Walker, D.: π-calculus semantics for object-oriented programming languages. In: Ito, T., Meyer, A.R. (eds.) TACS 1991. LNCS, vol. 526, pp. 532–547. Springer, Heidelberg (1991)Google Scholar
  52. [Wal93]
    Walker, D.: Process calculus and parallel object-oriented programming languages. In: Casavant, T. (ed.) Parallel Computers: Theory and Practice, Computer Society Press (1993)Google Scholar
  53. [Wat04]
    Watt, D.A.: Programming Language Design Concepts. John Wiley, Chichester (2004)Google Scholar
  54. [WC02]
    Woodcock, J., Cavalcanti, A.: The semantics of circus. In: Bert, D., Bowen, J.P., Henson, M.C., Robinson, K. (eds.) B 2002 and ZB 2002. LNCS, vol. 2272, pp. 184–203. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  55. [Wex81]
    Wexelblat, R.L. (ed.): History of Programming Languages. Academic Press, London (1981)zbMATHGoogle Scholar
  56. [WH66]
    Wirth, N., Hoare, C.A.R.: A contribution to the development of algol. Commun. ACM 9(6), 413–432 (1966)zbMATHCrossRefGoogle Scholar
  57. [Win93]
    Winskel, G.: The Formal Semantics of Programming Languages. MIT Press, Cambridge (1993)zbMATHGoogle Scholar
  58. [Zem66]
    Zemanek, H.: Semiotics and programming languages. Communications of the ACM 9, 139–143 (1966)zbMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Cliff B. Jones
    • 1
  1. 1.School of Computing Science, University of Newcastle, NE1 7RUUK

Personalised recommendations