
For undergraduate students in Computer Science and Computer Programming courses. Now in its Ninth Edition, Concepts of Programming Languages introduces students to the main constructs of contemporary programming languages and provides the tools needed to critically evaluate existing and future programming languages. Readers gain a solid foundation for understanding the fundamental concepts of programming languages through the author's presentation of design issues for various language constructs, the examination of the design choices for these constructs in some of the most common languages, and critical comparison of the design alternatives. In addition, Sebesta strives to prepare the readerfor 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. SUPPLEMENTS *PowerPoint Slides*PowerPoint Slides containing all figures from the textbook*Solutions to end of chapter problems*Accompanying Website containing "mini-manuals"for several languages*Text-specific Website: www.aw.com/sebesta INDICE: Chapter 1 Preliminaries 1 1.1 Reasons for Studying Concepts of Programming Languages 2 1.2 Programming Domains 5 1.3 Language Evaluation Criteria 7 1.4 Influences on Language Design 19 1.5 Language Categories 22 1.6 Language Design Trade-Offs 24 1.7 Implementation Methods 25 1.8 Programming Environments 32 Summary / Review Questions / Problem Set 33 Chapter 2 Evolution of theMajor Programming Languages 37 2.1 Zuse's Plankalkul 38 2.2 Minimal Hardware Programming: Pseudocodes 41 2.3 The IBM 704 and Fortran 44 2.4 Functional Programming: LISP 49 2.5 The First Step Toward Sophistication: ALGOL 60 54 2.6 Computerizing Business Records: COBOL 60 2.7 The Beginnings of Timesharing: BASIC65 Interview: ALAN COOPER--User Design and Language Design68 2.8 Everything for Everybody: PL/I 70 2.9 Two Early Dynamic Languages: APL and SNOBOL 73 2.10 The Beginnings of Data Abstraction: SIMULA 67 74 2.11 Orthogonal Design: ALGOL68 75 2.12 Some Early Descendants of the ALGOLs 77 2.13 Programming Based on Logic: Prolog 81 2.14 History's Largest Design Effort: Ada 83 2.15 Object-Oriented Programming: Smalltalk 87 2.16 Combining Imperative and Object-Oriented Features: C++ 90 2.17 An Imperative-Based Object-Oriented Language: Java 93 2.18 Scripting Languages 97 2.19 A C-Based Language for the New Millennium: C# 103 2.20 Markup/Programming Hybrid Languages 106 Summary / Bibliographic Notes /Review Questions / Problem Set / Programming Exercises 108 Chapter 3 Describing Syntax and Semantics 115 3.1 Introduction 116 3.2 The General Problem of Describing Syntax 117 3.3 Formal Methods of Describing Syntax 119 3.4 Attribute Grammars 134 History Note 135 3.5 Describing the Meanings of Programs: DynamicSemantics 141 History Note 156 Summary / Bibliographic Notes / Review Questions / Problem Set 163 Chapter 4 Lexical and Syntax Analysis 171 4.1 Introduction 172 4.2 Lexical Analysis 173 4.3 The Parsing Problem 182 4.4 Recursive-Descent Parsing 185 4.5 Bottom-Up Parsing 194 Summary / Review Questions / Problem Set / Programming Exercises202 Chapter 5 Names, Bindings, and Scopes 207 5.1 Introduction 208 5.2 Names 208 History Note209 History Note210 5.3 Variables 211 History Note212 5.4 The Concept of Binding 214 Interview: RASMUS LERDORF--Scripting Languages and Other Examples of Slick Solutions 218 5.5 Scope 225 History Note227 5.6 Scope and Lifetime 234 5.7 Referencing Environments 235 5.8 Named Constants 237 Summary / Review Questions / Problem Set / Programming Exercises 239 Chapter 6 Data Types 247 6.1 Introduction 248 6.2 Primitive Data Types 250 6.3 Character String Types 254 History Note255 6.4 User-Defined Ordinal Types 259 6.5 Array Types 263 History Note264 History Note267 6.6 Associative Arrays 277 Interview: ROBERTO IERUSALIMSCHY--Lua 280 6.7 Record Types 282 6.8 Union Types 287 6.9 Pointer and Reference Types 291 History Note294 6.10 Type Checking 304 6.11 Strong Typing 305 6.12 Type Equivalence 306 6.13 Theory and Data Types 310 Summary / Bibliographic Notes / Review Questions / Problem Set / Programming Exercises 312 Chapter 7 Expressions and Assignment Statements 319 7.1 Introduction 320 7.2 Arithmetic Expressions 321 7.3 Overloaded Operators330 7.4 Type Conversions 331 History Note 334 7.5 Relational and Boolean Expressions 335 History Note 335 7.6 Short-Circuit Evaluation 337 7.7 Assignment Statements 339 History Note 343 7.8 Mixed-Mode Assignment 343 Summary / Review Questions / Problem Set / Programming Exercises 344 Chapter 8 Statement-Level Control Structures 349 8.1 Introduction 350 8.2 Selection Statements 352 History Note 352 History Note 354 8.3 Iterative Statements 365 History Note 365 Interview: LARRY WALL--Part 1: Linguistics and the Birth of Perl 370 History Note378 8.4 Unconditional Branching 380 8.5 Guarded Commands 381 8.6 Conclusions 383 Summary / Review Questions / Problem Set / Programming Exercises 384 Chapter 9 Subprograms 391 9.1 Introduction 392 9.2 Fundamentals of Subprograms 392 9.3 Design Issues for Subprograms 403 9.4 Local Referencing Environments 404 9.5 Parameter-Passing Methods 406 Interview: LARRY WALL--Part 2: Scripting Languages in General and Perl in Particular 408 History Note416 History Note416 History Note420 9.6 Parameters That Are Subprograms 427 History Note429 9.7 Overloaded Subprograms 429 9.8 Generic Subprograms 431 9.9 Design Issues for Functions 438 9.10 User-Defined Overloaded Operators 439 9.11 Coroutines 440 History Note440 Summary / Review Questions / Problem Set / Programming Exercises 442Chapter 10 Implementing Subprograms 449 10.1 The General Semantics of Calls and Returns 450 10.2 Implementing "Simple" Subprograms 451 10.3 Implementing Subprograms with Stack-Dynamic Local Variables 453 10.4 Nested Subprograms 462 Interview: NIKLAUS WIRTH--Keeping It Simple 464 10.5 Blocks 470 10.6 Implementing Dynamic Scoping 472 Summary / Review Questions / Problem Set / Programming Exercises 475 Chapter 11 Abstract Data Types and Encapsulation Constructs 481 11.1 The Concept of Abstraction 482 11.2 Introduction to Data Abstraction 483 11.3 Design Issues for Abstract Data Types 486 11.4 Language Examples 487 Interview: BJARNE STROUSTRUP--C++: Its Birth, Its Ubiquitousness, and Common Criticisms 490 11.5 Parameterized Abstract Data Types 504 11.6 Encapsulation Constructs 508 11.7 Naming Encapsulations 512 Summary / Review Questions / Problem Set / Programming Exercises 517 Chapter 12 Support for Object-Oriented Programming 523 12.1 Introduction 524 12.2 Object-Oriented Programming 524 12.3 DesignIssues for Object-Oriented Languages 527 12.4 Support for Object-Oriented Programming in Smalltalk 532 12.5 Support for Object-Oriented Programming in C++ 535 Interview: BJARNE STROUSTRUP--On Paradigms and Better Programming 536 12.6Support for Object-Oriented Programming in Java 546 12.7 Support for Object-Oriented Programming in C# 550 12.8 Support for Object-Oriented Programming in Ada 95 552 12.9 Support for Object-Oriented Programming in Ruby 557 12.10 Implementation of Object-Oriented Constructs 560 Summary / Review Questions / Problem Set / Programming Exercises 564 Chapter 13 Concurrency 569 13.1 Introduction 570 13.2 Introduction to Subprogram-Level Concurrency 574 History Note 577 13.3 Semaphores 578 13.4 Monitors 583 13.5 Message Passing 585 13.6 Ada Support for Concurrency 587 13.7 Java Threads 598 13.8 C# Threads 606 13.9 Statement-Level Concurrency 608 Summary / Bibliographic Notes / Review Questions / Problem Set / Programming Exercises 610 Chapter 14 Exception Handling and Event Handling 615 14.1 Introduction to Exception Handling 616 History Note620 14.2 Exception Handling in Ada 622 14.3 Exception Handling in C++ 629 14.4 Exception Handling in Java 634 Interview: JAMES GOSLING--The Birth of Java 636 14.5 Introduction to Event Handling 643 14.6 Event Handling with Java 644 Summary / Bibliographic Notes / Review Questions / Problem Set / Programming Exercises 650 Chapter 15 Functional Programming Languages 655 15.1 Introduction 656 15.2 Mathematical Functions 657 15.3 Fundamentals of Functional Programming Languages 659 15.4 The First Functional Programming Language: LISP 661 15.5 An Introduction to Scheme 664 15.6 COMMON LISP 682 15.7 ML 682 15.8 Haskell 686 15.9 Applications of Functional Languages 691 15.10 A Comparison of Functional and Imperative Languages 692 Summary / Bibliographic Notes / Review Questions / ProblemSet / Programming Exercises 694 Chapter 16 Logic Programming Languages 701 16.1 Introduction 702 16.2 A Brief Introduction to Predicate Calculus 702 16.3 Predicate Calculus and Proving Theorems 706 16.4 An Overview of Logic Programming 708 16.5 The Origins of Prolog 710 16.6 The Basic Elements of Prolog 711 16.7 Deficiencies of Prolog 725 16.8 Applications of Logic Programming 731 Summary / Bibliographic Notes / Review Questions / Problem Set / Programming Exercises 733 Bibliography 737 Index 747
- ISBN: 978-0-13-246558-8
- Editorial: Pearson/Prentice Hall
- Encuadernacion: Rústica
- Páginas: 696
- Fecha Publicación: 25/06/2009
- Nº Volúmenes: 1
- Idioma: Inglés