Principles of Programming Languages


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.
Download free tutorial in PDF (163 pages) created by Mike Grant .
Pages : 163
Size :
File type : HTML
Downloads: 131
Created: 2021-05-15
License: Free
Author(s): Mike Grant
Principles of Programming Languages

Others Principles of Programming Tutorials

Others related eBooks about Principles of Programming Languages

97 Things Every Programmer Should Know: Collective Wisdom from the Experts

Tap into the wisdom of experts to learn what every programmer should know, no matter what language you use. With the 97 short and extremely useful tips for programmers in this book, you'll expand your skills by adopting new approaches to old problems, learning appropriate best practices, and honing ...

Mastering Ethereum

Download free course Mastering Ethereum, pdf file on 424 pages by Andreas M. Antonopoulos, Gavin Wood....

Advances in Data Mining Knowledge Discovery and Applications

This book aims to help data miners, researchers, scholars, and PhD students who wish to apply data mining techniques. The primary contribution of this book is highlighting frontier fields and implementations of the knowledge discovery and data mining. It seems to be same things are repeated again. B...

Haskell Notes for Professionals

Download free course Haskell Notes for Professionals, pdf file on 229 pages by Stack Overflow Community....

Category Theory for Programmers

In this book, the author illustrates all major concepts of Category Theory using computer code. You are probably aware that functional languages are closer to math than the more popular imperative languages. They also offer more abstracting power. So a natural temptation would be to say: You must le...

Algorithms Notes for Professionals

Download free course Algorithms Notes for Professionals, pdf file on 257 pages by by Stack Overflow Community....

LaTeX in 24 Hours

Download free course LaTeX in 24 Hours, pdf file on 309 pages by Dilip Datta....

Demystifying Internet of Things Security

Break down the misconceptions of the Internet of Things by examining the different securit..., download free Internet of Things Security tutorial in PDF (488 pages) created by Sunil Cheruvu ....

HackSpace Magazine: Issue 50

Download free course HackSpace Magazine: Issue 50, pdf file on 116 pages by HackSpace Team....

Composing Software: An Exploration of Functional Programming and Object Composition in JavaScript

All software design is composition: the act of breaking complex problems down into smaller problems and composing those solutions. Most developers have a limited understanding of compositional techniques. It's time for that to change....