Great points. For me this is as much if not more of a communications issue than a technical one. It seems like the definition of what an OO language is broad enough that we could go on forever about if Go is one.
The language developers can also choose to declare what it is meant to be definitively. I feel like we should either say it is or it isn't OO and not equivocate in the FAQ. I land on the side of simply saying it is not an OO language because of the conceptual baggage the notion carries. I've personally seen these concepts misapplied to Go because if you squint... Go resembles other languages while being fundamentally different. But in general, that lack of clarity seems un-Go like. I've always found the unwillingness to commit to an answer in the FAQ jarring. On Tuesday, November 22, 2022 at 11:11:44 AM UTC-5 Thomas Bushnell, BSG wrote: > Asking "the definition of object oriented programming" seems a bad idea to > me. Alan Kay invented the term, and he was pretty clear that C++ was not > anything like what he had in mind, and yet, a lot of people think C++ is an > object oriented language. I don't, as it happens. > > Inheritance used to be thought of as quite fundamental, but not so much > any more. I think that's probably right. > > But here are some other things: object oriented languages are supposed to > have object ubiquity. I think Stroustrup probably did not understand the > point, and the designers of Java couldn't figure out how to make it > efficient. So much for them. C++ gets so much wrong it hardly matters. But > Java doesn't; it more or less regrets that it has non-object types. Go is > very different however: Go does not regard interfaces as something that > should be ubiquitous or feel bad when they aren't used. In fact, they are > discouraged except when actually required. > > Late binding is another key feature, one which again C++ mostly didn't > understand the point of, and Java couldn't figure out how to implement > efficiently, so everyone does "final" instead. Go does have late binding > for interface method calls, but only on-demand. > > Object oriented languages are generally either class-based or > prototype-based. Go is neither, having nothing like classes and nothing > like prototypes. For me, this is the most salient thing to keep in mind. > > On Tue, Nov 22, 2022 at 10: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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/18fb45c6-6511-4b1a-ad4b-c60886838ccan%40googlegroups.com.