Programming Books C Java PHP Python Learn more Browse Programming Books
Buy Used
Condition: Used: Good
Comment: Contains highlighting and/or writing. Ships direct from Amazon.
Access codes and supplements are not guaranteed with used items.
Have one to sell? Sell on Amazon
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Concepts of Programming Languages, Sixth Edition Hardcover – July 24, 2003

ISBN-13: 978-0321193629 ISBN-10: 0321193628 Edition: 6th

Price: $9.95
10 New from $8.00 51 Used from $0.01 1 Collectible from $9.96
Amazon Price New from Used from
"Please retry"
Hardcover, July 24, 2003
$8.00 $0.01
Unknown Binding
"Please retry"

There is a newer edition of this item:


Spring Books
The Big Books of Spring
See our editors' picks for the books you'll want to read this season, from blockbusters and biographies to new fiction and children's books.

Editorial Reviews


The fifth edition of Concepts of Programming Languages by Robert Sebesta describes fundamental concepts of programming languages by presenting design issues of the various language constructs, examining the design choices for these constructs in a few common languages, and critically comparing the design alternatives. The fifth edition of Concepts of Programming Languages by Robert Sebesta continues the approach that has made it the undisputed market leader. It describes fundamental concepts of programming languages by presenting design issues of the various language constructs, examining the design choices for these constructs in a few common languages, and critically comparing the design alternatives. This is an ideal text for students taking a comparative programming languages course: it allows those with the ability to program to learn how to choose appropriate languages for certain tasks, increase their abilities to learn new languages, and understand the significance of implementation. This new edition is updated to include a new chapter covering parsing, new material on JavaScript, and updated material on Java1.3. *NEW! Expands the treatment of parsing from one section to one chapter (Ch. 3). *NEW! Includes additional treatment of scripting languages. *NEW! Offers updated coverage of Java 1.3 throughout. *NEW!Added information on scripting languages.;*Illustrates various language constructs and design alternatives through Java, JavaScript, C++, C, Ada, Fortran, Perl and others. 1. Preliminaries. 2. Evolution of the Major Programming Languages. 3. Describing Syntax and Semantics. 4. Lexical and Syntax Analysis. 5. Names, Bindings, Type Checking, and Scopes. 6. Data Types. 7. Expressions and Assignment Statements. 8. Statement-Level Control Structures. 9. Subprograms. 10. Implementing Subprograms. 11. Abstract Data Types. 12. Support for Object-Oriented Programming. 13. Concurrency. 14. Exception Handling. 15. Functional Programming Languages. 16. Logic Programming Languages. --Concept of Programming

This is one of best books of Programming Languages I know. I use it as basic bibliography to teach Programming Languages in a College in Brazil. This book must be compared with the books of Terrence Pratt, Guezzi and Watt among others. This book do not intend to be a book to teach any language like C or Java. This books is a book to explain issues about the design of languages. (Sorry for my english mistakes) --Concept of Programming

Concepts of Programming Languages by Robert W. Sebesta, Sixth edition is truly a well-written book. Perhaps one of the best books written on this topic. Sebesta has done an exceptional job conveying the topic to the reader, making a complex topic both easy to read and understand. This textbook is good for any college student or professional trying to get a feel of how the most popular programming languages have evolved in the past 4 decades, and what sets these languages apart. Topics in this book range from Zuse's Plankalkul (the first programming language) to how Exception Handling is done in Java and Logic Programming and everything in between. Interviews with some of the pioneers of our time such as James Gosling (the creator of Java) and Bjarne Stroustrup (the designer of C++), and side "History Notes" represent some of the "fun" readings the author has added to this book. Each chapter ends with a brief but concise summary followed by problem sets that assess the important topics covered in the chapter. Even though this book is targeted for a junior-level programming course, some of the topics are well worth the reading for an advanced programmer or a graduate student. The author starts by giving the reasons behind why such topic needs to be studied: · To increase capacity to express ideas - the depth at which we can program, just like the way we think, is highly influenced by the expressive power of the language in which we communicate our thoughts. · Improved background for choosing appropriate language - if you know more about programming languages, you have a better idea what to choose when development time comes. · Increased Ability to learn new languages - continuous learning in the field of software engineering is very much essential. If one knows the concepts of one programming language, applying those concepts to other language to learn or understand become much simpler and easier. · Better understanding of the significance of implementation - Someone who knows the implementation details of that language can only fix some programming bugs. · Overall advancement of computing - For better decisions to be made going forward with computing and software development, one needs to learn from some of the mistakes that gotten us where we are. Things to do or not to do in this relatively new science. The author starts by giving a very descriptive background on programming languages, starting from Zuse's Plankalkul, the first programming language. Zuse's defined the Plankalkul and wrote many algorithms in the language for a variety of problems. Even thought it was never implemented, Plankalkul paved the way for other programming languages that would follow it. Fortran, LISP, ALGOL 60, COBOL, BASIC and other high-level programming languages would follow over the years and evolve. The author gives the history behind each language, and goes in to a detail description of how each language evolved over the years. Even though chapter 2 gives the background behind most programming languages, the book only covers the most popular and widely used programming languages thereafter, mainly Fortran, C/C++, Ada and Java. If your goal is not to teach or learn the details of compilers and/or compiler design, chapter 3 and 4 are defiantly for you. Lexical analysis talks about small-scale language constructs, such as names and numeric literals. Syntax analysis deals with the large-scale constructs, such as expressions, statements, and program units. In less than a hundred pages of text, the author explains the background, theory and implementation of syntax and lexical representation and analysis. It wets the reader's appetite enough that if --Concept of Programming --This text refers to an out of print or unavailable edition of this title.

From the Back Cover

New to the Fourth Edition Offers coverage of Java™ support for object-oriented programming, concurrency, and exception shandling Features object-oriented programming more prominently - the expanded OO coverage appears earlier in the book and is also intertwined with the discussions of the non-OO imperative languages Provides expanded material on semantics, including a proof of correctness of a complete program using axiomatic semantics

0201385961B04062001 --This text refers to an out of print or unavailable edition of this title.


Shop the new
New! Introducing the, a hub for Software Developers and Architects, Networking Administrators, TPMs, and other technology professionals to find highly-rated and highly-relevant career resources. Shop books on programming and big data, or read this week's blog posts by authors and thought-leaders in the tech industry. > Shop now

Product Details

  • Hardcover: 704 pages
  • Publisher: Addison Wesley; 6 edition (July 24, 2003)
  • Language: English
  • ISBN-10: 0321193628
  • ISBN-13: 978-0321193629
  • Product Dimensions: 8.2 x 1.2 x 8.6 inches
  • Shipping Weight: 2.7 pounds
  • Average Customer Review: 3.3 out of 5 stars  See all reviews (37 customer reviews)
  • Amazon Best Sellers Rank: #1,579,198 in Books (See Top 100 in Books)

More About the Author

Discover books, learn about writers, read author blogs, and more.

Customer Reviews

I just finished using the book for the Programming Language class.
YongSung Kim
Some weak points: lots of people seemed to have trouble with attribute grammars, the book's explanation was not good enough.
As long as you have familiarity with at least one programming language to begin with, this book is easy to understand.

Most Helpful Customer Reviews

45 of 50 people found the following review helpful By A Customer on May 4, 2004
Format: Hardcover
This book will not make you understand the basic ideas behind programming languages, and you won't be able to shy away from math as Sebesta's book does. For that, you will need other books.
This book, however is useful inasmuch as it provides a survey of some programming languages. However, it is heavily biased towards imperative programming languages. Even here the balance is wrong, with a lot of Ada and Pascal. IIRC, he forgets to mention Forth, which is old, but a totally different way to program than the other languages.
On the other hand, anything he has to say about any other type of paradigm will be, probably, wrong. For instance, his description of Lisp remains in the 1950s ("interpreted, everything is a list"). He entirely ignores the Common Lisp Object System, which is by far much more advanced that your staple "OOP" language. The Smalltalk environment he shows is Smalltalk-80. Meaning: the environment used *then*. His description of Functional languages is a joke. So one gets the feeling he doesn't know what he is talking about. And he doesn't.
He missed a lot of development that went on in programming language research and their implementation.
He can't get right new developments in programming except things that are mainstream. In the new edition, he approaches Java, as if garbage collection, object orientation and bytecodes were something new (Smalltalk, Common Lisp almost 20 decades ago). If he's missed all that, let's not even begin to talk about the very new breed, like fast-compiling functional languages (Clean, OCaml), languages that allow reflection and metaprogramming (e.g., Maude), languages built for distributed programming (Oz, Erlang), etc.
Read more ›
1 Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
19 of 20 people found the following review helpful By W. Ghost on March 3, 2008
Format: Hardcover
This book is very large and covers lots of features of programming languages, giving real examples. However, after using it for a long time (I used a few different editions) I still feel that it's not really useful.

Sebesta does not get into the theoretical part of programming language design, so the book does not help you with designing new languages. His comments on language features are also not very interesting.

He does not teach you how to write an interpreter or compiler, so the book is not a language implementation one.

And finally, the book can't be used to properly compare languages: not from a theoretical point of view, because he only briefly mentions syntax and dynamic semantics, without actually getting into real stuff (lambda calculus, types, denotational/operational semantics etc); and also not from a practical point of view because to compare languages in practice *you need to write programs in them*, and not just read a catalog of features and code snippets. Really, I don't think anyone would understand Scheme continuations, Common Lisp macros, Smalltalk programming environments, or Haskell Monads *and Monad transformers* without using them for real (or at least read real-world examples of how language features are used). I mean really understanding, and knowing *why* they were designed the way they were.

So, the book is useless. Seems like an attempt to compare languages, but done the wrong way.

By the way, the examples are not well chosen.

Instead of buying this book, I would:

- Buy one or more books on language implementation, if I wanted to implement a language, and actually write at least one compiler and one interpreter.
Read more ›
1 Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
17 of 19 people found the following review helpful By David A. Lessnau on April 25, 2008
Format: Hardcover
I'm highly disappointed in this book. The biggest problem with it (and it's mighty big for a book that's supposed to talk about the concepts of various programming languages) is that it focuses almost entirely on a subset of imperative languages. Almost exclusively, the descriptions and examples involve Fortran, C, C++, Java, C# and Ada. Only in the last two chapters does the author really talk about other types of programming languages and those two chapters are devoted to them. It's like they were just tacked on.

After that, the other problems with the book are relatively insignificant. First, the book is badly edited. In spots, it reads like it was mechanically translated from a foreign language. Second, an awful lot of his explanations are unnecessarily filled with pretentious-sounding multi-syllabic words. For instance, on page 183 he gives the following description of a top-down parser:

"Given a sentential form that is part of a leftmost derivation, the parser's task is to find the next sentential form in that leftmost derivation. The general form of a left sentential form is xAa (my note: that "a" is actually the letter alpha in the book), whereby our notational conventions x is a string of terminal symbols, A is a nonterminal, and a is a mixed string. Because x contains only terminals, A is the leftmost nonterminal in the sentential form, so it is the one that must be expanded to get the next sentential form in the leftmost derivation."

And finally (for my purposes here), he defines things using undefined (or merely "later-defined") terms. For instance, on page 220 he says, "stack-dynamic variables are allocated from the run-time stack.
Read more ›
1 Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again

Most Recent Customer Reviews