I want to learn how to program. Why, that is for another post. But then where to begin. You can’t just learn programming, it seems, you have to pick one among many of programming languages to learn. And each programming language has a corresponding community. And these communities behave like football supporters for their own language. While they would be better pressed to support programming in general ’cause that’s a cause for which many new converts can still be made, and these converts don’t care for the particularities of your language—yet. Anyway, this turns me off.
So this sounds just right:
In CS 61A, we are interested in teaching you about programming, not about any particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, object-oriented programming, and query systems. To get past generalities you must have programming practice in some particular language, and in this course we use Scheme, a dialect of Lisp. This language is particularly well-suited to the organizing ideas we want to teach. Our hope, however, is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days’ work.
But it’s also way too difficult. The way in which Abelson & Sussman explain computation is by consistently comparing it to math. Math is probably a way of thinking in which Science majors are already comfortable. Yet I don’t do math on a regular basis. So it’s like teaching me a language I don’t know by comparing it to another language I don’t really speak either.
A different strategy is needed. I need to work with what I know: words, images. Peter Norvig says to use whatever your friends are using: “The advantage you get from learning from your friends will offset any intrinsic difference between OS, or between programming languages.” I’m gonna ask my friends to help me get started.
To be continued.