
Composing Programs – An introduction to programming in the tradition of SICP - jxub
http://www.composingprograms.com/
======
craigsmansion
I still don't understand why after so many years people are still trying to
write a "SICP, but with language X".

"The language doesn't really matter", as such it's imperative Scheme is used.

I strongly feel that if you've worked your way through SICP, and, once
finished, you think "Neat. I'll rewrite this but with language X," you've
really missed out on value of SICP.

It's challenging enough to follow for people who know a Lisp going in, but
using a language more mainstream and familiar to make it easier is largely
counter-productive.

~~~
3pt14159
Maybe I came to SICP too late in life, but I've always struggled to get the
hype. It seems so... Basic. Making a linked list is trivial in lisp. Lisp
itself is trivial. Why does everyone care about this book so much?

~~~
craigsmansion
> Lisp itself is trivial.

Anything about an actual programming language is trivial in the book. I think
by design.

In a way, the book isn't even really using the Scheme language. It uses a
seemingly makeshift language to help decompose a thought-process into uniform
and logical elements. Then, if you throw some syntax at it (using a bunch of
parenthesis), you can actually make a computer execute your thought process,
almost as a convenient coincidence (which is also why the actual language
doesn't matter. It's just that all other languages are more cluttered when
trying to capture the concepts of the thought-processes as presented).

One of the stated goals in the book is to blur the line between procedures and
data. I believe that if you do SICP well, it blurs the line between data,
procedures, and conceptual thought. If you can express a thought well enough
to give it a name, to "define" it, you can control it (or "them", depending on
whether you are depending on a procedure or spirits to do your bidding).

You don't walk away from SICP an expert Lisp programmer. You walk away from
SICP wondering if yin-yang is a fun joke by the authors, some weird
coincidence, or actually a governing principle of a Universe which itself is
written in Lisp.

You also walk away wondering why people insist on calling OO a "paradigm".

~~~
3pt14159
Thanks for your response. I can see how others can find value in the book now.
The answer is that I'd already come away with those concepts long before the
book, so the simplicity of the book belied its value.

------
bogomipz
tangential question - inn the left nav of this page there is a link for "CS
61A: Structure and Interpretation of Computer Programs" with videos, slides
and lectures. The URL is:

[https://cs61a.org/](https://cs61a.org/)

However the syllabus begins at week 7. Does anyone know where to find the
first 5 weeks of this class? Also does anyone know what school this affiliated
with?

~~~
labourcurious
It displays week 7 at the top right now because that's the point the students
taking the course at Berkeley have reached this semester.

The table below includes all weeks.

~~~
bogomipz
Thanks, now I feel silly :)

------
evacchi
A friend of mine is approaching programming (very beginner level) through
JavaScript. Is there any resource you would suggest in the same vein of this?

EDIT: since people are asking, I agree that JS is not the best language to get
started, but let's just say he needs to learn that.

~~~
anarchyrucks
Why is JavaScript an absolute requirement? I guess he can learn python as his
first programming language which I personally think will be easier to
setup/run in the machine instead of installing node.

~~~
reacweb
Yes. And for beginners,
[https://py3.codeskulptor.org/](https://py3.codeskulptor.org/) is fantastic.

~~~
bogomipz
And also Python Tutor:

[http://pythontutor.com/](http://pythontutor.com/)

~~~
QML
A great complement to that would also be to use Jupyter, whose notebooks are
similarly interactive and not dead like typing into a blank terminal or IDE.

------
kim0
Wishing for something similar in Golang!

