Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Allen, C.D., Chapman, D.N., Jones, C.B.: A formal definition of ALGOL 60. Technical Report 12.105, IBM Laboratory Hursley (August 1972)
America, P.: Issues in the design of a parallel object-oriented language. Formal Aspects of Computing 1(4) (1989)
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)
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)
Bjørner, D., Jones, C.B. (eds.): The Vienna Development Method: The Meta-Language. LNCS, vol. 61. Springer, Heidelberg (1978)
Bjørner, D., Jones, C.B.: Formal Specification and Software Development. Prentice Hall International, Englewood Cliffs (1982)
Boole, G.: An Investigation of the Laws of Thought. Macmillan (1854) (reprinted by Dover (1958))
Butler, M.J.: CSP2B: A practical approach to combining CSP and B. Formal Aspects of Computing 12(3), 182–198 (2000)
Coleman, J.W., Jones, C.B.: Guaranteeing the soundness of rely/guarantee rules (revised). Journal of Logic and Computation (accepted for publication, 2007)
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)
Camilleri, J., Melham, T.: Reasoning with inductively defined relations in the HOL theorem prover. Technical Report 265, Computer Laboratory, University of Cambridge (August 1992)
Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)
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)
Engeler, E.: Symposium on Semantics of Algorithmic Languages. Lecture Notes in Mathematics, vol. 188. Springer, Heidelberg (1971)
Fitzgerald, J., GormLarsen, P.: Modelling systems: practical tools and techniques in software development. Cambridge University Press, Cambridge (1998)
Gordon, M.J.C.: The Denotational Description of Programming Languages: An Introduction. Springer, Heidelberg (1979)
Gordon, M.J.C.: Programming Language Theory and its Implementation. Prentice-Hall International, Englewood Cliffs (1988)
Hennessy, M.: The Semantics of Programming Languages: an elementary introduction using structural operational semantics. Wiley, Chichester (1990)
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)
Henhapl, W., Jones, C.B.: A run-time mechanism for referencing variables. Information Processing Letters 1, 14–16 (1971)
Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21, 666–677 (1978)
Jones, C.B., Lucas, P.: Proving correctness of implementation techniques. In: [Eng71], pp. 178–211 (1971)
Jones, C.B., Lomet, D., Romanovsky, A., Weikum, G.: The atomicity manifesto (2005)
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)
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)
Jones, C.B.: Accommodating interference in the formal design of concurrent object-based programs. Formal Methods in System Design 8(2), 105–122 (1996)
Jones, C.B.: On the search for tractable ways of reasoning about programs. Technical Report CS-TR-740, Newcastle University, Superceded by [Jon03a] (2001)
Jones, C.B.: The transition from VDL to VDM. JUCS 7(8), 631–640 (2001)
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)
Jones, C.B.: Operational semantics: concepts and their expression. Information Processing Letters 88(1-2), 27–32 (2003)
Klein, G., Nipkow, T., von Oheimb, D., Nieto, L.P., Schirmer, N., Strecker, M.: Java source and bytecode formalisations in Isabelle (2002)
Liskov, B.: A history of CLU. In: History of programming languages—II, pp. 471–510. ACM Press, New York (1996)
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)
McCarthy, J.: A formal description of a subset of ALGOL. In: [Ste66], pp. 1–12 (1966)
Milner, R.: Communication and Concurrency. Prentice-Hall, Englewood Cliffs (1989)
Mosses, P.D.: Action Semantics. Cambridge Tracts in Theoretical Computer Science, vol. 26. Cambridge University Press, Cambridge (1992)
Mosses, P.D.: Teaching semantics of programming languages with Modular SOS. In: Teaching Formal Methods: Practice and Experience. Electr. Workshops in Comput. BCS (2006)
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))
Milner, R., Parrow, J., Walker, D.: A calculus of mobile processes. Information and Computation 100, 1–77 (1992)
Nielson, H.R., Nielson, F.: Semantics with Applications: A Formal Introduction. Wiley, Chichester (1992), available on the WWW as http://www.daimi.au.dk/bra8130/Wiley_book/wiley.html
Plotkin, G.D.: A structural approach to operational semantics. Technical report, Aarhus University (1981)
Plotkin, G.D.: The origins of structural operational semantics. Journal of Logic and Algebraic Programming 60–61, 3–15 (July–December, 2004)
Plotkin, G.D.: A structural approach to operational semantics. Journal of Logic and Algebraic Programming 60–61, 17–139 (July–December, 2004)
Reynolds, J.C.: Theories of Programming Languages. Cambridge University Press, Cambridge (1998)
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)
Scott, M.L.: Programming Language Pragmatics. Morgan Kaufmann, San Francisco (2000)
Steel, T.B.: Formal Language Description Languages for Computer Programming. North-Holland, Amsterdam (1966)
Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, Cambridge (1977)
Sangiorgi, D., Walker, D.: The π-calculus: A Theory of Mobile Processes. Cambridge University Press, Cambridge (2001)
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)
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)
Walker, D.: Process calculus and parallel object-oriented programming languages. In: Casavant, T. (ed.) Parallel Computers: Theory and Practice, Computer Society Press (1993)
Watt, D.A.: Programming Language Design Concepts. John Wiley, Chichester (2004)
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)
Wexelblat, R.L. (ed.): History of Programming Languages. Academic Press, London (1981)
Wirth, N., Hoare, C.A.R.: A contribution to the development of algol. Commun. ACM 9(6), 413–432 (1966)
Winskel, G.: The Formal Semantics of Programming Languages. MIT Press, Cambridge (1993)
Zemanek, H.: Semiotics and programming languages. Communications of the ACM 9, 139–143 (1966)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Jones, C.B. (2007). Understanding Programming Language Concepts Via Operational Semantics. In: George, C.W., Liu, Z., Woodcock, J. (eds) Domain Modeling and the Duration Calculus. Lecture Notes in Computer Science, vol 4710. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74964-6_4
Download citation
DOI: https://doi.org/10.1007/978-3-540-74964-6_4
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-74963-9
Online ISBN: 978-3-540-74964-6
eBook Packages: Computer ScienceComputer Science (R0)