Whatever happened to Object-Oriented Programming?

As a computer scientist with more than 35 years of Smalltalk, I think I have some inside into the problem. One day my boss came into my office holding a copy of Business Week whose cover featured Object-Oriented programming. He said it sounds like a good idea. I replied, “it is! That is why we switched to Smalltalk 2 years ago.”

In response to the Business Week article, many companies tried what they thought was O-O. But Smalltalk costs $3500/seat and C++ costs $350/seat. They went with C++, and their coders continued to code in C, feeding it into a C++ compiler. They never learned O-O programming so their companies never saw any O-O improvement.

Chubb and Son Insurance did it right. They bought Smalltalk (VisualAge from IBM) and hired a mentor for each team to help them learn O-O programming.

Spint ION program initially started in Smalltalk but switched to C++. I asked a manager why, and was told that was because they could not find any Smalltalk programmers. I told her she was looking at one with 14 years of experience in 5 different dialogs.

I believe that they best way to create an application is to use the highest level development language (The 1980 Smalltalk IDE still outdoes modern IDS - by a parsec). Once you get a working program, then you cant deplay it in a different language such at C, Python (a dialect of C), APL, etc… The deployment process also helps find design flaws in the original design.

The essence of Object-Oriented programming is abstraction. Some people have perfect pitch, some have photographic memories, some have the ability to make abstractions. Sadly, most coders do not have the ability to abstract. When I hear a phrase like “Abstract Abstraction” or “Concrete Abstraction” I know that the speaker does not know what he is talking about.

I believe the lack of coders who can make abstractions is why O-O failed.

Functional Programming is itself an abstraction. As is all of Mathematics.
Most coders will struggle with it, trying to change it into Basic or JavaScript.
They need to change their basic paradigms (those filters between what we see and what we preceve).

What do you mean by “O-O” failed? Doesn’t it have been fairing well? I think smalltalk has bigger communities and industrial applications compared to Smalltalk as of now.

As you’ve put the “learn” tag on this post, I believe you’re asking a question in order to learn something new, but I’m having a hard time figuring out what that question is. The only question I see is in the title: “Whatever happened to Object-Oriented Programming?”, which initially seems an odd question to ask on a Haskell forum, as Haskell doesn’t claim to support OOP - in fact, many see functional programming to be directly at odds with OOP. Could you try to clarify what you hope to get out of the discussion? Are you trying to learn what the similarities and differences are between OOP and FP? Or trying to solicit feedback on why Haskellers prefer FP to OOP “done right” (as in Smalltalk and not C++)? Something else?

5 Likes

The smalltalk IDE was very good by all accounts (alas, I have not used it or a lisp machine), but there are some things Alan Kay et. al. just got wrong and C++ and whatnot watering it down cannot be blamed.

I suppose Swift and Typescript are us watered down, but I’m not so concerned about people being mislead by them like C++ and Java did. I guess there’s just more internet these days to spread obscure things?

These days I’m less world about people writing bad code than doing crazy microservices and other things. I actually think the language situation in industry as a whole has gotten tremendously better, but that victory has been marred by a lack of good “macro” thinking about how technology accretes and mianders through the design space.

In the old days there was little code reuse, and industry just rewrote the same primitive stuff over and over and over again. Wasteful, but at least mistakes didn’t linger so much. (Though there are big exceptions to this, like the OSes which have been piling up for ages.)

Now, there is much more reuse, but the division of labor is terrible and so we are all sullying ourselves atop those ever growing garbage heap.

Good languages are still very important, but dealing with this is now the major challenge. Good languages I believe are still an indispensable tool for this, but it’s a distinctly different challenge from “we just need the most express power” or “let’s show them FP doesn’t need to be slow” which were dominant concerns for much of the history.

Mr Pearson, Discourse is telling me this is your first post here. So welcome. But then …

Being a “computer scientist” or a “mathematician” (as you say on your other question) doesn’t necessarily mean you understand more about programming than an actual … professional programmer.

That some manager was reluctant to employ you as a Smalltalk programmer might be telling you something.

Seems your 35 years haven’t taught you to be polite and respectful. Don’t wade into a forum with a first post saying stuff like that. There’s many modes of ‘abstraction’ – at least as many as there are programming languages. Since you’re being so arrogant, I’ll point out there’s at least two typos in your post, that make it rather hard to guess what you might be saying.

There’s many models of OOP. Smalltalk, although it’s credited as the first OOPL represents (I would say) a rather opinionated variety of OOP. “What happened” is that OOP broadened to other variants such as C++, Java, Scala, and some styles of OOP got adopted into ‘multi-model’ languages.

So OOP and its ideas are going strong. Smalltalk these days is in rather a backwater.

Plus what @ntwilson said.

2 Likes

There’s an @rpearsonii for whom asking exactly this question in inappropriate forums seems to be a thing.

4 Likes

@robert-pearson:

From where I sit, object orientation is alive and well. Last week I wrote a simulation of traffic in a network, multi-threaded, with a Windows interface. It took three days to code, plus one day for the manual. Visual Studio is just so nice for that sort of program.

@ntwilson

“…in fact, many see functional programming to be directly at odds with OOP”

I am not one of those people - I consider functional programming to be orthogonal to object orientation, rather than opposed to it. Many languages - amongst them various dialects of Lisp, Python, C++, C#, F# - support both styles of programming, to varying degrees, and you can freely mix them together in the same source code.

Thanks for the sleuthing.

1 Like

I agree to this sentiment but common thinking is that FP is opposed to OOP. Plus, many OOP folks goes on to how FP is unpractical even with multithreading.