Other Sellers on Amazon
+ $3.99 shipping
+ $4.01 shipping
+ $3.99 shipping
Concepts, Techniques, and Models of Computer Programming 1st edition by Peter Van Roy, Seif Haridi (2004) Hardcover Hardcover – January 1, 1709
Enhance your purchase
Inspire a love of reading with Amazon Book Box for Kids
Discover delightful children's books with Amazon Book Box, a subscription that delivers new books every 1, 2, or 3 months — new Amazon Book Box Prime customers receive 15% off your first box. Sign up now
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Frequently bought together
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
Before I read this book, I had already been blown away by Scheme, C++, ML, and Haskell. I had studied Java, C#, Ruby, Perl, and a smattering of Lisp, Prolog, Erlang, and historical languages. I thought I knew just about everything about programming languages, and just wanted to learn more about constraint programming. But I found that every chapter of this book, even the ones on paradigms I thought I knew well, was fascinating.
Much of the book is concerned with dataflow programming, which is a refreshing and clever addition to functional programming that works very well with concurrency. I learned a lot about different forms of concurrency, and the tradeoffs between analyzability and expressiveness. The exercises on transactions were illuminating, and relational (logic) programming suddenly makes a lot more sense.
My only regret is that the chapter on constraint programming is a bare introduction. After the thorough coverage of other topics, I was left wanting to know more.
I will also point out that some of the code is a bit terse, doing a little too much in too little space, with too-simple variable names, often single letters. I suspect this may have been done to fit code samples on the page. I'd like to see longer, more clearly explained versions posted on the web site. The authors were ambitions with the scope of the book, so it's hard to imagine cramming in even more careful explanations. The reader will be rewarded by exploring the exercises, and asking questions on the mailing list.
It's not a substitute for SICP or K&R or Code Complete or Pragmatic Programmer or TAPL, but it has things (a nuanced awareness of concurrent logic programming languages, for example) that those do not touch.
This books is an amazing study of various programming paradigms (or models, as the authors call them). It starts with the most minimal features required in a programming language, discusses their impact on how you write small programs and then moves on to bigger concepts.
Until you've read this book, you might not realise that multi-threaded object-oriented programming is such a powerful model that it can be used to easily write a lot of real-world applications but this power also makes it tough to master the model because of the many ways you can abuse it. The more powerful a model gets, the more difficult it becomes to verify its correctness without additional tools like debuggers, profilers, etc.
Most importantly, this book can teach you two important things:
* Multi-paradigm programming is more natural (i.e. easier to understand and model real-world concepts in) than 'pure' programming
* Use the least powerful model that can solve the problem at hand naturally (i.e. you don't end up writing a lot of code to work around the model's limitations)
A third thing that they don't enumerate but imply quite obviously is a program design methodology that involves writing large parts of the application using a less powerful and more deterministic model, while harnessing the power of more capable models only for those few components of the application that absolutely need them.
The popular "shared-nothing" architecture for web applications, backed by a concurrent shared-state store (RDBMS, mostly) is one example of such an approach.
The only shortcomings of this book that I found were the rather difficult installation of Mozart programming environment used to illustrate the book's concepts, and IMHO a shortage of sample problems that illustrated the usage of more advanced models.
Top reviews from other countries
We now have "Concepts, Techniques and Models of Computer Programming". This is an important book. The authors have attempted to distill the underlying relationships between computing's "big ideas" into a coherent whole and have largely succeeded. As a result, this is a book that needs to be widely adopted in CS Education, if only to show that Java and C++ are not the only way to program. This is especially important considering that there are ideas such as "dataflow", "logic variables" and the disciplined handling of state which the former languages lack.
Experienced programmers would also benefit from the ideas contained within this book. At first glance the Oz language appears to differ quite radically, but these are only surface quirks. The real differences are in the capabilities of the language, and these reward exploration.
These comments are primarily based upon the reading of a draft copy of the book that the author's made available on the Web prior to final publication. I now have the print edition which if anything strengthens my opinions.
Das Buch habe ich bisher nur angelesen. Es ist ein dickes, fettes Lehrbuch. Die Autoren bezeichnen die Programmiererei als "Science". Meines Erachtens ist es ein (Kunst-)Handwerk. Ich bezeichne mich selbst am Liebsten als "Bitschnitzer". Sie wollen mit diesem Buch die Grundlage für diese Science legen. Darüber kann man diskutieren, sie haben jedoch umfangreiche Informationen für einen 8!-Semestrigen Uni Kurs zusammen getragen. Es gibt auch die entsprechende Programmiersprache Oz die man sowohl als exe als auch den Compiler-Kode herunter laden kann. Soweit ich gesehen habe ist der Compiler in Scala geschrieben. Laut Wikipedia ist Oz-Kode extrem langsam und ineffizient.
Das Ganze macht einen sehr Akademischen Eindruck. Aber es ist auch vom Anspruch her "Science" und nicht "Craft" oder "Art of Programming".
So why not 5 stars? I deducted one start for the Oz language.Though the intent of using a single language to demonstrate all paradigms is good, Oz, as a language doesnt strike a chord. It feels as though it is not of any use learning this language other than to understand the material in this book. Instead using the popular languages in the context where the language's paradigm is most powerful might have been an option.
This book is a must read and sits alongside SICP on the top row of my bookshelf.