42 karma · joined January 27, 2018
I grew up on a farm in the rural western US, and our few cattle lived in nice little fields like you’d imagine, but I’d occasionally go by intensive farms and you can see how they pack so many animals into such a small space that they spend their whole lives in. It’s so near but so far from all of us. And the reactions from people I know varies widely to this information or these sights.
I’m quite surprised it’s not called ToffeeScript though.
This is exactly what generics do. With e.g. a heap.Heap[uint32] the compiler knows the implementation and there’s no interface method call overhead.
In order for the compiler to do this optimization, it has to know that you don’t e.g. pass a *heap.Heap[uint32] to a function expecting *heap.Heap[uint64], so the type system is what allows it to optimize.
And on top of that, now the user also gets assurance at compile time that heap.Heap[uint32].Pop returns a uint32, preventing bugs from type confusion and also so you don’t have to add type assertions everywhere you use the heap.
So now heap, sort, etc. can benefit from this improved performance; users don’t have to write wrapper types and interface implementations just so their type can be sorted; and bugs are prevented at compile time.
For [1] I posted a reply. It’s true that there are overheads with some slice-returning routines but I explained how in the reply how I viewed the tradeoffs.
Though part of why they’re optimized and in the stdlib in the first place is because they’re such common patterns. So without them people would end up writing trivial, unperformant, custom versions. So now that more routines can be moved into the stdlib, they can benefit from optimization later.
(I’m not sure how much the maps routines specifically can be optimized, but stdlib routines routines can generally be more aggressive with unsafe or asm or being coupled to the runtime and its quirks, like bytes.Clone, strings.Builder, etc.)
And there are still plenty of ubiquitous patterns that have been worth including in the stdlib even if they’re usually just simple loops that aren’t very optimizable. Like strings.Index is an easy loop to write, but it comes up so often. Or strings.Cut is basically just an if-statement. But it makes code clearer about its intentions; and optimizations to these down the road benefit everyone.
It’s also true that maps.Keys and maps.Values allocate slices, and that you could avoid this with a loop, but strings.Split, bytes.Split, regexp.FindAll, os.ReadDir return slices and are still worthwhile as opposed to specialized iterators for each one. As with any code, you’re conscious of memory allocations where it counts, and optimize as needed.
In fact, now that generics make it possible, the Go team has discussed using iterators (https://github.com/golang/go/discussions/54245), which would benefit strings.Split even further in addition to all the other slice-returning functions.
So generally you have three options for those slice-returning functions:
- Custom inline loop for some of them. More verbose, will probably be naive and not benefit from stdlib optimizations. - Return a slice and iterate over it with a for loop. Creates allocations that could probably be avoided. - Create a customized iterator for that type. Unfortunately, you can’t really use an ordinary for loop, and extra custom iterators for each type. - Use generic iterators to benefit from the optimized functions and also avoid allocation overhead.
So part of the motivation is that now with generics there’s a variety of further optimizations available even to old functions like strings.Split and regexp.FindAll, in addition to opening up common patterns and optimizations for maps/slices/etc. to be included in the stdlib.
It pops up on /r/golang sometimes. I don’t think it gets taken super seriously but there’s usually at least someone bringing it up.
Of course I want sync.Map to use generics instead of interface{}. How could I not? And it’s less complex-looking than type-asserting everywhere.
Are there more bugs in the compiler? Is readability reduced, and having an effect on pace? Especially if adoption is so low to begin with? Is adoption actually so low, or just rising?
> This outcome seems at odds with findings from randomized controlled trials in clinical and population samples indicating that regular exercise can relieve symptoms in subclinical individuals and in patients diagnosed as having an anxiety or depressive disorder. To understand the different outcomes of both types of study, it is crucial to make a distinction between the effects of prescribed and externally monitored exercise in selected subgroups and the effects of voluntary leisure-time exercise at the population level. Only voluntary leisure-time exercise is influenced by genetic factors, whereas the other type of exercise is environment driven. The absence of causal effects of voluntary exercise on symptoms of anxiety and depression does not imply that manipulation of exercise cannot be used to change such symptoms. It means that a population association, cross-sectional or longitudinal, cannot be used to justify exercise as a treatment without an actual randomized controlled trial. The possible difference in the antidepressant effects of prescribed vs voluntary exercise is consistent with findings from a recent study suggesting that the therapeutic effects of exercise are nonspecific to exercise. The antidepressant effects of exercise may only occur if the exercise is monitored and part of a therapeutic program.
So it sounds like among twins, if one twin naturally exercises more by their own volition, that twin doesn't in general show less depression/anxiety than the other twin, which is evidence against exercise causally reducing depression/anxiety. However it sounds like it may still be that prescribed exercise as an intervention, beyond what an individual would naturally choose to do, and maybe only in conjunction with therapy, could still benefit an individual (and perhaps then only individuals with clinical symptoms).
This study also does help by showing how the associative inverse relationship between exercise and depression in the general population seems to be from genetics influencing exercise, and not the other way around, and the important of a randomized control trial on exercise as an intervention.
If you haven't encountered it, examine.com is a good resource; they curate research on supplements.
In the Human Effect Matrix, in the Anxiety entry, you can see a link to 3 double-blind, placebo controlled studies examining the effects of ashwagandha on anxiety: https://examine.com/rubric/effects/view/a42299063269c89b14ce...
As far as sourcing, you could look at consumerlab (paid subscription; they do independent testing of supplements).