Earlier quoted context omitted.
> I think that's because you're considering people who are already programming in Go um I talk to a lot of programmers that don't use Go. Most that don't use it decide not to use it because of either the type system ("it's not safe/expressive enough") or the garbage collector. I've never talked to someone that said "Go is technically good and I think it would be a good tool but I won't use it because of Google".
That's fair. I only made that assumption because you specifically said "I have never encountered a Go programmer in real life that is actually mad about this"
Ian Lance Taylor's Response to “Go Is Google's Language”
341–346 of 346 posts
Re: Ian Lance Taylor's Response to “Go Is Google's Language”
#342Earlier quoted context omitted.
So you "only" have to make significant, error prone (by using unsafe) code changes as opposed to tuning a couple of parameters for the GC to account for a different workload? Again, this shows the superiority of the JVM here. And the same approaches can be done in Java (e.g. self-managed off heap allocations), even more-so when they introduce value types.
Object pools are really easy. Unsafe is only for extreme cases. Some cache libraries use it. You don't have to code it yourself. Yes this is better than relying on the end user/admin to tune things. It is more predictable.
func main() {
n := 1
fmt.Println(n)
}
Object pooling won't help here.The new GCs on the JVM have very few parameters to tune, I think Shenandoah or ZGC have only two parameters to set up, can't get much simpler.
Re: Ian Lance Taylor's Response to “Go Is Google's Language”
#343Re: Ian Lance Taylor's Response to “Go Is Google's Language”
#344Earlier quoted context omitted.
Object pools are really easy. Unsafe is only for extreme cases. Some cache libraries use it. You don't have to code it yourself. Yes this is better than relying on the end user/admin to tune things. It is more predictable.
Managing allocations is way more than just object pooling. The following code in golang allocates "n" on the heap: func main() { n := 1 fmt.Println(n) } Object pooling won't help here. The new GCs on the JVM have very few parameters to tune, I think Shenandoah or ZGC have only two parameters to set up, can't get much simpler.
Escape analysis was just rewritten, and the objective is to handle this case more gracefully.
Re: Ian Lance Taylor's Response to “Go Is Google's Language”
#345Earlier quoted context omitted.
> If i name my implementation Glag it wont be Go, it will be Glag which just happens to be compatible with Go. Someone using my compiler wouldn't be using Go, they'd be using Glag. Exactly. You're making my point for me.
I'm not sure what point you are trying to make here.
You can fork Go, call it Glag, and you will have a language that is interoperable with Go. In fact, it is Go - you just changed the name. And this is perfectly OK to do.
If I take Spanish, rename it Bogolog, and start speaking Bogolog around Madrid, people will understand me. Why? Because it's the same language they're speaking, I just changed the name.
The language is not the name.
Re: Ian Lance Taylor's Response to “Go Is Google's Language”
#346Earlier quoted context omitted.
This is my biggest worry about the future of Go, that it will gain enough adoption at enterprise shops that we'll end up with another Java-esque ecosystem. So far it has seemed to have avoided that trap, but it is still a young language.
I am ... Quite surprised to see folks arguing that Java has "too many" features. For a log time the problem was we couldn't get ANY new language features through committee and so we were resorting to outrageous hacks.