Erik Engheim
2 min readApr 30, 2021

--

Java-style OOP and Alan Kay style OOP has to be kept separate otherwise this discussion gets confusing. I think we are talking past each other.

I have tried to give an elaborate response here:

https://erik-engheim.medium.com/misconceptions-about-the-philosophy-behind-oop-e77050837729

But let me try to be briefer here:

1. While Alan Kay's ideas are not really implemented in Java, they clearly inspired Java and thus matter. Even James Gosling has admitted he was wrong about classes.

Thus the Java-eqsue understanding of OOP which is so focused on classes, is something its own creator even disagrees with in retrospect. Thus I don't think you should be so quick to dismiss Alan Kay and his ideas.

2. In the small I don't really write in the style people call OOP today. I write more functional. However my views on what Alan Kay thought of as Object-Oriented programming is quite different. I see that as a philosophy around how you build systems at scale. When I am implementing a graph algorithm or string class it may not matter. But for larger systems it is a powerful paradigm. But despite the claims of Java fans, this isn't something Java was really built for. Success does not mean it was. C has had immense success building huge systems, despite being rather poor at modularization.

3. You inverse my point about OOP. You take classic Java like ideas of OOP and apply that to the internet and then conclude that is a stupid. Eh... the problem is that Alan Kay's idea was the complete reverse. It was about taking the ideas underpinning the internet and applying those to programming at various levels.

If OOP to you is classes, virtual methods, singletons, setters and getters and you try to take such a pedestrian view and apply it to the internet then you will be left rather confused. The commonality here is about far more abstract ideas. The idea of separate entitites passing messages to each other.

4. This idea is not that you have write every little thing as a sever on the internet. We are not proposing modeling a String type as a separate process. That would be nuts. We are talking about higher levels and larger objects.

5. You don't see point of processes at language level? Well look at Erlang and Elexir, which does just that with great success.

--

--

Erik Engheim
Erik Engheim

Written by Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

Responses (1)