I get the feeing you're looking at this through the specific lens of a programmer. Terraform isn't made for programmers - you'll miss all the flexibility a real language gives you. It's made for ops people who deal with wrangling a whole bunch of different types of systems with different API's and languages and just need some way to standardize the management of disparate systems, whatever counts as "infrastructure".
The state file thing gets a relatively large part of the hate but it's that and the limitations of the DSL that make the DAG possible and useful. Pulumi and all the other wrappers don't solve this, though they can plausibly solve the "closer to programming" problem and I'm sure that has a valid audience.
I guess what I'm saying is, I think it'll stick around and we will in fact settle on it for a large part of operational work. I'll add that I also think k8s should die a quiet death and _that_ will be seen in retrospect as a necessary step to something better.