Essentials of Programming Languages - Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes

Essentials of Programming Languages

Buch | Hardcover
568 Seiten
1992
MIT Press (Verlag)
978-0-262-06145-2 (ISBN)
64,20 inkl. MwSt
zur Neuauflage
  • Titel erscheint in neuer Auflage
  • Artikel merken
Zu diesem Artikel existiert eine Nachauflage
This text 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 understanding of programming principles.
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.

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.

Erscheint lt. Verlag 2.3.2001
Vorwort Harold Abelson
Zusatzinfo 160
Verlagsort Cambridge, Mass.
Sprache englisch
Maße 204 x 229 mm
Gewicht 1384 g
Themenwelt Mathematik / Informatik Informatik
ISBN-10 0-262-06145-7 / 0262061457
ISBN-13 978-0-262-06145-2 / 9780262061452
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
den digitalen Office-Notizblock effizient nutzen für PC, Tablet und …

von Philip Kiefer

Buch | Softcover (2023)
Markt + Technik Verlag
9,95
ein Bericht aus Digitalien

von Peter Reichl

Buch (2023)
Muery Salzmann (Verlag)
19,00