[plt-scheme] Computers considered harmful

From: John Clements (clements at brinckerhoff.org)
Date: Wed May 6 15:23:41 EDT 2009

Let me know if you've heard this one before.  Seriously, I'd like to  
know if other people have expressed these thoughts more cogently than  
I have (not counting SK/MF reading-riting-rithmetic-rogramming, which  
(I claim) has partial but not complete overlap).

Ignore if you like, thanks in advance,

John Clements




Computers considered harmful (in first-year courses)

The argument here is surprisingly similar to Dijkstra's. In  
particular, the
problem with GOTO is that it confounds the use of the models  
(mathematics) that
we already understand.

Likewise, the problem with computers is that they confound the use of  
the
models (mathematics, computation) that we already have.

The clearest illustration I have of this problem is this: imagine we  
start with
robotic environments. A robot (real or virtual) has a number of state
variables.  In most such environments, students attach behaviors to  
these
robots. There is often a hidden event-handler or loop that makes it  
possible to
specify these behaviors in a fairly functional way: that is, there  
*is* state
in these models, but it corresponds to physically observable  
properties of the
robot.

Now, let's take this knowledge / understanding and extend it to an  
imperative
language. The natural conclusion is that the computer is equivalent to  
the
robot; it has a WHOLE LOT of state variables--essentially, the  
computer's
memory--and our job is to attach behaviors that manipulate this state.

The problem here is that the task of programming becomes one of "how  
do I use
these tools to get this job done", rather than "how can I express the  
solution
to this problem?"  For this reason, I would argue that computers  
themselves are
currently far too central in the study of computer science.

Okay, we knew all this already.  So what's the new part?  In my mind  
(and this
understanding may be new only to me) I think it has to do with the  
nature of
the student's interaction with the computer: is it a tool with a bunch  
of knobs
(external) to be manipulated to find the solution, or is it a means of
translating our programs--concieved independently!--into meanings?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2484 bytes
Desc: not available
URL: <http://lists.racket-lang.org/users/archive/attachments/20090506/cb6aca18/attachment.p7s>

Posted on the users mailing list.