Jason, > Bjorn> A good starting point is "Program Understanding - A Survey" > Bjorn> by von Mayerhauser and Vans: > > Bjorn> http://citeseer.nj.nec.com/vonmayrhauser94program.html > >I conjecture that experiments might find that program structure is >informed by the particular abstraction experiences of the individual >programmer. For example, those that have written or maintained
I agree. >compilers, interpreters, parsers, smart editors, or other programming >tools that process programs probably have a model that is closer to >the lexical and grammatical structure. More generally it might be This view probably reflects your own abstraction of what compiler writers do :-) In practice these are minor issues that are often automated. As a compiler/interpreter writer I find that my view of source does depend on what I am working on. For instance, I might pay particular attention to sequences of statements, or complicated expressions, because lots of effort has gone into optimizing such constructs and I will look for patterns that I expect to be commonly contained in such code. If I am working on flow analysis I will look at the data or control flow. If somebody shows me some of their source I will often try and figure out what other languages they have used, based on how they have used various constructs. >found that the typical metaphors and structures of their own >programming work are projected onto any tools and languages they might >use. For example, everything might smell like a database to someone >whose sole deeper technical exposure is to databases. Of course, this >is just a specific case of projecting mechanisms onto black boxes. Of course the problem with novices is that they don't know any structures and usually have some very surprising beliefs about how programming works. I think researching novice analysis of program structure is a waste of time because they rarely have enough experience (even after 3 years) to have acquired any expertise on the subject. To me undergraduate, and even graduate, code feels like it has been thrown together, made to work (at least to satisfy the homework assignment) and "I can recite the mantra I learnt in class while waving my hands over the source". However, I think researching novice belief systems about programming would be very interesting (and perhaps even useful). To many students programming has the aura of magic and I think the psychology of folk mythology would be very applicable. The classic example is students who think that incrementing a variable used to hold input data will cause the next item of input to be read. A corpus of such beliefs would provide useful input to the question of how best to teach programming (some teaching might be based on using existing beliefs, or it might be based on changing them). derek -- Derek M Jones tel: +44 (0) 1252 520 667 Knowledge Software Ltd mailto:[EMAIL PROTECTED] Applications Standards Conformance Testing http://www.knosof.co.uk ---------------------------------------------------------------------- PPIG Discuss List ([EMAIL PROTECTED]) Discuss admin: http://limitlessmail.net/mailman/listinfo/discuss Announce admin: http://limitlessmail.net/mailman/listinfo/announce PPIG Discuss archive: http://www.mail-archive.com/discuss%40ppig.org/
