1. 20

    This is Dr. Alan Kay we’re talking about! He doesn’t have random opinions about “objects”, he invented the word back in the 60s .

    I hate this meme. Kay did not invent the term “object”. In Smalltalk-72 he directly cites Simula 67 as an inspiration!

    And he’s still bitter about choosing that word. It made people focus on the implementation rather than the behavior and it’s all been downhill from there.

    72, 76, and 80 all emphasize the importance of objects. Only a decade later did Kay decide that OOP was “really” about message-passing this whole time.

    Or as Dr. Kay put it “I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.”

    When John McCarthy invented functional programming, he did not have Haskell in mind. When Dijsktra invented the term structured programming, he did not have Ada in mind. Coiners of terms don’t get to hoard its meaning like a word dragon.

    Why? Well, part of his background was cell biology and when he did the math on their computational power, he realized that while software routinely has trouble scaling, cells can easily coordinate and scale by a factor of over a trillion, creating some of the most fantastically complex things in existence, capable of correcting their own errors.

    It took biology billions of years to get to where it is now. We’ve been doing a pretty good job with computers in just 70.

    Arguably a much, much bigger influence on Kay’s conception of OOP was his work on the Dynabook and FLEX. All of his decisions make sense if you consider the needs of a programmable OS: downloading a new program with new APIs shouldn’t require you to recompile the whole system.

    But that doesn’t really get to the core concept of messaging and frankly, this is the one area where I think Kay has been a touch vague, largely because many developers think that ideas are nice, but they want to see an implementation or proof of concept.

    Smalltalk 76 addressed this: messages correspond to methods. When an object receives a message, it should look up the corresponding method and execute that. If no method was found, it raises a error by default (that the sending object can choose to handle or pass along).

    So class-based OO has won, even with its limitations, arguments over inheritance versus composition

    Smalltalk-80 was class-based and had a strong inheritance scheme.

    Okay, so Alan Kay did contribute a lot to OOP. And Smalltalk was the first “true” OOP language. I say this because:

    • You could call a method on the number 2
    • You could pass a message to another message
    • You could pass a message to an exception
    • etc

    But he wasn’t the sole inventor of it. He was trying to solve a specific problem: how do we make easily-programmable personal computers? This lead to a lot of his decisions about how to make Smalltalk work. But that’s not the only important OOP context! Nygaard and Ole Dahl were solving a different problem: how do we make deep, robust simulations? That lead to different decisions on how they designed Simula. Barbara Liskov was trying to solve “how do we make correct concurrent code”, and that lead to decisions on CLU and Argus. Meyer was trying to solve “how do we go from specifications and analysis to actual code”, and that lead to decisions in Eiffel. They all made major contributions to what we see as OOP! Alan Kay was important, but he’s just one part of a larger historical narrative. We shouldn’t delude ourselves into thinking only he matters.

    1. 2

      First of all I agree with you on the historical context. However the article does make a valuable technical point aside from the historical analysis. The importance of isolation in designing a resiliant/robust/scalable system can’t be stated enough. The point that Encapsulation is related but not the same thing as Isolation is an important point that should get made more often.

      1. 2

        Yep, tired of this meme too. Every time there’s a discussion about OOP, someone must come and mention Kay, his definitions and how all current OO languages aren’t actually OO. No, really, no.

        1. 1

          I hate this meme. Kay did not invent the term “object”. In Smalltalk-72 he directly cites Simula 67 as an inspiration!

          Simula had the concept of classes, but their respective instances were called “simulations”. There is no such a thing as an object in Simula. If Kay did not invent the term, he also didn’t borrow it from Simula as well.

          1. 7

            The Simula 67 standard uses “object” everywhere, and in fact defines an object as a “dynamic instantiation of the class body”. In the Smalltalk-72 manual, Kay specifically calls Simula “a major inspiration for Smalltalk”.

            1. 1

              I didn’t know of that specific detail. I already knew about Simula and its influence over Smalltalk, but never bothered to read more than its Wikipedia article. Thanks for pointing it out. But, despite of my relative ignorance, I’m still not surprised. Mr. Alan Kay is well known for giving credit where credit is due, and very fond of the idea of “standing on the shoulders of giants.”

              Also, experience is a lamp pointing backwards. If any of his statements contradict whatever he said back in the 70s and the 80s, give it a charitable interpretation.

        1. 4

          Just 5 years ago it was completely viable to run NoScript and have only a couple exclusions (in the Russian-speaking part of the internet), alas no more.