I think in the 1990s it was a debate if Lisp with Common List Object System 
(CLOS) is OOP language. The answer they arrive was something like that.
"No, if your definition of OOP is based on C++. But, why your definition of 
OOP should be based on C++?"

I think the same fits Go. Go is in many ways not a C++-like language, so if 
C++ is for someone golden standard of property X, then Go probably doesn't 
have X.

For these reasons I don't like question is language X is OOP? What matters 
for X = Go for me is that it provides you power to create new data types 
and abstractions that allow you to write reusable code. And it do it very 
well.

Best regards,
Kamil

środa, 23 listopada 2022 o 05:27:08 UTC+1 ren...@ix.netcom.com napisał(a):

> That seems nonsensical to me. What is the square root of a string?
>
> Types aka classes define properties and behavior. 
>
> Cars do not fly. Planes don’t use roads. Classes are abstractions that 
> model required attributes that in turn compose a system to do useful work. 
> Both boats and cars move. You can use a boat to get from a to b if there is 
> no water. 
>
> Go is OO like. Or Go is not OO. There’s reasoning to support both but 
> don’t mangle OO to make the claim. 
>
> On Nov 22, 2022, at 11:04 AM, 'Thomas Bushnell BSG' via golang-nuts <
> golan...@googlegroups.com> wrote:
>
> 
>
> Late binding means you don't need to know the types of your parameters *at 
> all* when you write a method call. If the language supported late binding, 
> then you would be able to define all your variables as Object and 
> *everything would continue to work*. 
>
> In Go you could define everything as interface{} and then use small 
> interfaces around every call:
>
> foo.(interface{ Method() string}).Method()
>
> In Java, you can use the reflection interface. In this sense, it is 
> available "on demand", but that's not the same thing at all.
>
> Both Java and C++ made the mistake of confusing a class with a behavior, 
> and then using classes as names for behaviors.
>
>
>
> On Tue, Nov 22, 2022 at 11:46 AM Robert Engels <ren...@ix.netcom.com> 
> wrote:
>
>> What would be the purpose of writing B calling a method on A that doesn’t 
>> exist?
>>
>> On Nov 22, 2022, at 10:36 AM, 'Thomas Bushnell BSG' via golang-nuts <
>> golan...@googlegroups.com> wrote:
>>
>> 
>> Both Java and Go require that a method be instantiated in the declared 
>> interface of the type at compile time. This is contrary to the point of 
>> late binding.
>>
>> In the case of Go, this cannot be detected, because everything is built 
>> together. But with Java, you cannot call a method on an object unless that 
>> method has *already *been defined. In other words, late binding supports 
>> the following order of things:
>>
>> 1) Write class A, with method X and only X. Compile it.
>> 2) Write class B, which instantiates class A and calls method Y (which 
>> does not exist yet). Compile it.
>> 3) Extend class A to add method Y. Compile it.
>> 4) Execute class B.
>>
>> Late binding says this should work, but the Java compiler will throw an 
>> error at step two. Go never throws that error, because Go only builds the 
>> whole program at once, so the partial compilations don't make sense.
>>
>> In addition, any method marked final does not support late binding - 
>> indeed, this is the point of the keyword, and is why I remarked that this 
>> is because they couldn't figure out how to do it efficiently.
>>
>> Thomas
>>
>> On Tue, Nov 22, 2022 at 11:25 AM Robert Engels <ren...@ix.netcom.com> 
>> wrote:
>>
>>> Why do you say that Java does not have late binding. It 100% does. In 
>>> fact the JVM supports dynamic dispatch to make this as efficient as 
>>> possible. Then the JIT optimizes it even more based on runtime behavior. 
>>>
>>> On Nov 22, 2022, at 10:18 AM, Matt KØDVB <ma...@k0dvb.com> wrote:
>>>
>>> 
>>> But see https://en.wikipedia.org/wiki/Self_(programming_language)
>>>
>>> Self was considered an OO language back when I was a grad student and is 
>>> still listed that way today, even though it has neither classes nor 
>>> inheritance.
>>>
>>> Anyway, my point would be that the term OO originates with Alan Kay and 
>>> the team at Xerox PARC; Kay’s response to the OO flame wars was to 
>>> de-emphasize classes and inheritance.
>>>
>>> Of course, using his definition, neither Java nor Go would be “truly” OO 
>>> since not all things use late binding :-)
>>>
>>> Perhaps we can talk about class-based and non-class based OO languages?
>>>
>>> On Tue, Nov 22, 2022 at 10:07 AM Robert Engels <ren...@ix.netcom.com> 
>>> wrote:
>>>
>>>> The wiki OO page lists classes as a requirement - but not necessarily 
>>>> inheritance. Class variables require classes. 
>>>>
>>>> Also, your link does not work. 
>>>>
>>>> > On Nov 22, 2022, at 9:56 AM, Jan Mercl <0xj...@gmail.com> wrote:
>>>> > 
>>>> > On Tue, Nov 22, 2022 at 4:43 PM Robert Engels <ren...@ix.netcom.com> 
>>>> wrote:
>>>> > 
>>>> >> Go is not listed as an OO language on Wikipedia.
>>>> > 
>>>> > Check https://en.wikipedia.org/wiki/Go_(programming_language):
>>>> > "ParadigmMulti-paradigm: concurrent imperative, object-oriented[1][2]"
>>>> > 
>>>> >> Personally I think it is OO-like. OO typically has inheritance.
>>>> > 
>>>> > Typically they may, but that's not the same as what a requirement
>>>> > would be, right?
>>>> > 
>>>> >> There are also no “class variables” - only package level - which 
>>>> makes some encapsulation patterns harder (every class has to become a 
>>>> package).
>>>> > 
>>>> > No class has to become a package because Go has no classes. You may
>>>> > think of what a "class" in Go means, but you have not defined that
>>>> > idea and the language specification is somehow silent about Go
>>>> > classes.
>>>> > 
>>>> > -- 
>>>> > You received this message because you are subscribed to the Google 
>>>> Groups "golang-nuts" group.
>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>> send an email to golang-nuts...@googlegroups.com.
>>>> > To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/golang-nuts/CAA40n-U%3DG8gqAZEHrnLUxbg5vsAcRkNV35c86c79xcrhSzLSWw%40mail.gmail.com
>>>> .
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "golang-nuts" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to golang-nuts...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/golang-nuts/A1F03B77-7CDC-46CC-B2E0-2C3C1B7DC966%40ix.netcom.com
>>>> .
>>>>
>>>
>>>
>>> -- 
>>>
>>> Matt
>>> K0DVB
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/CANRS-2%2Bre6WUFT6tE8QinUZ-ipqLvwNTr2hoHNiD4H%3DwQ8T7HA%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/CANRS-2%2Bre6WUFT6tE8QinUZ-ipqLvwNTr2hoHNiD4H%3DwQ8T7HA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/A5532469-6B1D-4C18-8DBE-F03FD56E8830%40ix.netcom.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/A5532469-6B1D-4C18-8DBE-F03FD56E8830%40ix.netcom.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/CA%2BYjuxsQJu9KVOCR5xGK88yJ9w2FDNB9za_c%3DnvdGYZAvJbwWw%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/golang-nuts/CA%2BYjuxsQJu9KVOCR5xGK88yJ9w2FDNB9za_c%3DnvdGYZAvJbwWw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CA%2BYjuxtGgC0%2B7AZZM8j%2BKLZyouUgye8epmTquY4ZApFhrocMpA%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/CA%2BYjuxtGgC0%2B7AZZM8j%2BKLZyouUgye8epmTquY4ZApFhrocMpA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/27e27ed5-c462-47a2-a04e-7d810bc6aff2n%40googlegroups.com.

Reply via email to