Follow this blog

Software engineering, design, and psychology

The Very Roots of Object-Oriented Programming

An image below is the first historical mention of something resembling objects we use today in OOP.

An ancestor of all modern objects — plex. Rectangles represent data in memory. Yellow ones are pointers to other objects, green rectangles hold actual values, red rectangles are pointers to functions, and blue rectangles are flags that control program execution flow.

The author is Douglas T. Ross from MIT, who published this concept in a paper A Generalized Technique for Symbol Manipulation and Numerical Calculation in 1960! He called it a plex, a shorter form of plexus, meaning “an interwoven combination of parts in a structure; a network”.

This solution was intended to solve problems for which commonly used linked list or tree structures were not sufficient enough. Each plex could hold both data and an arbitrary number of pointers, allowing it to represent complex object relationships — essentially, a network of interconnected elements. Pointers do not only point to other plexi, they could also point to functions. And, as these are not actual functions but pointers (which can potentially be changed during runtime), this means an invention of virtual functions as well. A truly fascinating stuff!

I’ve learned this bit from a great talk of Casey Muratori at the Better Software conference in which he digs into the history of OOP in C++. I highly recommend watching it in full.

Follow this blog
Send
Share
Pin