Many thanks for the pointer to your thesis. I started reading it and find it extremely interesting. I am also familiar with Wiedenbeck et. al work on program comprehension.
However, it seems I was not very careful in phrasing my question. The structures I have in mind are not the plan-like structures corresponding to the programmer's structural model of a program. Rather, I am interested in programmer's perception of the organizational rules for programs in a particular programming language. (The former is the property of a program; the latter is the property of a programming language.) What I call "organizational rules" (bad terminology?) is something devised by the language designer. For instance: "Java packages are composed of classes", "class declarations consist of method and field declarations", etc. My intuition is that the rules put forth by the language designer might differ (at least in granularity) from the rules perceived by a programmer. (As many have already noted, programmers degree of expertise in language-based tools may greatly affect his perception of the language rules.)
To give a bit more context for my work: I am trying to design an intuitive (to the programmer) data model for representing Java programs as well as a (meta)programming language for manipulating this model. Because programs in this language are meant to be composed and understood by an "end-programmer" (as opposed to a tool-builder), I am turning to PP research for some insight and guidelines for building this tool.
Thanks to everyone who has already responded to my query and to those who might shed some more light on this issue!
Marat Boshernitsan. Ph.D. Candidate Computer Science Division, EECS University of California at Berkeley
Pablo Romero wrote:
Hi Marat, There are a number of studies in program comprehension, debugging and code generation that have looked at programmer's mental representations and in particular how these representations are organised. Please look at my DPhil thesis for pointers on this:
http://www.cogs.susx.ac.uk/users/juanr/index.html
Or you can look at a summarised version in:
Romero,P (2001). Focal structures and information types in Prolog. International Journal of Human Computer Studies. 54. p. 211-236.
Although this is for Prolog, there are a number of links to studies for other languages.
If you are looking for studies specifically on Java, Susan Wiedenbeck has looked at program comprehension for this language:
Wiedenbeck, S., & Ramalingam, V. (1999). Novice comprehension of small programs written in the procedural and object-oriented styles. International Journal of Human Computer Studies, 51, 71–87.
Wiedenbeck, S., Ramalingam, V., Sarasamma, S., & Corritore, C. L. (1999). A comparison of the comprehension of object-oriented and procedural programs by novice programmers. Interacting with Computers, 11, 255–282.
Regards,
Pablo.
On 13 Feb 2004, at 08:37, Marat Boshernisan wrote:
I am looking for insight on how programmers perceive organizational structure of computer programs.
For instance, do programmers recognize Java programs as consisting of packages, which are composed of classes, which, in turn, consist of method and field declarations? If so, what are the natural "atomic units" of such a hierarchization? Clearly, programmers do no go as far as viewing program tokens as consisting of individual characters, though I am sure there are situations in which humans perceive individual words as constructed from smaller units. (Note that I am interested in the *perceived* structure, as opposed to the structure defined by a formal programming language grammar.)
While there may be little (none?) prior work in this domain pertaining to programmers, I have a feeling that there should be some existing psychology research that can be applied in this context. Perhaps there's even a formalizm for describing hierarchival composition of categories? (Something akin to formal grammars?)
Understanding programmer's perception of program structure is central to my Ph.D. research and unless I can find existing studies, I will run user experiments to fill in this gap. However, at the very least, I am hoping to find a starting point for devising such a study.
Naturally, I tried looking on various search engines, but I am affrain I do not know appropriate terminology. So even pointers in that direction will be greately appreciated.
Thank you!
Marat Boshernitsan. Ph.D. Candidate Computer Science Division, EECS University of California at Berkeley
---------------------------------------------------------------------- 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/
Pablo Romero Human Centred Technology Group Informatics Department Sussex University BN1 9QH
---------------------------------------------------------------------- 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/
