Customer Reviews


35 Reviews
5 star:
 (10)
4 star:
 (7)
3 star:
 (5)
2 star:
 (6)
1 star:
 (7)
 
 
 
 
 
Average Customer Review
Share your thoughts with other customers
Create your own review
 
 
Only search this product's reviews

The most helpful favorable review
The most helpful critical review


19 of 23 people found the following review helpful:
4.0 out of 5 stars Best of the easiest, but being dated is showing through
As a perennial instructor of the Programming Languages (PL) course, I have been using Sebesta for a long, long time, having used Pratt's texts before that. There are two categories of books for the PL course: easy and hard. The hard ones snow you with formalism and seem to be proud of the fact that they don't provide motivation. The easy ones are typically boring...
Published on May 4, 2006 by Gene B. Chase

versus
42 of 47 people found the following review helpful:
2.0 out of 5 stars Semi-useful survey of programming languages
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...
Published on May 4, 2004


‹ Previous | 1 2 3 4| Next ›
Most Helpful First | Newest First

42 of 47 people found the following review helpful:
2.0 out of 5 stars Semi-useful survey of programming languages, May 4, 2004
By A Customer
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.
If you buy this book, it should be only for the value of having a rather general, limited, historical overview of some programming languages. If you really want to learn about the ideas behind a programming language, you should read Structure and Interpretation of Computer Programs (the classic, now updated), and Concepts, Techniques, and Models of Computer Programming (the "new" classic).
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


16 of 17 people found the following review helpful:
1.0 out of 5 stars Not useful, March 3, 2008
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. Queinnec's Lisp in Small Pieces, Appel's Compiling with Continuations and Compiler books like those by Copper/Torczon, Appel or Louden.
For garbage collection there is a nice book by Lins and Jones (although a bit dated). Simon Peyton Jones also has a fine book on functional language implementation that could also be very useful.

- If I wanted to compare languages, I'd learn three or four different paradigms. *In practice*. Very different languages. For example, Prolog, Ruby, Haskell and Erlang. Maybe Scheme or Common Lisp also. And you only "understand" a language if you develop real, non-trivial projects in it, so I would actually create tools in those languages. Of course, a good programmer needs to know a minimum of how the interpreted or compiled code will work, so it's good to know about garbage collection, stack, heap, how threads are implemented in my interpreter, etc. (And Robert Sebesta's book will only give me *some* help here).

- If I wanted to create a language (or to compare languages from a theoretical point of view), I would do both things mentioned before, since I wouldn't feel comfortable creating a language without ever having used different paradigms, and then I would need to implement my language. I would have to read articles and books on language design, type theory, computability/lambda-calculus/term rewriting, formal semantics etc. The book by Turbak/Gifford on language design, Peirce's book on Types, seem like a *very* good start, for example. They are all more focused and in my opinion more useful than the grab-bag-of-language-features that I see in Sebesta's book.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


17 of 19 people found the following review helpful:
2.0 out of 5 stars Focuses Almost Exclusively on Imperative Languages, April 25, 2008
This review is from: Concepts of Programming Languages (7th Edition) (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." He doesn't define what a run-time stack is until page 433 and that definition is: "This stack is part of the run-time system, and therefore is called the [b]run-time stack[/b]." The real kicker is he doesn't explain WHY the use of a stack is important here.

If it were just a matter of those smaller problems I have with the book, I could give it a decent rating. But, his focus in imperative languages just kicks the legs out from under the book. The best I can give it is a Not Very Good two stars out of five. A much better book is Michael L. Scott's Programming Language Pragmatics, Second Edition.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


11 of 12 people found the following review helpful:
1.0 out of 5 stars Sebesta's Programming concepts book, November 3, 2007
Truly a terrible book. I have no doubt that Robert Sebesta is an intelligent man but a talented writer he is not. I had to read more than one of his books for my undergraduate courses and I can say from personal experience that to make Sebesta's books required reading is to do a disservice to students who want to learn programming languages. For one, Sebesta believes that to define something is to give one or two sentences in jargonese and be done with it. His books, especially this one, are extremely frustrating to read, because they don't give enough examples. For any one concept he'll gloss over it with a brief jargon-drowned blurb and expect the reader to know what he's talking about. His writing style is especially difficult, because he writes like a pugilist, mechanically pounding out short, dry declarative sentences over and over. His books are dense, airless, humorless and confusing. A horrible writer who write horrible books, avoid them if at all possible.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


19 of 23 people found the following review helpful:
4.0 out of 5 stars Best of the easiest, but being dated is showing through, May 4, 2006
By 
Gene B. Chase (Grantham, PA USA) - See all my reviews
(REAL NAME)   
This review is from: Concepts of Programming Languages (7th Edition) (Hardcover)
As a perennial instructor of the Programming Languages (PL) course, I have been using Sebesta for a long, long time, having used Pratt's texts before that. There are two categories of books for the PL course: easy and hard. The hard ones snow you with formalism and seem to be proud of the fact that they don't provide motivation. The easy ones are typically boring collections of miscellany with no clear coherence.

Sebesta's seventh edition is the best of the easier category. I think that it would be more helpful to put the history at the end so that samples of programming languages that illustrate the history aren't there for their "snow" value. The examples from history could then be annotated with information taught in earlier chapters. I am happy that context free grammars (CFG) are early in the book, but sad that Chomsky's Hierarchy is neglected, even poorly treated, with assumptions left unstated about CFGs. I generally spend several weeks on automata, since our discrete mathematics course does not get far enough to treat automata, using the excellent tool JFLAP to make the ideas concrete for my students. (Search the web for that tool.) Chomsky's hierarchy is essential to understanding PLs.

I am happy that semantics is early in the book, but sad that it too is so inadequately treated. I spend several weeks on that. Semantics would be an excellent coherence-producing theme of the book, but denotational semantics gets no use in later chapters. It could be used to great profit, for example, to ask what the value of a loop control variable is upon exit from a loop in various languages, where the answer for some languages is, "It's up to the compiler."

Speaking of compilers, most small colleges can't afford to have a separate course in compiler theory, so I supplement Sebesta's scant treatment of compiling.

Finally, the seventh edition is disappointingly dated. Someone should rewrite it from the ground up. One evidence of that is the lack of bibliography entries from the three years prior to its publication. I don't mean just PL research articles. I mean things like the availability of JFLAP, mentioned above. Another evidence of a dated text is the way in which older languages still hang around as examples, but newer languages get shortchanged. SNOBOL4 is said to support pattern matching, but Sebesta neglects to say that patterns are actually a data type distinct from strings in the language, a very modern and mind-stretching idea. Python and Perl examples could provide excellent modern opportunities to illustrate Sebesta's points. Java versus Javascript could illustrate benefits of strong typing or the fact that Javascript's arrays are implemented as hash tables or that Javascript's functions are first-class entities. Given the strong background of our students in Java, many chapters of the book are trivialized, since their content is already known to beginning Java programmers. For example, comparing the "?:" operator with the "if" statement in Java gives an example of functional versus procedural paradigms of programming.

My textbooks in other courses are hard enough that my classroom role is to explain them. Sebesta is so easy as a text that my classroom role is to explain what Sebesta leaves out.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


29 of 39 people found the following review helpful:
5.0 out of 5 stars Great for students, essential for professionals, January 13, 2004
By 
ART SEDIGHI (Old Bethpage, NY United States) - See all my reviews
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. There are many books written on compilers, but Sebesta in one chapter covers the main topics of syntax and semantics and in another covers lexical and syntax analysis. 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 the reader is interested, he or she can follow the course by taking a compiler design course or read the popular Compilers book by A. V. Aho for example.

The author proceeds to talk about naming, binding, type checking and scopes. Various constructs from different programming languages make up this section, with an emphasis on storage binding and variable lifetime. Various storage types (such as static, stack-dynamic variables and heap-dynamic variables) and their corresponding lifetimes along with their implementation in each language are also covered.

The author then goes into the "newer" topics such as Abstract Data Types (ADT's), Object Oriented Programming, Concurrency and Exception Handling. The author firsts discussed the concept of ADT's and conveys to the reader the benefits of abstraction and encapsulation thru examples programs in Ada, C++, Java and C#. The author in its closing remarks adds:

"The two primary features of abstract data types are the packaging of data objects with their associated operations and information hiding."

ADT sets up the stage for what the author talks about next: Object-Oriented Programming. As with the other chapters, the author starts off by touching on the design issues for Object-Oriented languages. The author then goes off and says:

"In this purest model of object-oriented computation, all types are classes. There is no distinction between predefined and user-defines classes"

The important topics of various object-oriented languages such as inheritance, multiple inheritance, type checking and polymorphism, allocation and deallocation of objects, dynamic and static binding are covered and their corresponding implementations are discussed in detail for each object-oriented language such as in C++.

Robert W. Sebesta has done an exceptional job depicting the topic of programming languages. The background, the history, the design issues behind each decision, the implementation of each language, the evaluation of features between the popular languages, the problem sets at the end of the chapter and last but not least, the interviews with pioneers in the computer science world, make Concepts of Programming Languages, sixth edition a great book.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


6 of 7 people found the following review helpful:
2.0 out of 5 stars OMFG, February 25, 2009
I'm currently a CS student and was assigned this book as apart of my Organizational Programming Language class. All I can say is WOW.

Key concepts and ideas are mentioned sometimes or not explained very well.

EX. Problem 5, Chapter 6, P. 307
"What disadvantages are there in implicit dereferencing of pointers but only in certain contexts? For example consider the implicit dereference of a pointer to a record in Ada when it is used to reference a record field."

EX. About Pointer Operations, P. 292:
"...,the pointer could also be interpreted as a reference to the value in the memory cell pointed to by the memory cell to which the pointer variable is bound."

This is how the book explains pointer dereferencing; thats it.

What the hell?! Also, some powerpoint slides are...wrong. like with:

-count++; // Book says count will be negated after being incremented.
// Also says it can be used in C based languages but this does not
// even compile in Java

i = count++;
vs.
i = ++count;

The slides also say that the execution of either of these statements will result in 'i' being the same value.

Don't use this book.

Please.

~Mowgef
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


6 of 7 people found the following review helpful:
3.0 out of 5 stars Not bad, but not great., January 24, 2000
By 
The book was decent. We used it for an intermediate CS class on programming language concepts, and it did the job ok. I thought there was too much emphasis on the history of CS, and not enough on the actual concepts. Thankfully, I had an awesome professor and the class turned out great. Some weak points: lots of people seemed to have trouble with attribute grammars, the book's explanation was not good enough. And there were a few remarks about Java which were completely erroneous.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


19 of 26 people found the following review helpful:
2.0 out of 5 stars Not an introductory text, December 14, 2002
I used this book for a introductory course to graduate students that had no programming experience. This book was not set up for introductory students. You really need to have expericence with programming languages, especially C and Pascal to make heads or tails of this book.
I didn't like the layout...spending the first part of the book telling you what it is going to talk about, and then spending the second part retelling you. In some cases, in exactly the same words....the organization needs some work and the index and glossary were not thorough enough to be of help. I ended up buying two other books on programming languages to help explain this one to me so I could finish the course.
The review questions did nothing to prepare you for the problem sets at the end of each chapter and the problem sets didn't really have examples in the text that you could refer back to. Like I said, it seemed that the book expected you to know more than introductory level.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


7 of 9 people found the following review helpful:
4.0 out of 5 stars It's readable!!, July 30, 2001
By A Customer
I'm a student who studying a computer education in korea. I'm not good at English... But this book was very easy and readable. Statement clearly written. So easy to understand!! It gives me to have a wide scope about the programming language. It was interesting. This book is somethig like a novel. But It is insufficient for current used popular language somethig like java, php...etc
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


‹ Previous | 1 2 3 4| Next ›
Most Helpful First | Newest First

This product

Concepts of Programming Languages (7th Edition)
Concepts of Programming Languages (7th Edition) by Robert W. Sebesta (Hardcover - April 22, 2005)
Used & New from: $1.00
Add to wishlist See buying options