Before Smalltalk — Programming Before Objects

Smalltalk

Chapter 1 · Before Smalltalk — Programming Before Objects

Object-oriented programming has a real origin point — a specific place, a specific research group, and a specific philosophy that most programmers today inherited without ever meeting the source directly. Before tracing that origin, it's worth spending one chapter on what programming looked like before objects existed as an idea at all — because the gap is easy to underestimate once you've never known anything else.

Programming in the Early 1970s — No Objects, Just Procedures and Data

The dominant model of the era — FORTRAN, COBOL, early BASIC, and the direct ancestors of C — built programs from three ingredients: variables holding data, procedures that operated on that data, and control flow tying it all together. Data and the code that operated on it were strictly separate, unrelated things. A customer record was just a data structure sitting somewhere in memory; the code that validated it, printed it, or updated it lived entirely elsewhere, with no formal, enforced connection between the two at all.

This is genuinely difficult to appreciate today, because almost no working programmer has ever not known objects. What's actually missing without them: no bundling of data together with the operations that belong to it, no enforced boundary around how a piece of data is allowed to be touched, no natural way to even say "a Customer knows how to validate itself" — that idea has no home in this model at all. Data is data; behavior is separate code that happens to be pointed at it.

Simula 67 — The Direct Precursor

Developed in Norway by Ole-Johan Dahl and Kristen Nygaard, Simula was originally built for exactly what its name says — simulating real-world systems: queues, processes, resources being shared and contended for. Representing each entity in a simulation as a self-contained unit, carrying both its own data and its own behavior, turned out to be a genuinely natural fit for that specific domain.

Simula 67 introduced, for the first time in a real, working language, actual class-based objects, inheritance, and something recognizably close to virtual method dispatch. Said plainly, because it's often skipped over: Simula 67, not Smalltalk, was technically first to a working class-based object system.

So why is Smalltalk remembered as "the birthplace of OOP"?
Simula's objects were a feature added to serve simulation modeling — genuinely useful, but built for one specific purpose. What comes next is a completely different starting motivation, one that would turn objects from a modeling convenience into an entire, ground-up philosophy of how computing itself should work — and where the actual term "object-oriented programming" would be coined for the first time. That's Chapter 2.

The Context at Xerox PARC's Learning Research Group

Xerox PARC — the Palo Alto Research Center, founded in 1970 — became an extraordinary concentration of researchers imagining what personal computing could eventually become, years before "personal computer" was anything close to a mainstream idea. Within PARC, the Learning Research Group, led by Alan Kay, was tasked with something distinctly different from business data processing or scientific simulation: exploring computing as a tool for learning and creativity.

That's a genuinely different starting motivation from Simula's own simulation-modeling roots — and it's exactly why what came out of Kay's group would end up philosophically different from Simula, even while borrowing Simula's own class concept directly as raw material. Kay wasn't trying to model queues and processes. He was trying to build an entirely new kind of computing environment — previewed in full next chapter.

Worth sitting with before Chapter 2
Every object-oriented language covered elsewhere on this site — Java, C#, C++, Kotlin, Ruby — inherited its object model from a lineage that runs through what's about to be described. None of them invented objects independently; all of them are, in a very real sense, still working in Kay's shadow.

Reflection Questions

Question 1

This chapter describes pre-object programming as having "no formal, enforced connection" between a customer record and the code that validates it. Using a language you already know, describe concretely what problems that lack of connection could cause in a real program.

Question 2

Simula 67 technically introduced class-based objects before Smalltalk existed. Why do you think "object-oriented programming" as a named philosophy is still associated with Smalltalk rather than Simula? What does that suggest about the difference between inventing a feature and inventing a philosophy?

Question 3

Simula's objects grew out of a need to simulate real-world systems. The Learning Research Group's own motivation was learning and creativity, not simulation. Before reading Chapter 2, speculate: what kind of computing environment might that different motivation actually produce?

Chapter 1 Key Takeaways

  • Pre-object programming kept data and the behavior operating on it strictly, formally separate
  • Simula 67 (Dahl & Nygaard, Norway) technically introduced the first working class-based object system, built for simulation modeling
  • The term "object-oriented programming" was not coined by Simula's own creators
  • Xerox PARC's Learning Research Group, led by Alan Kay, was motivated by learning and creativity — a genuinely different starting point from simulation
  • Every OOP language on this site traces its object model back through this lineage