Object-Oriented Programming

Spring 2022

Introduction

In previous readings we saw that leading computer scientists were already expressing concerns about the complexity of software projects by the end of the 1950s, and we've read a couple of papers about possible ways forward (e.g. getting more rigorous and mathematical about correctness, using programming models that "scale" better). So far, in our historical explorations, none of the pie-in-the-sky approaches has had much of an impact. In the 1970s, more pragmatic approaches were embraced that focused on more disciplined programming practices, and on decomposing large systems into more manageable software "modules". As Dijkstra observed in 1979, "The technique of mastering complexity has been known since ancient times: divide et impera (divide and rule)".

Object-oriented programming languages grew out of these efforts to better organize large software projects in the post-software-crisis era. Simula, an ALGOL offshoot designed in Norway in the 60s to ease implementation of software simulations, was one of the first to use objects, though the concept of objects predates Simula. Simula inspired the Smalltalk language, developed by a team at Xerox Palo Alto Research Center led by Alan Kay in the early 1970s, but not widely known until the Smalltalk-80 release in 1980. Bertrand Meyer's language/system Eiffel, first released in 1985, was explicitly designed to support the construction of large software systems. These languages, in turn, influenced C++ and Java in the 1990s.

In the paper below, Grady Booch explains object-oriented program development and compares it to existing approaches. The author went on to become an influential advocate for all things Object, and developed an early UML-like technique for describing object interactions. Here you'll see him trying to explain OO to a predominantly non-OO world. It's interesting from our "modern" perspective to see how he explains the approach and its strengths. As he compares it to alternative approaches, you'll also get a better sense of what those non-OO approaches were like.

Questions

Here are some questions you might try to answer as you read:

Papers