I have been reading the book “Proust and the Squid: The Story and Science of the Reading Brain” (ISBN: 978-0-06-018639-5) by Maryanne Wolf and learning quite a bit about the cognitive processes behind reading. One concept that was explained in the book was how reading uses areas of the brain that are used for object recognition and voice recognition, especially for writing systems that make use of the alphabetic principle.

This led me to think about how I use the computer — I have noticed that whenever I try to talk about code or explain commands orally, I often have no fixed pronunciation for symbols such as char, ls, PNG, or execvp. This is because I don’t internally sound out these words. This “sounding out” while reading is called subvocalisation1. Subvocalisation has been theorised to have a role in lexical retrieval as well as semantics in reading — though the specific roles may differ based on the skill level of the reader (1). In addition, it may have a role in the mechanisms of working memory and encoding.

The fact that I rarely do this subvocalisation seems to imply that I am reading the symbols differently than I would read a book. This may be because I am not trying to decipher the meaning of the words in the same way. Natural language often has a complexity that comes from features such as ambiguous grammars and homographs which can change the meaning of a sentence as it is read23.

It would be interesting to do research into the different kinds of cognitive processes used in different parts of programming (e.g. writing code, reading documentation, debugging). What part does the type of notation play in how we read code? We could compare programming in a verbose language such as COBOL or a terse language such as APL. What about programmers that do not speak English as a first language? Most programming languages and APIs use English symbols, so how is this related to learning and memory? Do non-native English speakers translate the symbols to their own natural language first or do they view the symbols as purely abstractions?

There has already has been some work done on using subvocalisation (using electromygraphy) (2) and (eye-tracking) (3) to understand what programmers are doing while programming. There is also a group of researchers interested in the psychology of programming. This research could possibly useful for understanding how we work with other kinds of notations, such as mathematics and music.

  1. As far as I can tell from the literature, subvocalisation is a specific type of inner monologue (or inner speech) that occurs during reading and writing. Unfortunately, many papers only use one of these terms and it can be confusing as to what exactly they are referring to. ↩

  2. Physiologically, these ambiguities are usually smoothed over by saccadic eye movements (4). ↩

  3. See garden path sentences such as “Time flies like an arrow; fruit flies like a banana”. ↩


[1] Daneman, Meredyth and Newson, Margaret: Assessing the importance of subvocalization during normal silent reading. Reading and Writing. 1992.

[3] Bednarik, R., Myller, N., Sutinen, E., Tukiainen, M.: Program Visualisation: Comparing Eye-tracking Patterns with Comprehension Summaries and Performance. In proceedings of the 18th Annual Workshop of the Psychology of Programming Interest Group (PPIG'06), Brighton, UK, September 7-8, 2006, pp. 68-82.

[4] Rayner, Keith: Eye movements in reading and information processing: 20 years of research. Psychological Bulletin. 1998.