What are the pros and cons of CTM as compared to SICP? The latter is very "tight"(like most math texts) for lack of a better word. I find programming (even academical ones) books a bit tiring to read because they don't proceed like typical math texts: very concise explanation -> lemma -> theorem -> proof -> corollary -> very concise elaboration. I get lost if a textbook is not written in that "tight" format. Is CTM close in spirit to SICP? Thanks.
SICP explores real, interesting programs: a digital circuit simulator, an automatic differentiator, etc., in a sense it explores mathematics and electrical engineering in parallel to computer science and shows a certain unity between all three disciplines, at the cost of requiring more background to understand everything.
CTM explores a lot more programming language concepts than SICP, but the examples and exercises seem to be focused on illustrating those individual concepts in the simplest way possible. I think CTM is ultimately a more down-to-the earth book - you are likely to have more immediate direct use for the things you learn compared to SICP, but it doesn't give you this very high level perspective that SICP does.
I don't think I fully agree with this. CTM is intended for at least sophomore CS students. SICP was intended for a more general engineering audience. That explains some of the links with EE SICP tries to show, whereas CTM concentrates on programming paradigms---some quite exotic.
You can check out a preprint version free online. (Google suggests http://www.epsa.org/forms/uploadFiles/3B6300000000.filename.... though I can't trivially tell if that's the author's official free version, since the official book site has some https problem Firefox is complaining to me about.)
I can't seem to find the search button. Also, can someone define what "side effects" are, please. I am studying Scheme now and I don't understand the relevance of "side effects" to Scheme or anything else.
> Also, can someone define what "side effects" are, please. I am studying Scheme now and I don't understand the relevance of "side effects" to Scheme or anything else.
Something done by code that isn't represented by the return value of that code. For instance, if you define a function that changes a global variable and then returns double its argument, the change to the global variable is a "side effect". See also "pure functional" (code which doesn't have side effects).
That's not the kind of definition this dictionary is going for, though; that's tech jargon, not startup jargon.
Thanks. It looks very interesting.