Skip to main content
Book cover

Understanding Programming Languages

  • Textbook
  • © 2020

Overview

  • Focuses on describing the semantics of programming languages at a deep level
  • Suitable for undergraduate and graduate courses in computer science and electronics engineering
  • Author among the pioneers in the development and application of formal methods for the design and verification of computer systems
  • Includes supplementary material: sn.pub/extras

This is a preview of subscription content, log in via an institution to check access.

Access this book

eBook USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book USD 79.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access

Licence this eBook for your library

Institutional subscriptions

Table of contents (11 chapters)

Keywords

About this book

This book is about describing the meaning of programming languages. The author teaches the skill of writing semantic descriptions as an efficient way to understand the features of a language. While a compiler or an interpreter offers a form of formal description of a language, it is not something that can be used as a basis for reasoning about that language nor can it serve as a definition of a programming language itself since this must allow a range of implementations. By writing a formal semantics of a language a designer can yield a far shorter description and tease out, analyse and record design choices.  


Early in the book the author introduces a simple notation, a meta-language, used to record descriptions of the semantics of languages. In a practical approach, he considers dozens of issues that arise in current programming languages and the key techniques that must be mastered in order to write the required formal semantic descriptions. The book concludes with a discussion of the eight key challenges: delimiting a language (concrete representation), delimiting the abstract content of a language, recording semantics (deterministic languages), operational semantics (non-determinism), context dependency, modelling sharing, modelling concurrency, and modelling exits.   


The content is class-tested and suitable for final-year undergraduate and postgraduate courses. It is also suitable for any designer who wants to understand languages at a deep level. Most chapters offer projects, some of these quite advanced exercises that ask for complete descriptions of languages, and the book is supported throughout with pointers to further reading and resources. As a prerequisite the reader should know at least one imperative high-level language and have some knowledge of discrete mathematics notation for logic and set theory. 



Reviews

“This book is much more than a textbook … . Overall, the book is very well written and organised. … this book is a very good tour of the history and development of mainstream programming languages from a formal methods perspective. It is both technically sound and a well-structured narrative. I would consider this a must-read for anyone in the discipline of formal methods.” (Andrew Butterfield, Formal Aspects of Computing, Vol. 34 (3-4), November, 2022)

“One of the great strengths of this book … is the continual reference to the research culture, both contemporary and historical. There are voluminous references, copious footnotes and a light-touch set of asides on the history of ideas in this field which I think will strongly motivate the best students to read and fully engage with the topic,and to understand that there are open questions and opportunities to make their own future contributions.” (Adrian Johnstone, bcs.org, July, 2021)

“This well-written textbook focuses on a precise description of programming language semantics in a relatively easily understood manner, utilizing a notation derived from a subset of the Vienna development method (VDM). … The author developed both the formalism and textbook over an extended period, using ten years of classes to refine the content. The resultant book is easy to read, well organized, and appropriate for an upper-level undergraduate or graduate class.” (Michael Oudshoorn, Computing Reviews, June 29, 2021)

Authors and Affiliations

  • School of Computing, Newcastle University, Newcastle upon Tyne, UK

    Cliff B. Jones

About the author

Prof. Cliff B. Jones is Professor of Computing Science at Newcastle University. He is best known for his research into "formal methods" for the design and verification of computer systems; under this heading, current topics of research include concurrency, support systems and logics. He is also currently applying research on formal methods to wider issues of dependability. As well as his academic career, Cliff spent over twenty years in industry; his 15 years in IBM saw among other things the creation in the Vienna Lab of VDM, one of the better-known "formal methods". He received his Ph.D. in Oxford under the supervision of Tony Hoare. He then moved directly to a chair at Manchester University where he built a world-class Formal Methods group. He is a Fellow of the Royal Academy of Engineering (FREng) and a Fellow of the ACM. He has been a member of IFIP Working Group 2.3 (Programming Methodology) since 1973, and was its chair from 1987 to 1996).   

Bibliographic Information

Publish with us