The Big OOPs: Anatomy of a Thirty-Five Year Mistake
My presentation from the inaugural Better Software Conference, with notes.
The video from my Better Software Conference presentation is now available! You can watch it in its entirety here:
I tried to keep the runtime under two hours while still painting as accurate a historical picture as I could1. As a result, I had to leave out many fascinating stories because they weren’t essential to the topic. Entire plotlines - like the development of Smalltalk and the inspirations specific to it, etc. - were not included.
To prepare the talk, I went through many hundreds (perhaps over a thousand?) pages of source material. I really enjoyed piecing together the bigger picture from all the pieces as I found them. Beyond what’s in the talk, there’s a lot of other things I’d love to share with everyone, but I’m not sure how to best do that. Perhaps I’ll do a live stream next week where we can go through some of the documents I didn’t feature in the talk? Is there any interest in that? Let me know in the comments!
For now, if the talk leaves you wanting to explore further, there are four collected “histories” that can get you started. I have linked to them below, with an explanation of what each contains.
The Early History of Smalltalk. This is Alan Kay’s retrospective on how Smalltalk was developed. Because C++ was the language that pushed the “class hierarchy” methodology into widespread industry use, I left out most of the interesting twists and turns on the Smalltalk side. If you’d like to read more about those, this paper is the place to start.
Please note that I have linked to a very specific version. One of the things you will find out if you do research like this is that historical papers are often scanned multiple times, leading to different versions floating around the internet. Many scans of this paper do not include the appendices, which have valuable information for the historical spelunker! The PDF I linked to has the appendices.
A History of C++. Like its Smalltalk counterpart, this is Bjarne Stroustrup’s retrospective on C++. Stroustrup published a book collecting this and other papers on C++’s development into a single, larger history called The Design and Evolution of C++. This paper is essentially the first chapter of the book.
When I quoted from this paper in the talk, I quoted from the book version since it is more recent and more comprehensive. But the two versions are largely the same. That said, if you’re really interested in C++ history, you will want to purchase a copy of the book and read it, since this paper is a small fraction of the total material contained in the book.
The Development of the Simula Languages. Thankfully, even though Simula was a very early language, Ole-Johan Dahl and Kristen Nygaard did write a history of its development while the memory was still fresh. This paper covers both the creation of Simula I and its second incarnation, Simula 67, where classes and virtual functions first appear.
Origins of the APT Language for Automatically Programmed Tools. At the same History of Programming Languages conference where Dahl and Nygaard published their Simula history, Douglass T. Ross published his history of APT. In this retrospective, Ross places the development of the “plex” around the fall of 1956, making it the earliest instance I could find of the (for lack of a better term) “programming with highly structured data” paradigm that is now literally ubiquitous in both OOP and non-OOP programming today.
Since the talk wasn’t about “finding the earliest true struct”, I only spent a small amount of time trying to find earlier cases than the plex. As I said in the talk, the concept that data could be stored as “records” certainly predated the plex. But the idea that you would create “data structures” in memory that were used to facilitate how the program worked, as opposed to just warehousing data, is much harder to find.
If anyone out there reads this and knows of an earlier example than the plex, please let me know! Although it wasn’t the focus of this talk, unearthing it during this research made me curious to know if it truly was the first, or if there is some other equally-hard-to-find case in the history somewhere.
The organizers gave me as much time as I wanted, but I personally felt like anything over two hours would be a bit much for a single presentation!
I would love a livestream where you dive deeper into this!
Yes, please do a stream!