> And yet you can optimize code down to the byte level where needed.
I can't see how this can be true in any real form if I can't completely turn off garbage collection. There's a lower bound to your ability to eke out additional perf when you have to take into account a stop-the-world garbage collector that you don't directly control.
I'm certainly not the best programmer around, but I tend to subscribe to the notion that perhaps complex and powerful exists because that complexity grants additional flexibility to those who know how to use it. (Hell, Rob Pike has admitted as much on his blog regarding why Go doesn't appeal to many people who are competent C++ programmers. Though he decided to frame it as if it's a negative, which I really appreciated.)
Go makes it easy (and common) enough to avoid spurious allocations and to reuse memory. The GC is often relied on about as much as explicit deallocation in C++, not as much as in functional or dynamic languages.
I can't see how this can be true in any real form if I can't completely turn off garbage collection. There's a lower bound to your ability to eke out additional perf when you have to take into account a stop-the-world garbage collector that you don't directly control.
I'm certainly not the best programmer around, but I tend to subscribe to the notion that perhaps complex and powerful exists because that complexity grants additional flexibility to those who know how to use it. (Hell, Rob Pike has admitted as much on his blog regarding why Go doesn't appeal to many people who are competent C++ programmers. Though he decided to frame it as if it's a negative, which I really appreciated.)