Delimiting a language
The body of this book addresses the task of describing –or designing– the semantics of programming languages. This chapter prepares the way for that task by introducing the division between syntax and semantics.
- PDF / 2,263,637 Bytes
- 229 Pages / 439.42 x 683.15 pts Page_size
- 90 Downloads / 156 Views
Understanding Programming Languages
Understanding Programming Languages
Cliff B. Jones
Understanding Programming Languages
Cliff B. Jones School of Computing Newcastle University Newcastle upon Tyne, UK
ISBN 978-3-030-59256-1 ISBN 978-3-030-59257-8 (eBook) https://doi.org/10.1007/978-3-030-59257-8 © Springer Nature Switzerland AG 2020 This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use. The publisher, the authors, and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication. Neither the publisher nor the authors or the editors give a warranty, expressed or implied, with respect to the material contained herein or for any errors or omissions that may have been made. The publisher remains neutral with regard to jurisdictional claims in published maps and institutional affiliations. This Springer imprint is published by the registered company Springer Nature Switzerland AG The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
Preface
The principal objective of this book is to teach a skill; to equip the reader with a way to understand programming languages at a deep level. There exist far more programming languages than it makes sense even to attempt to enumerate. Very few of these languages can be considered to be free from issues that complicate –rather than ease– communication of ideas. Designing a language is a non-trivial task and building tools to process the language requires a significant investment of time and resources. The formalism described in this book makes it possible to experiment with features of a programming language far more cheaply than by building a compiler. This makes it possible to think through combinations of language features and avoid unwanted interactions that can confuse users of the language. In general, engineers work long and hard on designs before they commit to create a physical artefact; software engineers need to embrace formal methods in order to avoid wasted effort. The principal communication mode that humans use to make computers perform useful functions is to write programs — normally in “high-level” programming languages. The actual instruction sets of computers are low-level and constructing programs at that level is tedious and unintuitive (I say this from personal experience havi
Data Loading...