This article reviews the extensive literature emerging from studies concerned with skill acquisition and the development of knowledge representation in programming. In particular, it focuses upon theories of program comprehension that suggest programming knowledge can be described in terms of stereotypical knowledge structures that can in some way capture programming expertise independently of the programming language used and in isolation from a programmer's specific training experience. An attempt is made to demonstrate why existing views are inappropriate. On the one hand, programs are represented in terms of a variety of formal notations ranging from the quasi-mathematical to the near textual. It is argued that different languages may lead to different forms of knowledge representation, perhaps emphasizing certain structures at the expense of others or facilitating particular strategies. On the other hand, programmers are typically taught problem-solving techniques that suggest a strict approach to problem decomposition. Hence, it seems likely that another factor that may mediate the development of knowledge representation, and that has not received significant attention elsewhere, is related to the training experience that programmers typically encounter. In this article, recent empirical studies that have addressed these issues are reviewed, and the implications of these studies for theories of skill acquisition and for knowledge representation are discussed.In conclusion, a more extensive account of knowledge representation in programming is presented that emphasizes training effects and the role played by specific language features in the development of knowledge representation within the programming domain.