Brooks (brooksmoses) wrote,

Just added to my quotesfile.

I recently came across a copy of the papers from the 1993 History of Programming Languages (HOPL-II) Conference, and was reading Alan Kay's paper on "The Early History of Smalltalk". He described the process of how, as he did with object-oriented programming, one often sees sketches of ideas many times before the idea really fully forms. I had a moment of something like that, reading this passage:
It started to hit home in the Spring of '74 after I taught Smalltalk to 20 PARC nonprogrammer adults. They were able to get through the initial material faster than the children, but just as it looked like overwhelming success was at hand, they started to crash on problems that didn't look to me to be much harder than the ones they had just been doing well on. One of them was a project thought up by one of the adults, which was to make a little database system that could act like a card file or rolodex. They couldn't even come close to programming it. I was very surprised because I "knew" that such a project was well below the mythical "two pages" for end-users we were working within. That night I wrote it out, and the next day I showed them all how to do it by themselves. Later, I sat in the room pondering the board from my talk. Finally, I counted the number of nonobvious ideas in this little program. They came to 17. And some of them were like the concept of the arch in building design: very hard to discover, if you don't already know them.

The connection to literacy was painfully clear. It isn't enough to just learn to read and write. There is also a
literature that renders ideas. Language is used to read and write about them, but at some point the organization of ideas starts to dominate mere language abilities. And it helps greatly to have some powerful ideas under one's belt to better acquire more powerful ideas.
And that's why reading a lot about other people's programming is important. I'm not sure entirely what the right way to draw the parallel is exactly, since programming and literature are structurally different. Part of the difference is that programming languages are themselves implemented as programs and embody programming design, and so the line between learning to read and write in many languages and reading "program literature" is blurry. There is also the difference that literature is fundamentally created to be read by humans; the acts of "using" the literature and of learning from it are tightly intertwined. Computer programs are considerably less so, and sitting down to read them is often difficult and unrewarding.

I don't yet know where to go with that. I think I'll sit down with my copy of Knuth's TeX: The Program and let it percolate a bit.

  • Post a new comment


    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.