search menu icon-carat-right cmu-wordmark

What a Software Engineer Needs to Know: I. Program Vocabulary

December 1989 Technical Report
Mary Shaw, Dario Giuse, Raj Reddy

In this 1989 report, the authors examine the programming language vocabulary of the programmer by gathering statistics on large bodies of code in three languages.

Publisher:

Software Engineering Institute

CMU/SEI Report Number

CMU/SEI-89-TR-030

Abstract

Software development, like any complex task, requires a wide variety of knowledge and skills. We examine one particular kind of knowledge, the programming language vocabulary of the programmer, by gathering statistics on large bodies of code in three languages. This data shows that most of the identifiers in programs are either uses of built-in or standard library definitions or highly idiomatic uses of local variables. We interpret this result in light of general results on expertise and language acquisition. We conclude that tools to support the vocabulary component of software development are wanting, and this part of an engineer's education is at best haphazard, and we recommend ways to improve the situation.