brooksmoses: (Default)
[personal profile] brooksmoses
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.

Date: 2010-04-04 02:47 am (UTC)
eagle: Me at the Adobe in Yachats, Oregon (Default)
From: [personal profile] eagle
This is exactly why I've set it as a goal this year to start learning how to program again, rather than resting on my skills like I have been for the past five years or so. I know enough already to do a variety of things, but the intellectual challenge and excitement of learning a new way to look at something or a new way to write something has been missing for a bit. Finding the time is always the hard part, but since I'm starting with learning Java, work is springing some time for me.

My first time inside Eclipse definitely supported that feeling. Not that I'm unhappy with my programming environment now, but it's fascinating to see how differently one can create an environment, and to stretch my mind around a different framework.
Page generated Mar. 23rd, 2026 06:42 am
Powered by Dreamwidth Studios