did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321330253

Concepts of Programming Languages

by
  • ISBN13:

    9780321330253

  • ISBN10:

    0321330250

  • Edition: 7th
  • Format: Hardcover
  • Copyright: 2006-01-01
  • Publisher: Addison Wesley
  • View Upgraded Edition
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $112.80

Summary

Concepts of Programming Languages describes the fundamental concepts of programming languages by presenting design issues, examining design choices, and critically comparing design alternatives without being language specific. This book is appropriate for anyone who wants to compare and contrast various programming languages.

Author Biography

Robert Sebesta is an associate professor of computer science at the University of Colorado at Colorado Springs.

Table of Contents

Preliminaries
1(38)
Reasons for Studying Concepts of Programming Languages
2(3)
Programming Domains
5(2)
Language Evaluation Criteria
7(13)
Influences on Language Design
20(3)
Language Categories
23(1)
Language Design Trade-offs
24(1)
Implementation Methods
25(8)
Programming Environments
33(6)
Summary • Review Questions • Problem Set
34(5)
Evolution of the Major Programming Languages
39(84)
Zuse's Plankalkul
40(3)
Minimal Hardware Programming: Pseudocodes
43(2)
The IBM 704 and Fortran
45(7)
Functional Programming: LISP
52(5)
The First Step Toward Sophistication: ALGOL 60
57(6)
Computerizing Business Records: COBOL
63(5)
The Beginnings of Timesharing: Basic
68(6)
Interview: Alan Cooper---User Design and Language Design
72(2)
Everything for Everybody: PL/I
74(4)
Two Early Dynamic Languages: APL and SNOBOL
78(1)
The Beginnings of Data Abstraction: Simula 67
79(1)
Orthogonal Design: ALGOL 68
80(2)
Some Early Descendants of the ALGOLS
82(8)
Programming Based on Logic: Prolog
90(2)
History's Largest Design Effort: Ada
92(5)
Object-Oriented Programming: Smalltalk
97(4)
Combining Imperative and Object-Oriented Features: C++
101(3)
An Imperative-Based Object-Oriented Language: Java
104(4)
Scripting Languages: JavaScript, PHP, and Python
108(4)
A C-Based Language for the New Millennium: C#
112(3)
Markup/Programming Hybrid Languages
115(8)
Summary • Bibliographic Notes • Review Questions • Problem Set
117(6)
Describing Syntax and Semantics
123(52)
Introduction
124(1)
The General Problem of Describing Syntax
125(2)
Formal Methods of Describing Syntax
127(14)
Attribute Grammars
141(7)
History Note
142(6)
Describing the Meanings of Programs: Dynamic Semantics
148(27)
History Note
164(5)
Summary • Bibliographic Notes • Review Questions • Problem Set • Programming Exercises
169(6)
Lexical and Syntax Analysis
175(30)
Introduction
176(1)
Lexical Analysis
177(4)
The Parsing Problem
181(4)
Recursive-Descent Parsing
185(8)
Bottom-Up Parsing
193(12)
Summary • Review Questions • Problem Set • Programming Exercises
200(5)
Names, Bindings, Type Checking, and Scopes
205(46)
Introduction
206(1)
Names
207(2)
History Note
207(1)
History Note
208(1)
Variables
209(3)
History Note
210(2)
The Concept of Binding
212(10)
Interview: Rasmus Lerdorf---Scripting Languages and Other Examples of Slick Solutions
216(6)
Type Checking
222(1)
Strong Typing
223(2)
Type Compatibility
225(3)
History Note
225(3)
Scope
228(9)
Scope and Lifetime
237(1)
Referencing Environments
237(2)
Named Constants
239(12)
Summary • Review Questions • Problem Set • Programming Exercises
242(9)
Data Types
251(60)
Introduction
252(1)
Primitive Data Types
253(3)
Character String Types
256(5)
History Note
258(3)
User-Defined Ordinal Types
261(5)
Array Types
266(13)
History Note
267(2)
History Note
269(10)
Associative Arrays
279(5)
Interview: Rasmus Lerdorf---The Open Source Movement and Work Life
280(4)
Record Types
284(4)
Union Types
288(4)
Pointer and Reference Types
292(19)
History Note
296(9)
Summary • Bibliographic Notes • Review Questions • Problem Set • Programming Exercises
305(6)
Expressions and Assignment Statements
311(30)
Introduction
312(1)
Arithmetic Expressions
313(8)
History Note
320(1)
Overloaded Operators
321(2)
Type Conversions
323(3)
History Note
324(2)
Relational and Boolean Expressions
326(3)
History Note
326(3)
Short-Circuit Evaluation
329(1)
Assignment Statements
330(4)
History Note
333(1)
Mixed-mode Assignment
334(7)
Summary • Review Questions • Problem Set • Programming Exercises
335(6)
Statement-Level Control Structures
341(36)
Introduction
342(1)
Selection Statements
343(9)
History Note
344(2)
History Note
346(6)
Iterative Statements
352(14)
History Note
354(8)
Interview: Larry Wall---Part 1: Linguistics and the Birth of Perl
362(4)
Unconditional Branching
366(1)
History Note
366(1)
Guarded Commands
367(4)
Conclusions
371(6)
Summary • Review Questions • Problem Set • Programming Exercises
372(5)
Subprograms
377(50)
Introduction
378(1)
Fundamentals of Subprograms
378(7)
Design Issues for Subprograms
385(1)
Local Referencing Environments
385(2)
Parameter-Passing Methods
387(21)
Interview: Larry Wall---Part 2: Scripting Languages in General and Perl in Particular
388(8)
History Note
396(1)
History Note
397(4)
History Note
401(7)
Parameters That Are Subprogram Names
408(2)
History Note
409(1)
Overloaded Subprograms
410(1)
Generic Subprograms
411(6)
Design Issues for Functions
417(1)
User-Defined Overloaded Operators
418(1)
Coroutines
419(8)
History Note
419(2)
Summary • Review Questions • Problem Set • Programming Exercises
421(6)
Implementing Subprograms
427(32)
The General Semantics of Calls and Returns
428(1)
Implementing ``Simple'' Subprograms
429(2)
Implementing Subprograms with Stack-Dynamic Local Variables
431(8)
Nested Subprograms
439(8)
Interview: Niklaus Wirth---Keeping It Simple
440(7)
Blocks
447(2)
Implementing Dynamic Scoping
449(10)
Summary • Review Questions • Problem Set
453(6)
Abstract Data Types and Encapsulation Constructs
459(34)
The Concept of Abstraction
460(1)
Introduction to Data Abstraction
461(2)
Design Issues for Abstract Data Types
463(1)
Language Examples
464(14)
Interview: Bjarne Stroustrup---C++: Its Birth, Its Ubiquitousness, and Common Criticisms
466(12)
Parameterized Abstract Data Types
478(3)
Encapsulation Constructs
481(3)
Naming Encapsulations
484(9)
Summary • Review Questions • Problem Set • Programming Exercises
488(5)
Support for Object-Oriented Programming
493(42)
Introduction
494(1)
Object-Oriented Programming
494(3)
Design Issues for Object-Oriented Languages
497(5)
Support for Object-Oriented Programming in Smalltalk
502(2)
Support for Object-Oriented Programming in C++
504(10)
Interview: Bjarne Stroustrup---On Paradigms and Better Programming
506(8)
Support for Object-Oriented Programming in Java
514(3)
Support for Object-Oriented Programming in C#
517(2)
Support for Object-Oriented Programming in Ada 95
519(5)
The Object Model of JavaScript
524(3)
Implementation of Object-Oriented Constructs
527(8)
Summary • Review Questions • Problem Set • Programming Exercises
530(5)
Concurrency
535(44)
Introduction
536(3)
Introduction to Subprogram-Level Concurrency
539(4)
Semaphores
543(5)
History Note
543(5)
Monitors
548(2)
Message Passing
550(1)
Ada Support for Concurrency
551(11)
Java Threads
562(8)
C# Threads
570(2)
Statement-Level Concurrency
572(7)
Summary • Bibliographic Notes • Review Questions • Problem Set • Programming Exercises
574(5)
Exception Handling and Event Handling
579(40)
Introduction to Exception Handling
580(6)
History Note
584(2)
Exception Handling in Ada
586(7)
Exception Handling in C++
593(4)
Exception Handling in Java
597(10)
Interview: James Gosling---The Birth of Java
600(7)
Introduction to Event Handling
607(1)
Event Handling with Java
608(11)
Summary • Bibliographic Notes • Review Questions • Problem Set
614(5)
Functional Programming Languages
619(40)
Introduction
620(1)
Mathematical Functions
621(2)
Fundamentals of Functional Programming Languages
623(1)
The First Functional Programming Language: LISP
624(4)
An Introduction to Scheme
628(17)
Common Lisp
645(1)
ML
645(4)
Haskell
649(4)
Applications of Functional Languages
653(1)
A Comparison of Functional and Imperative Languages
653(6)
Summary • Bibliographic Notes • Review Questions • Problem Set • Programming Exercises
654(5)
Logic Programming Languages
659(36)
Introduction
660(1)
A Brief Introduction to Predicate Calculus
660(4)
Predicate Calculus and Proving Theorems
664(2)
An Overview of Logic Programming
666(2)
The Origins of Prolog
668(1)
The Basic Elements of Prolog
669(15)
The Deficiencies of Prolog
684(5)
Applications of Logic Programming
689(6)
Summary • Bibliographic Notes • Review Questions • Problem Set • Programming Exercises
691(4)
Bibliography 695(10)
Index 705

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program