Entropy tends to grow. Good things tend to become less good and even bad
over time. This is how the Universe works. Does C++ become a better
language by adding more and more features? What about Java? What makes you
think that people who were behind other languages weren't doing the same as
what "Go team" now trying to do? What's the difference? I really loved Java
at the beginning.


пн, 15 мар. 2021 г. в 03:24, David Skinner <skinner.da...@gmail.com>:

> I considered generics so important to our workflow that I added it quite
> some time ago, Go is an implementation language, you may implement anything
> you like with it. If you do not like the way it does something, you can use
> it to create a different language, that is what real programmers do. And Go
> makes it very easy to do. When I first started, I was writing machine code
> in octal and years later could read hex dumps the way others could ASM. The
> real problem is that each person who implemented a generics solution did so
> lightly differently so the learning curve is steep and the talent pool is
> shallow. Having well-defined generics for everyone to use will greatly
> benefit the 10% who rolled their own solution and make it easier for
> newbies who must later maintain that code. Heaven helps those who have to
> read my obscure proprietary generics code.
>
> The real problem is to be able to create useful abstractions. Packages
> should be orthogonal APIs, functions should be descriptive, RPCs should not
> have a plethora of microservices for no good reason. Modules and Generics
> are really great and wonderful and save time, but only if used wisely and
> correctly and only as needed. Modules introduced chaos, the dust will
> settle. Generics shall also introduce chaos, but then those who learn to
> use it wisely and effectively shall enjoy and productivity improvement, and
> then that dust will settle.
>
> I have personal reasons to have great trust in the Go team. Go has solved
> a plethora of problems for me already.
>
> On Saturday, March 13, 2021 at 11:35:23 AM UTC-6 axel.wa...@googlemail.com
> wrote:
>
>> On Sat, Mar 13, 2021 at 6:24 PM Space A. <reexi...@gmail.com> wrote:
>>
>>> There is a huge difference between generics and some regular questions
>>> like `Etag` implementation, isn't it? In time, investments, "community
>>> demand", commitments to upper management, etc
>>>
>>
>> Indeed. That doesn't change the fact that Russ has a track record and I
>> trust him.
>>
>>
>>> And Russ didn't write academic paper regarding it
>>>
>>
>> Apparently I missed something. I'm unaware of any papers by Russ.
>>
>>
>>> (before accepting proposal in less than a month after it was published).
>>> =)
>>>
>>
>> The proposal has been evolving and discussed for almost three years
>> before that. The reason it got accepted in the space of a months is that it
>> was only published as a proposal once the authors felt confident that the
>> refinements they made in response to the public discussion were sufficient
>> to make it acceptable. In particular, it has changed very little from the
>> version they posted more than a year earlier. After three years of
>> discussion, it would have been surprising if new flaws would have surfaced
>> that made it intractable.
>>
>> It is a testament to how thoroughly it was discussed, not an indication
>> that it wasn't.
>>
>> FWIW, if you only focus on the one-month period between the proposal
>> getting posted and it being accepted, I am beginning to understand why you
>> think there was never a possibility of it being rejected. It would mean you
>> are unaware of the decade of discussion preceding it.
>>
>>
>>
>>> сб, 13 мар. 2021 г. в 19:39, Axel Wagner <axel.wa...@googlemail.com>:
>>>
>>>> On Sat, Mar 13, 2021 at 4:59 PM Space A. <reexi...@gmail.com> wrote:
>>>>
>>>>> You are a smart guy, one of the smartest I have ever talked to. But it
>>>>> looks like you somehow missed a very obvious thing. The people you
>>>>> mentioned (and most of the so-called Go team) AFAIK are Google employees.
>>>>> They work for a company and they are paid for the work they do.
>>>>>
>>>>
>>>> I did not miss this.
>>>>
>>>>
>>>>> If, as you say, they spend so much time, literally years, keep
>>>>> replying "if we find an approach that gives value blablabla", how do you
>>>>> imagine anyone responsible for the process at the end say smth like:
>>>>> "Alright guys, after spending so many man-years we have few solutions, but
>>>>> we finally realized that we were moving in wrong direction, so now we 
>>>>> gonna
>>>>> be dropping everything for the sake of better future of Go".
>>>>>
>>>>
>>>> The person responsible for the process (if there is any one person) is
>>>> Russ. I would have expect him to say that, if it was his opinion. He has a
>>>> good track record of acknowledging the arguments on all sides of the
>>>> process and committing to a decision - even it if goes contrary to a
>>>> previous statement of his.
>>>>
>>>> Here is a recent example I was involved in
>>>> <https://github.com/golang/go/issues/43223#issuecomment-772733473>. He
>>>> originally said, in no uncertain terms, that `ETag`s will be supported when
>>>> an `embed.FS` is served over `net/http`. When it became clear that we don't
>>>> have a good design to make it happen, he admitted that it's unfortunate to
>>>> break that promise, but it's better than ending with a bad design.
>>>>
>>>> Even then, what you are saying doesn't make a lot of sense to me. If
>>>> they spend many years saying "we may add generics, if we find a design that
>>>> works", they seem to be perfectly set up to say "we didn't find one" to
>>>> their hypothetical employer (to be clear: Their employer doesn't care).
>>>> Like, if anything, what they said made it *more* plausible to just drop
>>>> generics altogether if they don't like the design.
>>>>
>>>> And, personally, I was in the room when the original contracts design
>>>> was first shown externally (at the GopherCon 2018 contributor summit) and I
>>>> talked to Ian and Robert (and others) about it. As far as I remember, they
>>>> were pretty open about their intent to let this be the last attempt, which
>>>> would either lead to a) generics landing in Go or b) generics actually
>>>> being rejected (in the sense of "changing the FAQ entry to say 'there will
>>>> never be generics in Go, because we've given up on finding a design that
>>>> works'").
>>>> That is, I'm not just working from the actual literal words of everyone
>>>> involved and every public statement any of them has ever made (which I
>>>> heard) but also from actually talking to them, in person, asking them
>>>> clarifying questions and interpreting their facial and body language.
>>>>
>>>> Of course, you don't have to believe me about any of this. But I can
>>>> categorically say that, as far as I can tell, your allegations that the
>>>> decision to add generics was pre-made is baseless.
>>>>
>>>>
>>>>> Like c'mon? Read what's written, not just words and punctuation
>>>>>
>>>>
>>>> As a rule, I try to avoid speculating about intent. It is hard enough
>>>> to interpret what people are actually directly saying, without speculating
>>>> about their internal monologue.
>>>> For example, when the Go team said "we may add generics, if we find a
>>>> design that works", you seemingly heard "we will add generics in the
>>>> future" and many others seemingly heard "we will never add generics". If we
>>>> need to allow for different people hearing logically opposite messages from
>>>> the same words, running a public project seems intractable.
>>>>
>>>> So, I really don't think we should take stock in anything but the
>>>> actual words people said.
>>>>
>>>>
>>>>
>>>>> And I repeat, there wasn't a (public) question or discussion or
>>>>> anything regarding should we drop this topic entirely.
>>>>>
>>>>
>>>> That is not correct. The possibility of rejecting the proposal (and
>>>> thus likely rejecting generics altogether) was always part of the
>>>> conversation.
>>>>
>>>>
>>>>>
>>>>>
>>>>>
>>>>> сб, 13 мар. 2021 г. в 18:32, Axel Wagner <axel.wa...@googlemail.com>:
>>>>>
>>>>>> On Sat, Mar 13, 2021 at 4:19 PM Space A. <reexi...@gmail.com> wrote:
>>>>>>
>>>>>>> > The discussion of whether or not generics will be added to Go has
>>>>>>> been going on for more than a decade.
>>>>>>> That's a lie. There has never been a question of "add it or not". It
>>>>>>> was always "we will add them" sooner or later.
>>>>>>>
>>>>>>
>>>>>> It is somewhat amusing, though ultimately frustrating, that for ten
>>>>>> years people where misquoting the Go team to say they categorically 
>>>>>> reject
>>>>>> generics and now that a decision has been made to add them, they are 
>>>>>> being
>>>>>> misquoted as saying they will *definitely* add them, sooner or later.
>>>>>>
>>>>>> Both are not true. The stance has always been (demonstrably
>>>>>> <https://github.com/golang/go/blob/dd64f86e0874804d0ec5b7138dafc28b51f61c12/doc/go_lang_faq.html#L170>
>>>>>>  since
>>>>>> before the open sourcing of Go) that generics *may* come at some
>>>>>> point, *if they can figure out a way that gives value commensurate
>>>>>> with their complexity.* This messaging has been consistent.
>>>>>>
>>>>>> Even for this specific push (which started with the contracts design)
>>>>>> whenever Ian, Russ, Robert or anyone else on the Go team has been asked 
>>>>>> if
>>>>>> generics *will* be added, the response has been a consistent "if we
>>>>>> find an approach that gives value commensurate with their complexity. We
>>>>>> are hopeful that this one does, but we will see". The first time anyone 
>>>>>> has
>>>>>> actually said generics *will* be added was when the proposal was
>>>>>> marked as accepted
>>>>>> <https://github.com/golang/go/issues/43651#issuecomment-776944155>.
>>>>>> And I wouldn't condone the use of "always" for "since about a month ago"
>>>>>> any more than I would condone "they ignored arguments" to mean "they
>>>>>> disagreed with arguments".
>>>>>>
>>>>>> If you insist on calling me a liar again, I would appreciate it if
>>>>>> you could provide a source showing that anything of what I wrote here is
>>>>>> untrue. Though, to be frank, I don't really think there is much point to
>>>>>> this discussion either way - you have already demonstrated in the past 
>>>>>> that
>>>>>> you are at best difficult to have a productive conversation with.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> сб, 13 мар. 2021 г. в 17:31, 'Axel Wagner' via golang-nuts <
>>>>>>> golan...@googlegroups.com>:
>>>>>>>
>>>>>>>> I want to re-iterate: The discussion of whether or not generics
>>>>>>>> will be added to Go has been going on for more than a decade. All 
>>>>>>>> arguments
>>>>>>>> from all sides have gotten fair consideration. A decision was reached.
>>>>>>>>
>>>>>>>> You might not agree with that decision. But saying that "there are
>>>>>>>> no arguments" or that "arguments have been ignored" is simply and
>>>>>>>> demonstrably false. I understand that it can be difficult to accept 
>>>>>>>> that
>>>>>>>> other qualified people can come to different conclusions from you, 
>>>>>>>> based on
>>>>>>>> the same available data. But it's simply going to happen. So please be
>>>>>>>> mindful of how you communicate. And ideally, don't try to re-open this
>>>>>>>> discussion with the same arguments that have already been heard. It 
>>>>>>>> took
>>>>>>>> enough time and energy from everyone to reach a decision once.
>>>>>>>>
>>>>>>>> On Sat, Mar 13, 2021 at 3:19 PM Space A. <reexi...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> HI Martin,
>>>>>>>>>
>>>>>>>>> as Jan already explained, you're not only writing code, you also
>>>>>>>>> reading it. And you have to understand what's written. At the same 
>>>>>>>>> time
>>>>>>>>> you're not just coding in Go, you're using the whole ecosystem 
>>>>>>>>> including
>>>>>>>>> libraries and tools. So the mantra "just don't use if you don't 
>>>>>>>>> like'' does
>>>>>>>>> not work, every Go programmer will be forced to use generics, to read 
>>>>>>>>> and
>>>>>>>>> at the end, to write that code.
>>>>>>>>>
>>>>>>>>> Second question you may ask - yes it will be overused, in fact in
>>>>>>>>> the very first year everything will be flooded with bad code. Because 
>>>>>>>>> it's
>>>>>>>>> a new toy and biggest change to the language in years, because it's a
>>>>>>>>> "smart" way of doing things (we are mature programmers, aren't we?),
>>>>>>>>> because "type safety" and "performance" and so on so forth.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> сб, 13 мар. 2021 г. в 15:45, Martin Schnabel <m...@mb0.org>:
>>>>>>>>>
>>>>>>>>>> (sorry space a, i didn't reply to list)
>>>>>>>>>>
>>>>>>>>>> hi alex and space a.
>>>>>>>>>>
>>>>>>>>>> as far as i know there is no reason that anybody has to write
>>>>>>>>>> code with
>>>>>>>>>> generics when they are available. therefor i really don't
>>>>>>>>>> understand the
>>>>>>>>>> negative mails to this list.
>>>>>>>>>>
>>>>>>>>>> do you also want others not to use them? how would that help you?
>>>>>>>>>> could
>>>>>>>>>> you please explain to me your personal gain if generics are not
>>>>>>>>>> added to
>>>>>>>>>> go and not available to me and other users? many users have valid
>>>>>>>>>> use
>>>>>>>>>> cases for generics and custom code generation to deal with them
>>>>>>>>>> now.
>>>>>>>>>>
>>>>>>>>>> i personally never had a reason to use imaginary numbers in go,
>>>>>>>>>> they are
>>>>>>>>>> however part of the language as literals and accompanied by
>>>>>>>>>> special
>>>>>>>>>> built-ins. should i care, do you?
>>>>>>>>>>
>>>>>>>>>> please explain
>>>>>>>>>>
>>>>>>>>>> On 13.03.21 12:34, Space A. wrote:
>>>>>>>>>> > There is no rationale. They decided, and they implemented. No
>>>>>>>>>> one from
>>>>>>>>>> > Go team ever took the argument against it seriously because
>>>>>>>>>> "community"
>>>>>>>>>> > demands, blabla. And because Russ Cox with friends written an
>>>>>>>>>> academic
>>>>>>>>>> > paper so this is now a question of pure science. Write your own
>>>>>>>>>> and they
>>>>>>>>>> > could listen. (No)
>>>>>>>>>> >
>>>>>>>>>> > суббота, 13 марта 2021 г. в 10:07:44 UTC+3, alex-coder:
>>>>>>>>>> >
>>>>>>>>>> >     Hello,
>>>>>>>>>> >
>>>>>>>>>> >     Thank you for the answers.
>>>>>>>>>> >     Now I have something to read. :-)
>>>>>>>>>> >
>>>>>>>>>> >     So, sorry for my English.
>>>>>>>>>> >     Personally, I would add a dynamic dispatching into GO
>>>>>>>>>> >     and left language without generic in order to keep
>>>>>>>>>> simplicity for GO
>>>>>>>>>> >     and to make life of the applied programmers easier :-)
>>>>>>>>>> >
>>>>>>>>>> >     What I'm looking for is the rationale behind the technical
>>>>>>>>>> decision
>>>>>>>>>> >     to understand why the sort of decision has been taken.
>>>>>>>>>> >
>>>>>>>>>> >     Thank you again for the answers.
>>>>>>>>>> >
>>>>>>>>>> >     On Saturday, March 13, 2021 at 7:15:06 AM UTC+3 Ian Lance
>>>>>>>>>> Taylor wrote:
>>>>>>>>>> >
>>>>>>>>>> >         On Fri, Mar 12, 2021 at 7:31 AM alex-coder <
>>>>>>>>>> a.gus...@gmail.com>
>>>>>>>>>> >         wrote:
>>>>>>>>>> >          >
>>>>>>>>>> >          > Hello again,
>>>>>>>>>> >          > I apologize for being so intrusive.
>>>>>>>>>> >          > Where it is possible to read about the evaluations
>>>>>>>>>> of labor
>>>>>>>>>> >         and complexity for
>>>>>>>>>> >          > GO itself for different implementations to introduce
>>>>>>>>>> generic
>>>>>>>>>> >         in GO ?
>>>>>>>>>> >
>>>>>>>>>> >         LIke others, I'm not quite sure what you are asking,
>>>>>>>>>> but perhaps
>>>>>>>>>> >         you
>>>>>>>>>> >         want to look at
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> https://go.googlesource.com/proposal/+/refs/heads/master/design/generics-implementation-stenciling.md
>>>>>>>>>> >         <
>>>>>>>>>> https://go.googlesource.com/proposal/+/refs/heads/master/design/generics-implementation-stenciling.md
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> https://go.googlesource.com/proposal/+/refs/heads/master/design/generics-implementation-dictionaries.md
>>>>>>>>>> >         <
>>>>>>>>>> https://go.googlesource.com/proposal/+/refs/heads/master/design/generics-implementation-dictionaries.md
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> https://go.googlesource.com/proposal/+/refs/heads/master/design/generics-implementation-gcshape.md
>>>>>>>>>> >         <
>>>>>>>>>> https://go.googlesource.com/proposal/+/refs/heads/master/design/generics-implementation-gcshape.md
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> >         Ian
>>>>>>>>>> >
>>>>>>>>>> > --
>>>>>>>>>> > 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
>>>>>>>>>> > <mailto:golang-nuts...@googlegroups.com>.
>>>>>>>>>> > To view this discussion on the web visit
>>>>>>>>>> >
>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/8abb7704-ae60-4085-a7d7-0a8f7534e35dn%40googlegroups.com
>>>>>>>>>> > <
>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/8abb7704-ae60-4085-a7d7-0a8f7534e35dn%40googlegroups.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/lC9Z9VZXPdM/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/c67e637e-6eea-de85-1d43-e2d775424044%40mb0.org
>>>>>>>>>> .
>>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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/CADKwOTedhgWhxdRgiocwfWumghD5eBWe8AvL0HUmxN1pB-LUDA%40mail.gmail.com
>>>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/CADKwOTedhgWhxdRgiocwfWumghD5eBWe8AvL0HUmxN1pB-LUDA%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/lC9Z9VZXPdM/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/CAEkBMfGbr-1g2NgpZryQeFWMgDzEnwYTfTGMaorWBV34jgcELw%40mail.gmail.com
>>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/CAEkBMfGbr-1g2NgpZryQeFWMgDzEnwYTfTGMaorWBV34jgcELw%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/lC9Z9VZXPdM/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/3962fea5-0b98-47e9-af2f-94ffab9452fan%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/3962fea5-0b98-47e9-af2f-94ffab9452fan%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/CADKwOTfCnd%3DUawQsjAw5bTbjy49K3xePZX1VSv5TBM8kJ%2B90HA%40mail.gmail.com.

Reply via email to