On Friday, 31 March 2017 09:02:09 UTC+3, Will Faught wrote:
>
> >Because it can also be implemented in other ways.
>
> Do you mean interface{} can be implemented in other ways? I couldn't make 
> out your meaning.
>

There are multiple ways of implementing "boxing generics" and 
"interface{}". Implying it has same perf. characteristics as interface{}, 
implies the same implementation as interface{}.
 

>
> >As said... there is a performance upside for some other approaches.
>
> The other approaches have downsides, or at least generation does. Compared 
> to using interface{} as is done now, boxing generics improves type safety 
> and expressiveness and has no performance regression. That's a clear net 
> win.
>

I meant other generics approaches (not alternatives).

Boxing generics adds complexity to the compiler, without solving some of 
the problems that generics intends to solve.
Mainly, implementing highly performant data-structures would still require 
code-generation/copy-paste.
And that is a pretty big downside.
 

>
> On Wednesday, March 29, 2017 at 9:18:01 PM UTC-7, Egon wrote:
>>
>> On Thursday, 30 March 2017 03:15:33 UTC+3, Will Faught wrote:
>>>
>>> Egon:
>>>
>>> >See 
>>> https://docs.google.com/document/d/1vrAy9gMpMoS3uaVphB32uVXX4pi-HnNjkMEgyAHX4N4/edit#heading=h.j8r1gvdb6qg9
>>>
>>> I don't see the Implicit Boxing section point out that this is what 
>>> happens now when you shoehorn everything into interface{}.
>>>
>>
>> Because it can also be implemented in other ways.
>>  
>>
>>> In this sense, I don't see a performance downside for boxing generics 
>>> compared to the current state of things.
>>>
>>
>> As said... there is a performance upside for some other approaches.
>>
>>
>>> >You can also use copy-paste, code-generation.
>>>
>>> I was referring to the downsides of copy/paste here: "You could have the 
>>> same opt-in performance tax in the form of bloated binaries/slow builds as 
>>> well, but lack of an official debugger right now is predicated on builds 
>>> being fast, so that seems like a no-go."
>>>
>>
>> The builds being fast are necessary for many things, mainly iterating on 
>> features, tests.
>>  
>>
>>>
>>> >It would be slower than copy-paste and generated approaches.
>>>
>>> It wouldn't be slower than interface{}, right?
>>>
>>
>> Yes.
>>  
>>
>>>
>>> >When generics are added, then they will be (almost) impossible to 
>>> avoid. So the opt-in "slow builds" isn't really opt-in unless you really 
>>> try...
>>>
>>> By opt-in, I meant the code we write ourselves. In shared code, it would 
>>> be no more impossible to avoid generics than interface{} is now, which 
>>> doesn't seem to have been a problem. If there's a case where the 
>>> performance is too slow, one could always copy/paste the code and remove 
>>> the generics from it.
>>>
>>
>> Copy-paste wouldn't remove generics used in the standard-library... i.e. 
>> it's hard to avoid the compile-time overhead. I agree, it's possible, but 
>> unlikely that anyone will do it.
>>  
>>
>>>
>>> On Tue, Mar 28, 2017 at 12:28 AM, Egon <egon...@gmail.com> wrote:
>>>
>>>> On Tuesday, 28 March 2017 07:56:57 UTC+3, Will Faught wrote:
>>>>>
>>>>> Something I've never seen addressed in the generics tradeoffs debate 
>>>>> (not saying it hasn't been, but I haven't see it personally)
>>>>>
>>>>
>>>> See 
>>>> https://docs.google.com/document/d/1vrAy9gMpMoS3uaVphB32uVXX4pi-HnNjkMEgyAHX4N4/edit#heading=h.j8r1gvdb6qg9
>>>>
>>>> is that without generics, you're forced to use interface{}
>>>>>
>>>>
>>>> You can also use copy-paste, code-generation.
>>>>  
>>>>
>>>>> which just boxes the values anyway. So you're already paying a 
>>>>> performance cost for type-agnostic code without generics. And if you 
>>>>> copy/paste code instead of boxing, you're just bloating the size of the 
>>>>> binary like generic templates would. It seems to me if boxing generics 
>>>>> was 
>>>>> added, there wouldn't be a downside:
>>>>>
>>>>
>>>> It would be slower than copy-paste and generated approaches.
>>>>  
>>>>
>>>>> if you didn't want to pay the performance cost of boxing generics, 
>>>>> then don't use generics; if you can pay the cost, then use them, and it 
>>>>> won't perform any worse than it would now with interface{}, and perhaps 
>>>>> could perform even better, depending on the semantics and implementation. 
>>>>> You could have the same opt-in performance tax in the form of bloated 
>>>>> binaries/slow builds as well,
>>>>>
>>>>
>>>> When generics are added, then they will be (almost) impossible to 
>>>> avoid. So the opt-in "slow builds" isn't really opt-in unless you really 
>>>> try...
>>>>  
>>>>
>>>>> but lack of an official debugger right now is predicated on builds 
>>>>> being fast, so that seems like a no-go.
>>>>>
>>>>> On Friday, March 24, 2017 at 12:10:08 PM UTC-7, Mandolyte wrote:
>>>>>>
>>>>>> The recent survey reveled that generics was thing that would improve 
>>>>>> Go the most. But at 16%, the responses were rather spread out and only 
>>>>>> 1/3 
>>>>>> seemed to think that Go needed any improvement at all - see link #1. I 
>>>>>> think most will concede that generics would help development of 
>>>>>> algorithms, 
>>>>>> libraries, and frameworks. So in the spirit of friendly rivalry, here is 
>>>>>> a 
>>>>>> list of algorithms developed for Swift:
>>>>>>
>>>>>> https://github.com/raywenderlich/swift-algorithm-club
>>>>>>
>>>>>> As you might guess, it is chock-full of generics. Yeah, I'm a little 
>>>>>> envious. :-) enjoy...
>>>>>>
>>>>>>
>>>>>>
>>>>>> #1 https://blog.golang.org/survey2016-results
>>>>>>
>>>>> -- 
>>>> 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/VbWfF865C3s/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> golang-nuts...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to