[BangPypers] how to learn programming

Sridhar Ratnakumar sridhar.ratna at gmail.com
Sat Jan 24 22:26:24 CET 2009

On Sat, Jan 24, 2009 at 7:46 AM, Roshan Mathews <rmathews at gmail.com> wrote:
> The 'knowing the rules' vs. 'being proficient' argument is
> also made in SICP
> <http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2>
> ... another good read, (Indian version of the dead trees version
> available from University Press.)

Are you referring to this argument?

Like the novice chess player, we don't yet know the common patterns of
usage in the [programming] domain. We lack the knowledge of which
moves are worth making (which procedures are worth defining). We lack
the experience to predict the consequences of making a move (executing
a procedure).

The ability to visualize the consequences of the actions under
consideration is crucial to becoming an expert programmer, just as it
is in any synthetic, creative activity. In becoming an expert
photographer, for example, one must learn how to look at a scene and
know how dark each region will appear on a print for each possible
choice of exposure and development conditions. Only then can one
reason backward, planning framing, lighting, exposure, and development
to obtain the desired effects. So it is with programming, where we are
planning the course of action to be taken by a process and where we
control the process by means of a program. To become experts, we must
learn to visualize the processes generated by various types of
procedures. Only after we have developed such a skill can we learn to
reliably construct programs that exhibit the desired behavior.

Speaking of SICP,
http://eli.thegreenplace.net/2008/04/18/sicp-conclusion/ (must have
been quite a feeling of achievement!)

More information about the BangPypers mailing list