What Do People Understand Naturally About Programming?
Linguists generally agree that humans are “wired” for language. Our brains have evolved to pick up language quickly and efficiently. We are wired specifically for natural language. Programming is the manipulation of an artificial language invented for a particular, relatively unnatural purpose—telling a nonhuman agent (a computer) exactly what to do. Maybe programming is not a natural activity for us, and only a few humans are able to do the complex mental gymnastics to succeed at this unnatural act.
How might we answer this question? We can try an approach similar to Lister’s modification to McCracken’s approach: choose a smaller part of the task and focus just on that. To program requires telling a machine what to do in an unnatural language. What if we asked study participants to tell another human being to accomplish some task, in natural language? How would participants define their “programs”? If we remove the artificial language, is programming now “natural” or “commonsense”?
L.A. Miller asked participants in his studies to create directions for someone else to perform [Miller 1981]. The participants were given descriptions of various files (such as employees, jobs, and salary information) and tasks like:
Make one list of employees who meet either of the following criteria:
(1) They have a job title of technician and they make 6 dollars/hr. or more.
(2) They are unmarried and make less than 6 dollars/hr.
List should be organized ...