Enjoy fast, FREE delivery, exclusive deals and award-winning movies & TV shows with Prime
Try Prime
and start saving today with Fast, FREE Delivery
Amazon Prime includes:
Fast, FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with Fast, FREE Delivery" below the Add to Cart button.
Amazon Prime members enjoy:- Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
- Unlimited Free Two-Day Delivery
- Instant streaming of thousands of movies and TV episodes with Prime Video
- A Kindle book to borrow for free each month - with no due dates
- Listen to over 2 million songs and hundreds of playlists
- Unlimited photo storage with anywhere access
Important: Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, your membership will automatically upgrade to a monthly membership.
Buy new:
$105.00$105.00
FREE delivery:
Wednesday, April 12
Ships from: Amazon.com Sold by: Amazon.com
Buy used: $25.65
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required. Learn more
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Concepts, Techniques, and Models of Computer Programming (The MIT Press) 1st Edition
| Price | New from | Used from |
Purchase options and add-ons
This innovative text presents computer programming as a unified discipline in a way that is both practical and scientifically sound. The book focuses on techniques of lasting value and explains them precisely in terms of a simple abstract machine. The book presents all major programming paradigms in a uniform framework that shows their deep relationships and how and where to use them together. After an introduction to programming concepts, the book presents both well-known and lesser-known computation models ("programming paradigms"). Each model has its own set of techniques and each is included on the basis of its usefulness in practice. The general models include declarative programming, declarative concurrency, message-passing concurrency, explicit state, object-oriented programming, shared-state concurrency, and relational programming. Specialized models include graphical user interface programming, distributed programming, and constraint programming. Each model is based on its kernel language—a simple core language that consists of a small number of programmer-significant elements. The kernel languages are introduced progressively, adding concepts one by one, thus showing the deep relationships between different models. The kernel languages are defined precisely in terms of a simple abstract machine. Because a wide variety of languages and programming paradigms can be modeled by a small set of closely related kernel languages, this approach allows programmer and student to grasp the underlying unity of programming. The book has many program fragments and exercises, all of which can be run on the Mozart Programming System, an Open Source software package that features an interactive incremental development environment.
- ISBN-100262220695
- ISBN-13978-0262220699
- Edition1st Edition
- PublisherThe MIT Press
- Publication dateFebruary 20, 2004
- LanguageEnglish
- Dimensions10.18 x 7.9 x 1.97 inches
- Print length936 pages
Frequently bought together

- +
- +
Customers who viewed this item also viewed
Editorial Reviews
Review
"This book follows in the fine tradition of Abelson/Sussman and Kamin's book on interpreters, but goes well beyond them, covering functional and Smalltalk-like languages as well as more advanced concepts in concurrent programming, distributed programming, and some of the finer points of C++ and Java."--Peter Norvig, Google Inc.
& quot; In almost 20 years since Abelson and Sussman revolutionized the teaching of computer science with their Structure and Interpretation of Computer Programs, this is the first book I've seen that focuses on big ideas and multiple paradigms, as SICP does, but chooses a very different core model (declarative programming). I wouldn't have made all the choices Van Roy and Haridi have made, but I learned a lot from reading this book, and I hope it gets a wide audience.& quot; --Brian Harvey, Lecturer, Computer Science Division, University of California, Berkeley
& quot; This book follows in the fine tradition of Abelson/Sussman and Kamin's book on interpreters, but goes well beyond them, covering functional and Smalltalk-like languages as well as more advanced concepts in concurrent programming, distributed programming, and some of the finer points of C++ and Java.& quot; --Peter Norvig, Google Inc.
" In almost 20 years since Abelson and Sussman revolutionized the teaching of computer science with their "Structure and Interpretation of Computer Programs," this is the first book I've seen that focuses on big ideas and multiple paradigms, as "SICP" does, but chooses a very different core model (declarative programming). I wouldn't have made all the choices Van Roy and Haridi have made, but I learned a lot from reading this book, and I hope it gets a wide audience." --Brian Harvey, Lecturer, Computer Science Division, University of California, Berkeley
" This book follows in the fine tradition of Abelson/Sussman and Kamin's book on interpreters, but goes well beyond them, covering functional and Smalltalk-like languages as well as more advanced concepts in concurrent programming, distributed programming, and some of the finer points of C++ and Java." --Peter Norvig, Google Inc.
--Brian Harvey, Lecturer, Computer Science Division, University of California, Berkeley
Review
In almost 20 years since Abelson and Sussman revolutionized the teaching of computer science with their Structure and Interpretation of Computer Programs, this is the first book I've seen that focuses on big ideas and multiple paradigms, as SICP does, but chooses a very different core model (declarative programming). I wouldn't have made all the choices Van Roy and Haridi have made, but I learned a lot from reading this book, and I hope it gets a wide audience.
―Brian Harvey, Lecturer, Computer Science Division, University of California, BerkeleyFrom the Inside Flap
"This book follows in the fine tradition of Abelson/Sussman and Kamin's book on interpreters, but goes well beyond them, covering functional and Smalltalk-like languages as well as more advanced concepts in concurrent programming, distributed programming, and some of the finer points of C++ and Java." --Peter Norvig, Google Inc.
About the Author
Seif Haridi is Professor of Computer Systems in the Department of Microelectronics and Information Technology at the Royal Institute of Technology, Sweden, and Chief Scientific Advisor of the Swedish Institute of Computer Science.
Product details
- Publisher : The MIT Press; 1st Edition (February 20, 2004)
- Language : English
- Hardcover : 936 pages
- ISBN-10 : 0262220695
- ISBN-13 : 978-0262220699
- Reading age : 18 years and up
- Grade level : 12 and up
- Item Weight : 4.4 pounds
- Dimensions : 10.18 x 7.9 x 1.97 inches
- Best Sellers Rank: #914,579 in Books (See Top 100 in Books)
- #341 in Mobile App Development & Programming
- #654 in Computer Programming Languages
- #1,110 in Microsoft Programming (Books)
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
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.
The notion that one language can be so flexible as to accomodate both the syntax and semantics of so many different computational models, or paradigms, took some unlearning of bad programming practice before its power, elegance and potential began to sink in.
It also explodes the myth that "pure" languages -- i.e., pure OO, or pure functional, etc., languages--have some kind of innate advantage over so-called "hybrid" languages. In fact, "hybrid" (or as the authors would prefer to call them, "multi-paradigm") languages come out of this book looking even more powerful than the "pure" ones, insofar as they allow the programmer to use the right model for each task, instead of trying to make OO fit, for instance, in places where it doesn't fit so well.
The idea here is that each computational model represents a completely different way of approaching a domain problem. Used by themselves, each has its niche. For instance, everybody knows OO is good for domain modelling and busines objects. Prolog-type languages are good for applications that need to apply rules over a set of data. Functional languages are great in mathematical applications. And so on. What is new here is that one can program in an environment in which all of these tools are available in a single core semantics that seamlessly weaves these computational models into a complementary whole. Used together judiciously, with an eye toward program correctness, they make things possible that have long been considered very hard -- for instance, constraint programming.
Mozart-Oz, the underlying technology, is a strange language when you first look at it. It's hard at first to get used to concepts like "higher-order programming" or "by need execution" or "lazy execution" if you are the programming grunt in the field of most modern IT shops, forced by bosses to code in your standard fare -- Java, C#, VB, etc. If OO in Java is like the hammer that makes everything look like a nail, in Mozart-Oz you have a language that is like walking into Ace hardware store, a swiss army knife of a language (conceptually speaking) that challenges you to become a highly skill code craftsman, not just a programmer.
But, if only for the personal growth you will experience grappling with the concepts in this book, I recommend it very highly even to "non academic" programmers (like myself) as well as to any advanced student of computer science. It may be painful, you may scratch your head in places where the concepts just seemed to leap over your cranium, but if you are patient, do the exercises (and at least think about what it would take to tackle some of the research projects), you will grow.
Unfortunately, you may find the languages you work on to be rather confining, and maybe even boring, after you get a whiff of what multi-paradigm programming can do. More likely, however, is that you will grasp very clearly how the language you code in today works, and that can only make you a better software engineer. So do it-buy this book!
Top reviews from other countries
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.









