Cognitive Perspectives on the Role of Naming in Computer Programs

Programming a computer is a complex, cognitively rich process. This paper examines ways in which human cognition is reflected in the text of com- puter programs. We concentrate on naming: the assignment of identifying labels to programmatic constructs. Naming is arbitrary, yet programmers do not select names arbitrarily. Rather, programmers choose and use names in regular, system- atic ways that reflect deep cognitive and linguistic influences. This, in turn, allows names to carry semantic cues that aid in program understanding and support the larger software development process.

[1]  Françoise Détienne,et al.  Software Design — Cognitive Aspects , 2001, Practitioner Series.

[2]  Kate Ehrlich,et al.  An empirical investigation of the tacit plan knowledge in programming , 1984 .

[3]  Robert D. Macredie,et al.  The effects of comments and identifier names on program comprehensibility: an experimental investigation , 1996, J. Program. Lang..

[4]  Derek M. Jones The New C Standard An Economic and Cultural Commentary , 2004 .

[5]  Paul Dourish,et al.  Beyond AOP: toward naturalistic programming , 2003, SIGP.

[6]  Jakob Rehof,et al.  Estimating the Impact of Scalable Pointer Analysis on Optimization , 2001, SAS.

[7]  Vincent Maraia The Build Master: Microsoft's Software Configuration Management Best Practices , 2005 .

[8]  Chris R. Douce,et al.  Metaphors we program by , 2004, PPIG.

[9]  N. Anand Clarify function] , 1988, SIGP.

[10]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[11]  Mordechai Ben-Ari,et al.  Roles of variables as seen by CS educators , 2004, ITiCSE '04.

[12]  Alan F. Blackwell,et al.  Metaphor or Analogy: how should we see programming abstractions , 1996, PPIG.

[13]  Paolo Tonella,et al.  Nomen est omen: analyzing the language of function identifiers , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[14]  Bill Curtis,et al.  Modern Coding Practices and Programmer Performance , 1979, Computer.

[15]  E. B. Newman,et al.  Tests of a statistical explanation of the rank-frequency relation for words in written English. , 1958, American Journal of Psychology.

[16]  Katsuhiko Gondow,et al.  Toward mining "concept keywords" from identifiers in large software projects , 2005, MSR.

[17]  Simon Charles Roger Lewis,et al.  The Art and Science of SmallTalk , 1995 .

[18]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[19]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[20]  James D. Herbsleb Metaphorical representation in collaborative software engineering , 1999, WACC.

[21]  David Marca,et al.  Some Pascal style guidelines , 1981, SIGP.

[22]  G. Lakoff,et al.  Metaphors We Live by , 1982 .

[23]  Katherine A. Yelick,et al.  Titanium: A High-performance Java Dialect , 1998, Concurr. Pract. Exp..

[24]  Kari Laitinen,et al.  Estimating understandability of software documents , 1996, SOEN.

[25]  Breck Carter,et al.  On choosing identifiers , 1982, SIGP.

[26]  Katherine Yelick,et al.  Titanium: a high-performance Java dialect , 1998 .

[27]  Ted Kaehler,et al.  A Taste of Smalltalk , 1986 .

[28]  Thomas R. G. Green,et al.  Cognitive dimensions of notations , 1990 .

[29]  Jorma Sajaniemi,et al.  An empirical analysis of roles of variables in novice-level procedural programs , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[30]  E. P. Schan,et al.  Recommended C Style and Coding Standards , 1997 .