I really hope my negative perception of your attitude stems from a language 
barrier. To clarify, I was trying to state that you can write Java without 
using a framework, just as you can write Go using a framework. Using a 
framework has nothing to do with OOP. Even the term framework is misleading - 
there are many large “libraries” in C that I would consider a framework.

> On Jan 1, 2021, at 5:05 PM, Space A. <reexist...@gmail.com> wrote:
> 
> You keep replying with random sentences no matter what I say, just combining 
> known words in random phrases. Okay, but please put me out of your list, 
> cause I have better games to play.
> 
> 
> сб, 2 янв. 2021 г. в 00:50, robert engels <reng...@ix.netcom.com 
> <mailto:reng...@ix.netcom.com>>:
> Those concerns are unrelated. There are plenty of frameworks in Go as well. 
> You can create frameworks without using inheritance.
> 
>> On Jan 1, 2021, at 2:51 PM, Space A. <reexist...@gmail.com 
>> <mailto:reexist...@gmail.com>> wrote:
>> 
>> Composition is just a principle, which can be implemented on different 
>> layers by different ways. I'd say in Java you will be forced not only to 
>> follow OOP (with inheritance and all of that ofc) even if you don't need it, 
>> you will end up writing in some framework and that framework will become 
>> your language, rather than vanilla Java, unless you're doing simple examples 
>> for students. First question Go newcomers ask on forums which framework I 
>> should use for my application.
>> 
>> 
>> 
>> пт, 1 янв. 2021 г. в 23:27, robert engels <reng...@ix.netcom.com 
>> <mailto:reng...@ix.netcom.com>>:
>> You can write Java (or any other OOP with inheritance) using composition 
>> rather than inheritance. Much of the Java stdlib uses both. It can be argued 
>> that most usages of anonymous inner classes are composition rather than 
>> inheritance.
>> 
>>> On Jan 1, 2021, at 1:59 PM, Space A. <reexist...@gmail.com 
>>> <mailto:reexist...@gmail.com>> wrote:
>>> 
>>> > Wait, I think I get it. Are you making a distinction between object 
>>> > oriented /languages/ and object oriented /programs/ (which may or may not 
>>> > be written in an object oriented language)?
>>> You are absolutely correct, my friend, so you see, OOP is just a paradigm 
>>> in software development. Program can be entirely OOP, or partially, such as 
>>> module, or library. And you have tools such as programming languages. When 
>>> these languages provide you with instruments for building your OOP program 
>>> *out of the box*, being a first-class citizens, you could call that 
>>> language OOP. Key feature of major OOP languages is inheritance and all 
>>> supporting stuff. But you can use non-OOP language such as C, just that you 
>>> will need to add some moving parts yourself instead of using what's given 
>>> by language.
>>> 
>>> Same with CSP. Go is often called a CSP language, or language with CSP 
>>> capabilities, because it has all needed features, such as goroutines and 
>>> channels out of the box as first class objects. But this doesn't mean you 
>>> cannot write CSP program in any other language, you can, but you will 
>>> sometimes have to invent a wheel.
>>> 
>>> 
>>> > For example, from my interpretation of your definition, Java and C++ 
>>> > would be considered object oriented languages, because they favor class 
>>> > inheritance over composition. But a language like Scheme or JavaScript 
>>> > would not be considered an object oriented language because they do not 
>>> > have traditional class inheritance.
>>> Exactly. Thank you for giving me hope that at the end at least some of us 
>>> living on the same planet.
>>> 
>>> 
>>> пт, 1 янв. 2021 г. в 19:07, Beka Westberg <bekawestb...@gmail.com 
>>> <mailto:bekawestb...@gmail.com>>:
>>> > 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.
>>> 
>>> Wait, I think I get it. Are you making a distinction between object 
>>> oriented /languages/ and object oriented /programs/ (which may or may not 
>>> be written in an object oriented language)?
>>> 
>>> For example, from my interpretation of your definition, Java and C++ would 
>>> be considered object oriented languages, because they favor class 
>>> inheritance over composition. But a language like Scheme or JavaScript 
>>> would not be considered an object oriented language because they do not 
>>> have traditional class inheritance.
>>> 
>>> However, it seems like you are saying that you can write an object oriented 
>>> /program/ in any of the above languages? Each of the above languages allows 
>>> you to create "things" that have internal mutable state, and can receive 
>>> messages, which seems like a pretty good definition of an object :D Hence, 
>>> object oriented programming is possible.
>>> 
>>> I don't really have an opinion on this. I just want to know if my 
>>> interpretation of your opinion was close, or way off base hehe.
>>> 
>>> On Friday, January 1, 2021 at 6:05:07 AM UTC-8 Space A. wrote:
>>> Ok I see you change a little bit your position, so I only comment on this:
>>> 
>>> > 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. 
>>> 
>>> Well, I do. I do believe if you truly think he meant "Go is OOP language" 
>>> and continue insisting you are wrong. 
>>> 
>>> 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.wa...@googlemail.com <>>:
>>> On Fri, Jan 1, 2021 at 1:57 PM Space A. <reexi...@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.wa...@googlemail.com <>>:
>>> On Fri, Jan 1, 2021 at 1:23 AM Space A. <reexi...@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 
>>> <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 
>>> <https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html>
>>> 
>>> 
>>> 
>>> 
>>> 
>>> чт, 31 дек. 2020 г. в 23:27, Alex Besogonov <alex.be...@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 
>>> <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...@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...@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 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 
>>> <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 
>>> <mailto:golang-nuts+unsubscr...@googlegroups.com>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/9be2bdba-7e5d-42c2-be19-3975e0d51fbcn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/9be2bdba-7e5d-42c2-be19-3975e0d51fbcn%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 
>>> <mailto:golang-nuts+unsubscr...@googlegroups.com>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/CADKwOTcr3WOWf%3DuvxtsCYbG95LkvTqqDMuYroMrdFGAkEr%2BzLQ%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/CADKwOTcr3WOWf%3DuvxtsCYbG95LkvTqqDMuYroMrdFGAkEr%2BzLQ%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 
>> <mailto:golang-nuts+unsubscr...@googlegroups.com>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/CADKwOTcq%3DOTgSsVNDqqFcKaM8AqFFpjRivJq93ETKFbeV9SD5Q%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/golang-nuts/CADKwOTcq%3DOTgSsVNDqqFcKaM8AqFFpjRivJq93ETKFbeV9SD5Q%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 
> <mailto:golang-nuts+unsubscr...@googlegroups.com>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CADKwOTf6om7HLUjXPeyqCW9rRpC0ffiaOO5BY7OEwQ1VQ4jo0g%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/golang-nuts/CADKwOTf6om7HLUjXPeyqCW9rRpC0ffiaOO5BY7OEwQ1VQ4jo0g%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/24AD21D2-F4D6-4EA1-9D19-98D84046327C%40ix.netcom.com.

Reply via email to