
Concepts, techniques, and models of computer programming
by Peter Van Roy, Seif Haridi · first published 2004
133mentions
70recommended by
93HN commenters
2007–2026first – last mentioned
75% recommend25% neutral
Why HN recommends it
Builds different programming paradigms (functional, logic, object-oriented, dataflow, concurrent) from a small core model, mostly using Oz. Suits programmers who want to understand ideas over languages and frameworks.
Summarised by Claude from recommending comments
Affiliate links. As an Amazon Associate I earn from qualifying purchases.






…finite domain constraint programming, constraint logic programming, logic programming, relational programming Static functional programming - ml, haskell A good modern introduction to programming is Concepts, Techniques, and Models of Computer Programming, by Peter Van Roy and Saif Haridi. It's far superior to the commonly mentioned lisp book Structure and Interpretation of Computer Programs.
on “On Lisp” ↗One fantastic multi-paradigm-from-the-start language that often gets missed out is Mozart/Oz - http://mozart2.org . This language is used in the awesome book "Concepts, Techniques, and Models of Computer Programming" by Peter van Roy and Seif Haridi - https://www.info.ucl.ac.be/~pvr/book.html
on “Multi-Paradigm Languages” ↗…be there, too. Any "top X books for field Y" list is going to be a bit arbitrary, probably telling you as much about the people who wrote the list as the field itself. That said, I'd also suggest: * Concepts, Techniques, and Models of Computer Programming by Peter Van-Roy and Seif Haridi ("CTM"), which covers several different programming approaches. Not about different languages, but their underlying models, and ways in which they can be combined. *…
on “Books that will Substitute for a Computer Science Degree” ↗…masses" was being developed. If you want a detailed systematic account of programming paradigms, (without detailed study of what applications they are good and bad for I'm afraid) I would highly recommend Concepts, Techniques, and Models of Computer Programming by Roy and Haridi (this book leans towards dataflow oriented paradigms, explaining a few other paradigms using the idea).
on “The paradigms of programming” ↗…come in handy. What other math books should I be reading? You should make time for Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/). Other good theory books: Concepts, Techniques, and Models of Computer Programming by Peter van Roy, and Types and Programming Languages by Benjamin Pierce. As for math - it's good to know some set theory and mathematical logic, but I wasn't a math major so I don't have good recs in…
on “Ask HN: How should I go about learning CS?” ↗Another book taking this kind of horizontal approach explains different programming paradigms rather than concrete languages: "Concepts, Techniques, and Models of Computer Programming" by Peter Van Roy and Seif Haridi (http://www.info.ucl.ac.be/~pvr/book.html). It is IMHO a deeply illuminating book.
on “Seven Languages: A Pragmatic Guide to Learning Programming Languages” ↗If I had to recommend just one book overall, it'd be Peter Van Roy and Seif Haridi's _Concepts, Techniques, and Models of Computer Programming_ (http://www.info.ucl.ac.be/~pvr/book.html). It's an extremely lucid overview of the different underlying models on which most programming languages are built, and how they interact when combined. It…
on “Ask HN: going back to school, what books before CS?” ↗Oz is an interesting language. I only learned it because I was reading Peter Van Roys excellent Concepts, Techniques and Models of Computer Programming, but I'm glad I did. Having said that, I've never actually used it for anything substantial.
on “What Does Haskell Have to Do with C++?” ↗The modularity advantage of shared state's "spooky action at a distance" when properly employed is not a fresh insight. It's even addressed in good textbooks on programming such as van Roy and Haridi's Concepts, Techniques and Models of Computer Programming. Here's an old related LtU post by van Roy: http://lambda-the-ultimate.org/classic/message9361.html. Another dramatic example (which is one of the book's exercises) is revocable capabilities.
on “Functional Programming Doesn't Work (and what to do about it)” ↗I admire the combination of theoretical audacity and sweeping pragmatism taken by the authors of that paper. They mention Oz a few times. I am big fan of "Concepts, Techniques, and Models of Computer Programming" by Van Roy and Haridi, which shows the reader how different computing paradigms can be constructed from a kernel language in Oz. That makes the text something of a kindred spirit to the paper, insofar…
on “Data first, not code first” ↗A few recommendations on this, since at where I work a talk is organized on this very topic today. 1. A great book that covers multiple paradigms of programming is Roy and Haridi's "Concepts, Techniques and Models of Computer Programming" https://mitpress.mit.edu/books/concepts-techniques-and-model... . This stands hand in hand with the better known SICP. 2. Folks in the CS and programming world seem to ignore bleeding edge work being…
on “Being confidently programming language agnostic” ↗As a first-class language feature this goes back at least to 1985 and Linda https://en.wikipedia.org/wiki/Linda_(coordination_language) and tuplespaces. (You'd know about Linda already if you'd read Concepts, Techniques, and Models of Computer Programming. Don't delay, read CTM today: https://www.info.ucl.ac.be/~pvr/paradigms.html ) And here's a Martin Fowler talk about the practise of implementing it informally as a pattern or framework: https://www.youtube.com/watch?v=STKCRSUsyP0
on “Message-Oriented Programming (2017)” ↗'Concepts, Techniques and Models of Computer Programming' by Peter Van Roy and Hadidi may be a better book than this and even SCP, since it presents a well organized "science" of computer programming..
on “How to Design Programs (2014)” ↗You might find the following two books helpful; 1. Programming Language Pragmatics by Michael Scott. 2. Concepts, Techniques and Models of Computer Programming by Peter Van Roy, Seif Haridi.
on “Ask HN: How to study programming language theory as a non CS student?” ↗The author doesn't mention it but Concepts, Techniques and Models of Computer Programming by Haridi & Van Roy teaches concurrent logic programming (as part of a tour through a wide variety of programming models, including logic programming, stateful concurrency, and constraint programming).…
on “The joy of concurrent logic programming” ↗