5 ms·
"Now that you've finished SICP, time to move onto CTM" Online Book
- kqr2 18y agoAmazon reviews for this book: http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695 http://www.amazon.com/Concepts-Techniques-Models-Computer-Pr...
- jlm382 18y agomy god I loved SICP -- finally, a computer science book that taught actual concepts. If Brian Havey (one of my profs at Berkeley) gave this a two thumbs up, I'm sure it's worth keeping as a reference.
- Hexstream 18y agoMy god, from looking at the table of contents this really looks like "SICP 2"!
- silentbicycle 18y agoIt's not in any way a sequel, but the material is very complementary to SICP. It's also very well written, imho. (There are, in fact, other deep computer science books that aren't related to SICP. :) )
- dave_au 18y agoDoes anyone know how different this version is from the final version that went to print? The site for the book talks up the difference but is hardly an impartial source.
- plinkplonk 18y agoOne of my friends has been working through CTM. He is blogging his progress at http://ctm-himanshu.blogspot.com/ http://ctm-himanshu.blogspot.com/
- critic 18y agoIMHO, you should move to RWH after SICP http://book.realworldhaskell.org/ http://book.realworldhaskell.org/
- comatose_kid 18y agoCould you tell us why?
- jules 18y agoRWH is great too, but the topics are very different. RWH is about using functional programming. CTM is about a lot of different paradigms. It starts with a simple core language, and a set of features, like dataflow variables, lazy evaluation, higher order functions, concurrency, ports (message passing queues), mutable state, backtracking. Then it explores what happens if you take a subset of these features. For example dataflow variables + concurrency is deterministic concurrency. Mutable state + higher order functions can support object oriented programming. Ports + concurrency is an Erlang like model. Lazy functional programming is just one of these models (higher order functions + laziness). CTM shows that other models can be beautiful and powerful too.
- sunbeam 18y agoI don't think that RWH is at the same level of SICP and the other masterpieces of programming language theory: CTM and TAoP (The Art of Prolog). RWH is just a good Haskell book teaching people how to do practical things with the language, but it doesn't have the intention of reaching the level of conceptualism and abstraction that the books I've mentioned achieve. In fact, I think that RWH is not a good book for learning Haskell unless you're a Java programmer. It's mainly written for that audience. In case you come from Lisp or even Ruby or Python I'd strongly recommend A Gentle Introduction to Haskell (http://www.haskell.org/tutorial/ http://www.haskell.org/tutorial/). It's been the officious Haskell tutorial since 1998. It's short, free and written by very relevant members of the Haskell community.
- silentbicycle 18y agoThere's a wiki for the book (http://codepoetics.com/wiki/index.php?title=Main_Page http://codepoetics.com/wiki/index.php?title=Main_Page). I really like CTM. I'm only about halfway through it (it's big!), but IMHO the writing is quite clear without being dry or shying away from harder material. Very well written. The main idea of the book is that no one programming paradigm is the best fit for all problems, so it's worth knowing several, their respective strengths and weaknesses, and the ways in which they can be combined. The examples are mostly written in Oz, a language of the authors' invention, but they're not dogmatic about it - it's just a multi-paradigm language well suited to showing different techniques in isolation. (I made a quick attempt to port Oz/Mozart to OpenBSD/amd64, but didn't get it working. I wrote examples in OCaml and Scheme instead.) Also, if you appreciate reading attempts to solve problems from multiple angles, Project Euler (http://projecteuler.net/ http://projecteuler.net/) is worth a look. You can read other peoples' solutions after solving each problem; I've learned a lot about algorithms that way. (The problems are predominantly mathematical.)
- jonke 18y agoMozart-Oz http://www.mozart-oz.org/ http://www.mozart-oz.org/ is by no means a toy language. It is used and have been used in some serious commercial applications (I've used it myself in some even if it was never talked about or said in a even a single word (big secret)). It's been awhile since I did any heavy lifting in mozart-oz but I keep it in my reference stack together with lisp, smalltalk.
- silentbicycle 18y agoI haven't written it off as a language. It looks very interesting, I just ran into trouble porting it to OpenBSD on amd64* and haven't gotten back to it. (I've done several ports for OpenBSD, and when/if I get it ported I will submit it.) I prefer to work in languages that are reasonably portable across Linux, BSD (inc. OS X), and Windows. Combined with my other priorities and general taste, this means Lua, various Scheme implementations, OCaml, and C. (Your taste and priorities probably differ, though. Peace.) * Which is an interesting portability test - Linux-isms are invalid, stuff that isn't 64-bit clean won't work, it's not quite i386, and OpenBSD's randomizing malloc tends to expose interesting bugs as well. (The only real loss has been Haskell, but I'm uneasy with how Haskell's de-facto standard seems to be "whatever the newest GHC does" when GHC has bootstrap/portability issues, e.g. http://hackage.haskell.org/trac/ghc/ticket/1346 http://hackage.haskell.org/trac/ghc/ticket/1346 .)
- ealar 18y agoI have to second this, of all the programming books I've read CTM comes closest to teaching me how to think in new ways as SICP once did. If you haven't read CTP yet, buy it now and make it your downtime reading.