Essentials of programming languages
Author(s)
Bibliographic Information
Essentials of programming languages
MIT Press , McGraw-Hill, c1992
- : MIT Press
- : McGraw-Hill
- : pbk
Available at / 43 libraries
-
Library, Research Institute for Mathematical Sciences, Kyoto University数研
: MIT PressFRI||33||191086576
-
No Libraries matched.
- Remove all filters.
Note
Bibliographical references: p. [509]-516
Includes index
Description and Table of Contents
- Volume
-
: MIT Press ISBN 9780262061452
Description
What really happens when a program runs? "Essentials of Programming Languages" teaches the fundamental concepts of programming languages through numerous short programs, or "interpreters" that actually implement the features of a language. Nearly 300 exercises using these programs provide a hands-on undertanding of programming principles that is hard, if not impossible, to achieve by formal study alone. In an approach that is uniquely suited to mastering a new level of programming structure, the authors derive a sequence of interpreters that begins with a high-level operational specification (close to formal semantics) and ends with what is effectively assembly language - a process involving programming transformation techniques that should be in the toolbox of every programmer. The first four chapters provide that foundation for an in-depth study of programming languages, including most of the features of Scheme, needed to run the language-processing programs of the book. The next four chapters form the core of the book, deriving a sequence of interpreters ranging from very high- to very low-level.
The authors then explore variations in programming language semantics, including various parameter-passing techniques for transforming interpreters that ultimately allow the interpreter to be implemented in any low-level language. They conclude by discussing scanners and parsers and the derivation of a compiler and virtual machine from an interpreter.
Table of Contents
- Part 1 Tools for symbolic programming: simple expressions
- data types
- procedures. Part 2 Induction, recursion and scope: inductively specified data
- recursively specified programs
- statis properties of variables. Part 3 Syntactic abstraction and data abstraction: local binding
- logical connectives
- branching
- records
- data abstraction
- from procedural to data structure representations. Part 4 Reduction rules and imperative programming: reasoning about procedures
- the Lambda calculus and Beta-conversion
- reduction strategies
- defining recursive procedures in the Lambda calculus
- sequencing and imperative programming
- variable assignment and sharing
- streams. Part 5 Interpreters: a simple interpreter
- conditional evaluation
- local binding
- procedures
- variable assignment
- recursion
- dynamic scope and dynamic assignment. Part 6 Parameter passing: adding arrays
- call-by-reference
- call-by-value-result and call-by-result
- expressed or denoted values? call-by-name and call-by-need
- optional and keyword arguments. Part 7 Object-oriented languages: objects and classes
- inheritance
- meta-classes. Part 8 Continuation-passing style: iterative control behaviour and proper tail recursion
- introduction to continuation-passing style
- tail form
- converting to continuation-passing style
- examples of the CPS transformation
- implementing the CPS transformation
- call chains. Part 9 Continuation-passing interpreters: data structure representations of continuations
- the continuation interpreter
- making continuations available to the programmer
- upward continuations and coroutines
- leaving and entering control contexts
- dynamic assignment revisited. Part 11 Imperative form and stack architecture: imperative form
- control stacks
- interpreter stack architecture
- stack allocation of continuations and environments. Part 12 Scanners and parsers: lexical scanning using finite automata
- simulating a scanning automation
- constructing a predictive parser
- recursive descent parsers
- table driven parsers. Part 12 Compiler derivation: deriving a compiler and machine from an interpreter
- register allocation
- obtaining more realistic object code
- compiling procedures. Appendices: record implementation
- abstract syntax
- character string syntax
- character string parser
- character string scanner
- a read-eval-print loop
- list structure syntax
- list structure parser
- scheme procedures used.
- Volume
-
: pbk ISBN 9780262560672
Description
What really happens when a program runs? "Essentials of Programming Languages" teaches the fundamental concepts of programming languages through numerous short programs, or "interpreters" that actually implement the features of a language. Nearly 300 exercises using these programs provide a hands-on undertanding of programming principles that is hard, if not impossible, to achieve by formal study alone. In an approach that is uniquely suited to mastering a new level of programming structure, the authors derive a sequence of interpreters that begins with a high-level operational specification (close to formal semantics) and ends with what is effectively assembly language - a process involving programming transformation techniques that should be in the toolbox of every programmer. The first four chapters provide that foundation for an in-depth study of programming languages, including most of the features of Scheme, needed to run the language-processing programs of the book. The next four chapters form the core of the book, deriving a sequence of interpreters ranging from very high- to very low-level.
The authors then explore variations in programming language semantics, including various parameter-passing techniques for transforming interpreters that ultimately allow the interpreter to be implemented in any low-level language. They conclude by discussing scanners and parsers and the derivation of a compiler and virtual machine from an interpreter.
Table of Contents
- Part 1 Tools for symbolic programming: simple expressions
- data types
- procedures. Part 2 Induction, recursion and scope: inductively specified data
- recursively specified programs
- static properties of variables. Part Syntactic abstraction and data abstraction: local binding
- logical connectives
- branching
- records
- data abstraction
- from procedural to data structure representations. Part 4 Reduction rules and imperative programming: reasoning about procedures
- the Lambda calculus and b-conversion
- reduction strategies
- defining recursive procedures in the lambda calculus
- sequencing and imperative programming
- variable assignment and sharing
- streams. Part 5 Interpreters: a simple interpreter
- conditional evaluation
- local binding
- procedures
- variable assignment
- recursion
- dynamic scope and dynamic assignment. Part 6 Parameter passing: adding arrays
- call-by-reference
- call-by-value-result and cally-by-result
- expressed or denoted values?
- call-by-name and call-by-need
- optional and keyword arguments. Part 7 Object-oriented languages: objects and classes
- inheritance
- meta-classes. Part 8 Continuation-passing style: iterative control behaviour and proper tail recursion
- introduction to continuation-passing style
- tail form
- converting to continuation-passing style
- examples of the CPS transformation
- implementing the CPS transformation
- call chains. Part 9 Continuation-passing interpreters: data structure representations of continuations
- the continuation interpreter
- making continuations available to the programmer
- upward continuations and coroutines
- leaving and entering control contexts
- dynamic assignment revisited. Part 10 Imperative form and stack architecture: imperative form
- control stacks
- interpreter stack architecture
- stack allocation of continuations and environments. Part 11 Scanners and parsers: lexical scanning using finite automata
- simulating a scanning automaton
- constructing a predictive parser
- recursive descent parsers
- table-driven parsers. Part 12 Compiler derivation: deriving a compiler and machine from an interpreter
- register allocation
- obtaining more realistic object code
- compiling procedures. Appendices: record implementation
- abstract syntax
- character string syntax
- character string parser
- character string scanner
- a read-eval-print loop
- list structure syntax
- list structure parser
- scheme procedures used
by "Nielsen BookData"