Values and objects in programming languages

Abstract : The terms value-oriented and object-oriented are used to describe both programming languages and programming styles. This paper will describe the differences between values and objects and to show that their proper discrimination can be a valuable aid to conquering program complexity. The first section will show that values amount to timeless abstractions for which the concepts of updating, sharing and instantiation have no meaning. The second section will show that objects exist in time and, hence, can be created, destroyed, copied, shared and updated. The third section shows that proper discrimination of these concepts in programming languages will clarify problems such as the role of state in functional programming. The paper concludes by demonstrating the use of the value/object distinction as a tool for program organization. (Author)