Learning how to program

You see a lecture hall from above. Computer code is projected above the blackboards that contain formulas. The professor stands behind his desk. Many students have computers. To the left one large student wears no shirt.

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.

I get the big blue book, and I start watching the screencasts. Parts of me get stimulated that I had forgotten I have. Like some kind of abstraction gland. It’s pretty nice.

You see a blue book cover. The title reads, in white: Structure and Interpretation of Computer Programs. Over a read background, in black and white, a woodcut of two people engaged in alchemistic practice. Below, the authors read as Harold Abelson and Gerald Jay Sussman, with Julie Sussman

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.

3 Comments

Maybe you’re not trying hard enough :)

Most Berkeley students found high school pretty easy, and for many of you, this course will be the first real intellectual challenge you’ve met. You may have come to believe that everything should be easy for you. On the contrary; if you find your courses easy, you’re taking the wrong courses!

I loved the preface to SICP. You don’t need to know math to understand it.

Underlying our approach to this subject is our conviction that ‘“computer science’ is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology -- the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of ‘“what is.’ Computation provides a framework for dealing precisely with notions of ‘“how to.’

Jenseits, You might want to get yourself a copy of Design By Numbers, written by John Maeda in 1999: "I created Design By Numbers during in a time when getting artists and designers to program the computer was just beginning to become in vogue. I spent most of the earlier half of the 1990's espousing the importance of getting beyond the tools, and into the medium of programming itself. Working on Design By Numbers was a kind of revelation for me. I realized how uninteresting it is to program." http://www.maedastudio.com/1999/dbn His book inspired the development of Processing. It is easy to see why: http://dbn.media.mit.edu/introduction.html

Leave a comment