Concepts of Programming Languages, 12th edition
By Robert W. Sebesta
LU
XE
LI
BR
AR
Y
, Table of Content
Preliminaries
Evolution of the Major Programming Languages
Describing Syntax and Semantics
Lexical and Syntax Analysis
Names, Bindings, and Scopes
Data Types
LU
Expressions and Assignment Statements
Statement-Level Control Structures
Subprograms
XE
Implementing Subprograms
Abstract Data Types and Encapsulation Constructs
Support for Object-Oriented Programming
LI
Concurrency
Exception Handling and Event Handling
BR
Functional Programming Languages
Logic Programming Languages
AR
Y
, hgfdsa
Preface
Changes for the Twelfth Edition
LU
he goals, overall structure, and approach of this twelfth edition of
T Concepts of Programming Languages remain the same as those of the
eleven earlier editions. The principal goals are to introduce the
fundamental constructs of contemporary programming languages and to
XE
provide the reader with the tools necessary for the critical evaluation of
existing and future programming languages. A secondary goal is to prepare the
reader for the study of compiler design, by providing an in-depth discussion of
programming language structures, presenting a formal method of describing
syntax, and introducing approaches to lexical and syntactic analysis.
LI
The twelfth edition evolved from the eleventh through several different kinds
of changes. To maintain the currency of the material, nearly all of the discussion
of some programming languages, specifically Lua and Objective-C, has been
BR
removed. Material on the newer language, Swift, was added to several chapters.
In addition, a new section on optional types was added to Chapter 6. Material
was added to Section 8.3.4 to describe iterators in Python. In numerous places in
the manuscript small changes were made to correct and/or clarify the discussion.
AR
The Vision
This book describes the fundamental concepts of programming languages by
discussing the design issues of the various language constructs, examining the
Y
design choices for these constructs in some of the most common languages, and
critically comparing design alternatives.
Any serious study of programming languages requires an examination of
some related topics, among which are formal methods of describing the syntax
and semantics of programming languages, which are covered in Chapter 3. Also,
implementation techniques for various language constructs must be considered:
Lexical and syntax analysis are discussed in Chapter 4, and implementation of
2
, hgfdsa
subprogram linkage is covered in Chapter 10. Implementation of some other
language constructs is discussed in various other parts of the book.
The following paragraphs outline the contents of the twelfth edition.
Chapter Outlines
Chapter 1 begins with a rationale for studying programming languages. It then
LU
discusses the criteria used for evaluating programming languages and language
constructs. The primary influences on language design, common design trade-
offs, and the basic approaches to implementation are also examined.
Chapter 2 outlines the evolution of the languages that are discussed in this
book. Although no attempt is made to describe any language completely, the
XE
origins, purposes, and contributions of each are discussed. This historical
overview is valuable, because it provides the background necessary to
understanding the practical and theoretical basis for contemporary language
design. It also motivates further study of language design and evaluation. Because
LI
none of the remainder of the book depends on Chapter 2, it can be read on its
own, independent of the other chapters.
Chapter 3 describes the primary formal method for describing the syntax of
BR
programming language—BNF. This is followed by a description of attribute
grammars, which describe both the syntax and static semantics of languages. The
difficult task of semantic description is then explored, including brief
introductions to the three most common methods: operational, denotational, and
axiomatic semantics.
AR
Chapter 4 introduces lexical and syntax analysis. This chapter is targeted to
those Computer Science departments that no longer require a compiler design
course in their curricula. Similar to Chapter 2, this chapter stands alone and can
be studied independently of the rest of the book, except for Chapter 3, on which it
depends.
Y
Chapters 5 through 14 describe in detail the design issues for the primary
constructs of programming languages. In each case, the design choices for several
example languages are presented and evaluated. Specifically, Chapter 5 covers
the many characteristics of variables, Chapter 6 covers data types, and Chapter 7
explains expressions and assignment statements. Chapter 8 describes control
statements, and Chapters 9 and 10 discuss subprograms and their implementation.
Chapter 11 examines data abstraction facilities. Chapter 12 provides an in-depth
3