I agree with everything you've said. I would like to see something a little better than C for a standardized approach to heterogeneous computing that lends itself to elegant datastructures AND massive concurrency across GPUs and CPUs.
Hardware will continue to evolve and since things can't stay the same and just get faster, things are going to get weirder. With that will come similarly weird low level APIs and c style language implementations (cuda, opencl, vulkan, spirv)
The bad is not C but the sloppy way developers use it. As with assembler, you pay for your absolute power with the respective amount of responsibility.
I still hold out hope that Rust, or some successor, will hit the sweet spot you mentioned.
Hardware will continue to evolve and since things can't stay the same and just get faster, things are going to get weirder. With that will come similarly weird low level APIs and c style language implementations (cuda, opencl, vulkan, spirv)