On Fri, Jan 1, 2021 at 3:04 PM Space A. <reexist...@gmail.com> wrote:
> > I don't see a lot of room for interpretation here. > > Well, I do. I do believe if you truly think he meant "Go is OOP language" > and continue insisting you are wrong. > Okay. I don't believe "people mean the literal opposite of what they say" is a POV that can be argued with. > > 1. First of all I feel it's more rhetoric, it's same as "Less is > exponentially more", and "[Go] ... Arguably more object oriented than say > Java or C++ ". I believe if you think logically "less" could not be "more", > right, and you wouldn't insist on that? Same goes to the statement that Go > is more object oriented. What I think he meant was "Go has even better > compatibilities even for OOP because of composition" which also in line > with what I said that you can use ANY language to write OOP program. > 2. There is FAQ question and answer, and I do believe Rob took part in > answering FAQ, and this one in particular. > > Anyways as you said in the beginning of thread, Go is no a religion, Rob > is not Jesus, he is alive and he can explain his position if it makes any > sense. Maybe I'm wrong and don't understand something, that's possible. So > I'm not arguing for the sake of arguing. > > > > > > пт, 1 янв. 2021 г. в 16:48, Axel Wagner <axel.wagner...@googlemail.com>: > >> On Fri, Jan 1, 2021 at 1:57 PM Space A. <reexist...@gmail.com> wrote: >> >>> > Javascript is an incredibly popular language with non-inheritance OOP. >>> Or, at least, no inheritance at the type-level (so either way, invalidating >>> your statement that OOP is about type-hierarchies). >>> >> This is debatable but JS is a non-OOP language. >>> >> >> That's certainly a valid opinion to hold. I don't believe it, >> empirically, agrees with the common wisdom around it, though. >> >> >>> And yet if you wonder, there is no definition of what OOP language is. >>> Give it any, I don't mind. But it seems to most of us it's quite clear (by >>> major examples like C++ or Java) until we start arguing just for arguing. >>> >> >> With this, I agree. Note, again, that it doesn't actually *matter* for >> the question of whether or not Go should get generics, whether we call it >> an OOP language or not. And yet, it has become a point of argument in this >> thread - AFAICT, purely for the sake of arguing. >> >> > Repetition does not make a false statement true. Instead of >>> copy-pasting yourself, it would be prudent to cite sources. For example, is >>> there any text book that agrees with your definition of OOP? >>> What exactly you disagree on? I will copy and paste once again for your >>> convenience =) >>> >> >> There really is no need (though I recognize what you are trying to do). >> Let me quote a couple of your statements that I disagree with: >> • "Go doesn't have classes and is not an OOP language." >> • "Oh my... It is pure sophistic nonsense. OOP is all about inheritance. >> Not just whether you have "objects" in a language spec or not." >> • "As I said, OOP (if we talk about language, not a program written in >> OOP paradigm, because you can use ANY language for that) is all about >> inheritance." >> >> And in the interest of clarity and to illustrate that I'm not just trying >> to argue for the sake of argument: I do agree with you that Go favors >> composition over inheritance. And I do agree that inheritance based OOP >> prioritizes type-hierarchies. >> >> >>> Maybe you disagree with Rob Pike who made statements quite similar to >>> what I said regarding composition in his quote I given above? >>> >> >> If we are making an appeal to authority, I thnik you'll find he made >> statements that directly contradict the ones I quoted above as disagree >> with. And he made statements that support the ones I agree with. >> >> >>> That's ridiculous. There is a question in FAQ. And answer you are aware >>> of, which says Go is not OOP, which Rop Pike for sure aware of as well. And >>> his wording in that video means not how you trying to interpret. >>> >> >> His verbatim quote is "Go is a profoundly object oriented language. >> Arguably more object oriented than say Java or C++". That clearly >> contradicts your statement that Go is not an OOP language. He also goes to >> great length to say that Go does not have inheritance (in favor of >> composition), which, together with the first one, clearly implies that he >> is contradicting your assertion that "OOP is all about inheritance". >> >> I don't see a lot of room for interpretation here. >> >> > But either way, if you don't mind me asking: What exactly does any of >>> this have to do with generics? >>> Good question, ask Alex Besogonov, because he started this arguing that >>> Go has classes (opponent meant he doesn't want making Go like C++/Java). >>> >> >> If we are pointing fingers, the statement he reacted to was "The real >> value for Go is it's simplicity, avoidance of generics and avoidance of >> classes", not "I don't want to make Go like C++/Java". And Alex put his >> statement into parenthesis, clearly indicating that he considers it only a >> minor side-point. >> >> But, if we agree it doesn't matter, we should probably just drop it. >> >> >> >>> >>> >>> >>> >>> пт, 1 янв. 2021 г. в 05:16, Axel Wagner <axel.wagner...@googlemail.com>: >>> >>>> On Fri, Jan 1, 2021 at 1:23 AM Space A. <reexist...@gmail.com> wrote: >>>> >>>>> > Sorry to disappoint you (actually, no, not sorry) but OOP has >>>>> nothing to do with inheritance. It's a common feature in object-oriented >>>>> programming but it's not essential. >>>>> > Moreover, Go has inheritance as well (struct embedding and interface >>>>> inheritance), making it a fairly typical example. The only significant >>>>> difference is that Go has structural typing, instead of manually >>>>> declaration of implemented interfaces. >>>>> >>>>> You don't disappoint me by repeating wrong statements. >>>>> >>>>> As I said, OOP (if we talk about language, not a program written in >>>>> OOP paradigm, because you can use ANY language for that) is all about >>>>> inheritance. Period. Proof - take any major OOP language and see how it's >>>>> done, what's in its heart. >>>>> >>>> >>>> Javascript is an incredibly popular language with non-inheritance OOP. >>>> Or, at least, no inheritance at the type-level (so either way, invalidating >>>> your statement that OOP is about type-hierarchies). >>>> >>>> Secondly, and I copy-paste myself here: >>>>> Classes (like in Java) vs structs (like in Go) is about inheritance vs >>>>> composition, not about attaching fields and methods. Inheritance implies >>>>> type hierarchy, child and parent, virtual functions, abstract and final >>>>> implementations and so on so forth to keep this all of this manageable. >>>>> >>>> >>>> Repetition does not make a false statement true. Instead of >>>> copy-pasting yourself, it would be prudent to cite sources. For example, is >>>> there any text book that agrees with your definition of OOP? >>>> >>>> If you don't understand what it means, please study a little bit (with >>>>> all respect and blabla, I also learn all the time). Because these two >>>>> approaches are different. >>>>> >>>>> Here is some small quote and link which I think can help: >>>>> >>>>> My late friend Alain Fournier once told me that he considered the >>>>>> lowest form of academic work to be taxonomy. And you know what? Type >>>>>> hierarchies are just taxonomy. You need to decide what piece goes in what >>>>>> box, every type's parent, whether A inherits from B or B from A. Is a >>>>>> sortable array an array that sorts or a sorter represented by an array? >>>>>> If >>>>>> you believe that types address all design issues you must make that >>>>>> decision. >>>>>> >>>>> I believe that's a preposterous way to think about programming. What >>>>>> matters isn't the ancestor relations between things but what they can do >>>>>> for you. >>>>>> >>>>>> That, of course, is where interfaces come into Go. But they're part >>>>>> of a bigger picture, the true Go philosophy. >>>>>> If C++ and Java are about type hierarchies and the taxonomy of types, >>>>>> Go is about composition. >>>>>> Doug McIlroy, the eventual inventor of Unix pipes, wrote in 1964 (!): >>>>>> >>>>>> We should have some ways of coupling programs like garden hose--screw >>>>>> in another segment when it becomes necessary to massage data in another >>>>>> way. This is the way of IO also. >>>>>> >>>>>> That is the way of Go also. Go takes that idea and pushes it very >>>>>> far. It is a language of composition and coupling. >>>>>> The obvious example is the way interfaces give us the composition of >>>>>> components. It doesn't matter what that thing is, if it implements >>>>>> method M >>>>>> I can just drop it in here. >>>>>> Another important example is how concurrency gives us the composition >>>>>> of independently executing computations. >>>>>> And there's even an unusual (and very simple) form of type >>>>>> composition: embedding. >>>>>> These compositional techniques are what give Go its flavor, which is >>>>>> profoundly different from the flavor of C++ or Java programs. >>>>>> >>>>> >>>> One thing that is conspicuously absent from this quote, of course, is >>>> the term "Object oriented programming" (or even just "Object"). FTR, if you >>>> quote Rob Pike, you should also be aware that he has always staunchly >>>> defended the stance that Go is an OOP language: >>>> https://www.youtube.com/watch?t=750&v=rKnDgT73v8s >>>> >>>> But either way, if you don't mind me asking: What exactly does any of >>>> this have to do with generics? >>>> >>>> >>>>> >>>>> https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> чт, 31 дек. 2020 г. в 23:27, Alex Besogonov <alex.besogo...@gmail.com >>>>> >: >>>>> >>>>>> On Wednesday, December 30, 2020 at 12:23:35 PM UTC-8 Space A. wrote: >>>>>> >>>>>>> > OOP isn't specific about how inheritance is handled (or if it is >>>>>>> even supported) >>>>>>> Oh my... It is pure sophistic nonsense. OOP is all about >>>>>>> inheritance. Not just whether you have "objects" in a language spec or >>>>>>> not. >>>>>>> >>>>>> Sorry to disappoint you (actually, no, not sorry) but OOP has nothing >>>>>> to do with inheritance. It's a common feature in object-oriented >>>>>> programming but it's not essential. >>>>>> >>>>>> Moreover, Go has inheritance as well (struct embedding and interface >>>>>> inheritance), making it a fairly typical example. The only significant >>>>>> difference is that Go has structural typing, instead of manually >>>>>> declaration of implemented interfaces. >>>>>> >>>>>> > But on the topic of generics, this entire thread seems alarmist. >>>>>>> Generics will open a huge door for libraries to be written that will >>>>>>> make >>>>>>> our lives easier. I'm thinking specifically about data processing and >>>>>>> machine learning. A lot of devs use Python right now for this which >>>>>>> leads >>>>>>> to duplication of code across languages. Complex algorithms will be >>>>>>> able >>>>>>> to be shared without hacky type conversions wrapping every function >>>>>>> call. >>>>>>> Who is "yours"? You talk about Python so just go ahead and use >>>>>>> Python if it serves you, convince your team that Python is better, >>>>>>> whatever. >>>>>>> >>>>>> You know that this argument can be applied to you as well? >>>>>> >>>>>> >>>>>>> среда, 30 декабря 2020 г. в 22:46:12 UTC+3, nichol...@gmail.com: >>>>>>> >>>>>>>> OOP isn't specific about how inheritance is handled (or if it is >>>>>>>> even supported). The basic definition is objects with fields and >>>>>>>> methods, >>>>>>>> and being able to address the itself (typically using 'this' or >>>>>>>> 'self', but >>>>>>>> Go is unique in that you define what to call the object). It does >>>>>>>> composition differently than most languages, but the functional needs >>>>>>>> are >>>>>>>> met. >>>>>>>> >>>>>>>> But on the topic of generics, this entire thread seems alarmist. >>>>>>>> Generics will open a huge door for libraries to be written that will >>>>>>>> make >>>>>>>> our lives easier. I'm thinking specifically about data processing and >>>>>>>> machine learning. A lot of devs use Python right now for this which >>>>>>>> leads >>>>>>>> to duplication of code across languages. Complex algorithms will be >>>>>>>> able >>>>>>>> to be shared without hacky type conversions wrapping every function >>>>>>>> call. >>>>>>>> We'll be able to use things like trees as simply as we use maps or >>>>>>>> slices. >>>>>>>> I don't think we'll see the language turn into the grossness that is >>>>>>>> Java >>>>>>>> or C++ because of it. >>>>>>>> >>>>>>>> On Wednesday, December 30, 2020 at 4:27:15 AM UTC-8 Space A. wrote: >>>>>>>> >>>>>>>>> Go doesn't have classes and is not an OOP language. >>>>>>>>> >>>>>>>>> Classes (like in Java) vs structs (like in Go) is about >>>>>>>>> inheritance vs composition, not about attaching fields and methods. >>>>>>>>> Inheritance implies type hierarchy, child and parent, virtual >>>>>>>>> functions, >>>>>>>>> abstract and final implementations and so on so forth to keep this >>>>>>>>> all of >>>>>>>>> this manageable. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> вторник, 29 декабря 2020 г. в 23:27:45 UTC+3, Alex Besogonov: >>>>>>>>> >>>>>>>>>> Please, stop being so condescending to newcomers and >>>>>>>>>> non-professional developers. Generics as uses by end-users will >>>>>>>>>> improve >>>>>>>>>> their experience, not make it harder. >>>>>>>>>> >>>>>>>>>> (And what is this obsession with "classes"? Go has them - structs >>>>>>>>>> with methods are classes). >>>>>>>>>> >>>>>>>>>> -- >>>>>> You received this message because you are subscribed to a topic in >>>>>> the Google Groups "golang-nuts" group. >>>>>> To unsubscribe from this topic, visit >>>>>> https://groups.google.com/d/topic/golang-nuts/LEEuJPOg0oo/unsubscribe >>>>>> . >>>>>> To unsubscribe from this group and all its topics, 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/7b58c437-4507-4d75-b0a2-de7b0ba8b58dn%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/golang-nuts/7b58c437-4507-4d75-b0a2-de7b0ba8b58dn%40googlegroups.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/CADKwOTd4%3DiPTtyBRhFW-aQFoEMd0jsVzrSUhTb2PtLyMWKxHiQ%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/golang-nuts/CADKwOTd4%3DiPTtyBRhFW-aQFoEMd0jsVzrSUhTb2PtLyMWKxHiQ%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/CAEkBMfHrMrb%3DLm_OvzgBSEzwTSNzhH_qq7%2BGnjBu2OvRqmBomw%40mail.gmail.com.