Object Orientation

Object orientation is a way of structuring software around “objects”: units that combine data with the operations that work on that data, rather than keeping data and procedures separate. Programs are built by sending messages between these objects and by defining new kinds of objects in terms of existing ones.

In his firsthand paper “The Early History of Smalltalk,” presented at the second ACM History of Programming Languages conference in 1993, Alan Kay traces a key influence to the Simula language. While working on an Algol compiler at the University of Utah, Kay discovered that Simula allocated structures “very much like the instances of Sketchpad” and was “a procedural language for controlling Sketchpad-like objects.” Simula was created in Norway by Ole-Johan Dahl and Kristen Nygaard.

Kay describes recognizing the same underlying idea across several systems he had studied, including a file system, the Burroughs B5000 computer, Ivan Sutherland’s Sketchpad, and finally Simula. This convergence, he writes, crystallized his vision of computing with thousands of interacting objects instead of traditional data structures and procedures. That vision drove the design of Smalltalk.

These two lineages, Simula’s classes and Smalltalk’s message-passing objects, shaped nearly every later object-oriented language. Bjarne Stroustrup drew directly on Simula when he added classes to C to create C++, and the same ideas appear in languages used across the software industry today.

Sources

Last verified June 7, 2026