Principles of Programming Languages

by Mike Grant, Zachary Palmer, Scott Smith

DescriptionTable of ContentsDetailsHashtagsReport an issue

Book Description

In this open book, our goal is to study the fundamental concepts in programming languages, as opposed to learning a range of specific languages. Languages are easy to learn, it is the concepts behind them that are difficult. The basic features we study in turn include higher-order functions, data structures in the form of records and variants, mutable state, exceptions, objects and classes, and types. We also study language implementations, both through language interpreters and language compilers. Throughout the book we write small interpreters for toy languages, and in Chapter 8 we write a principled compiler. We define type checkers to define which programs are well-typed and which are not. We also take a more precise, mathematical view of interpreters and type checkers, via the concepts of operational semantics and type systems. These last two concepts have historically evolved from the logician's view of programming.

The material has evolved from lecture notes used in a programming languages course for juniors, seniors, and graduate students at Johns Hopkins University. While the book uses formal mathematical techniques such as operational semantics and type systems, it does not emphasize proofs of properties of these systems. We will nonetheless sketch the intuitions of some proofs.

This open book is licensed under a Creative Commons License (CC BY-SA). You can download Principles of Programming Languages ebook for free in PDF format (1.1 MB).

Table of Contents

Chapter 1
Introduction
Chapter 2
Operational Semantics
Chapter 3
Tuples, Records, and Variants
Chapter 4
Side Effects: State and Exceptions
Chapter 5
Object-Oriented Language Features
Chapter 6
Type Systems
Chapter 7
Concurrency
Chapter 8
Compilation by Program Transformation

Book Details

Subject
Computer Science
Publisher
Self-publishing
Published
2020
Pages
163
Edition
1
Language
English
PDF Size
1.1 MB
License
CC BY-SA

Related Books

Practical Foundations for Programming Languages
Types are the central organizing principle of the theory of programming languages. Language features are manifestations of type structure. The syntax of a language is governed by the constructs that define its types, and its semantics is determined by the interactions among those constructs. The soundness of a language design - the absence of ill-d...
Programming Languages and Systems
This book constitutes the proceedings of the 27th European Symposium on Programming, ESOP 2018, which took place in Thessaloniki, Greece in April 2018, held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018. The 36 papers presented in this volume were carefully reviewed and selected from 114 submissions. The ...
Foundations of Software Science and Computation Structures
This book constitutes the proceedings of the 15th International Conference on Foundations of Software Science and Computational Structures, FOSSACS 2012, held as part of the joint European Conference on Theory and Practice of Software, ETAPS 2012, which took place in Tallinn, Estonia, in March/April 2012. The 29 papers presented in this book toget...
Fundamental Approaches to Software Engineering
This book constitutes the proceedings of the 21st International Conference on Fundamental Approaches to Software Engineering, FASE 2018, which took place in Thessaloniki, Greece in April 2018, held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018.The 19 papers presented in this volume were carefully reviewed ...
Foundations of Analytical Chemistry
This book offers a completely new approach to learning and teaching the fundamentals of analytical chemistry. It summarizes 250 basic concepts of the field on the basis of slides. Each of the nine chapters offers the following features: - Introduction: Summary. General scheme. Teaching objectives. - Text containing the explanation of each slide. - ...
TouchDevelop
Mobile devices such as smartphones and tablets are set to become the main computers that virtually all people will own and carry with them at all times. And yet,mobile devices are not yet used for all computing tasks. A project at Microsoft Research was created to answer a simple question: "It is possible to create interesting apps directly on...