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> 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/071E5BA1-C863-409F-980C-730437D18AD8%40ix.netcom.com.