Drop the course, but first you might say:
Smalltalk has no classes but may be the most object-oriented language
of all time. Alan Kay (designer of original Smalltalk, coiner of the
term "object-oriented") would support that position, although it's
hard to find a citation that expresses his definition precisely.
Call Gorgio, the pizzaiolo gopher! :)
--
We found that people wanted different types of pizzas, so a single
pizza factory was not sufficient. So we came up with the pizza factory
factory.
2014-09-16 15:48 GMT-07:00 Skip Tavakkolian <skip.tav...@gmail.com>:
> PizzaFactory?
>
>
> On Tue, Sep 16, 2014 at 2:25 PM, Aram Hăvărneanu <ara...@mgk.ro> wrote:
>>
>> > This community is truly spectacular; I vented, made a pizza, came back
>> > and
>> > had 3 meaningful, to-the-point replies.
>> >
>> > Makes me proud to be a gopher.
>>
>> Where can I get some pizza?
>>
>> --
>> Aram Hăvărneanu
I'd argue that OOP is paradigm so abstract that any debate about it would be restrictly opinionated. But I'd argue the fundamentals would be messaging/methods and encapsulation.
On Wed, Sep 17, 2014 at 2:28 AM, akwillis <akwi...@gmail.com> wrote:I'd argue that OOP is paradigm so abstract that any debate about it would be restrictly opinionated. But I'd argue the fundamentals would be messaging/methods and encapsulation.
The underlying problem is that the concepts are *extremely* fuzzy. Before you can engage in a meaningful conversation about OOP you need to spend about 15 minutes just trying to gather what the rules of the game are. Everyone has their own view of what OOP encompasses and what it is not. The case in point is one opinionated professor.
Once you latch onto "the" definition of yours, you invariably end up rejecting certain programming languages which people in general call OO in a form or fashion. Unless--and this is the crux--your definition is so weak it doesn't matter.
--
Excellent language list. I'll add one for historical completeness: Simula 67. Dahl and Nygaard came up with objects, classes and subclasses, inheritance, and abstract/virtual methods all in one language. This was the first expression of the ideas and encouraged many other language designers and language efforts.
--
Nygaard's later programming language Beta is also worth studying. It was built around one concept: patterns. A Beta pattern generalizes classes, procedures, generators etc. Consequently "advanced features" such as nested classes came for free. IMHO it was vastly superior to other class based languages but for various reasons it never took off.[Responding to the comment about Erlang in Anderdon's message:]Erlang is (supposedly) based on Hewitt's Actor model of concurrent computation. So calling actors as "*the* implementation of the OOP model" is rather funny! OOP is really just about organizing sequential computation.
Just a gentle reminder that I took some pains at the last OOPSLA to try to remind everyone that Smalltalk is not only NOT its syntax or the class library, it is not even about classes. I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is all about (and it's something that was never quite completed in our Xerox PARC phase). The Japanese have a small word -- ma -- for "that which is in between" -- perhaps the nearest English equivalent is "interstitial". The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be. Think of the internet -- to live, it (a) has to allow many different kinds of ideas and realizations that are beyond any single standard and (b) to allow varying degrees of safe interoperability between these ideas.
...
Hi gophers,Slightly off-topic but involves Go (and C):Professor: "who knows what the main difference between Java and C is?"Student: "Java is object-oriented and C is not."Professor: "Correct, C does not support classes."Me: "I disagree; a language not having classes does not make it any more or less object-oriented than Java."
Professor: "You're wrong; OO equals classes."Me: "Counter-examples; JavaScript, Go."
Professor: "An object oriented language supports classes and operator overloading. Hence C is by definition not object-oriented."
Me: "Does Java have operator overloading?"Professor: "I don't know and I don't care. C is procedural and procedural is the opposite of Object-oriented."
(Personal opinion: the term "object-oriented" has no place in a higher education establishment.)
This professor also taught us that C is "sometimes" pass-by-reference and made it clear that variables are pointer values.
As you might guess, I'm pissed and I'm looking for any citation (or a benevolent high-profile gopher who's willing to create one for me) that corroborates my standpoint.Any and all contributions are greatly appreciated.
Straight out of school, in my first programming job, one of the software architects at the company shared with me:"All taxonomy is arbitrary." That definitely applies here.
Erlang is (supposedly) based on Hewitt's Actor model of concurrent computation. So calling actors as "*the* implementation of the OOP model" is rather funny! OOP is really just about organizing sequential computation.