I like both the ideas of 100r and of this rebuttal. I think much of this comes down to a fundamental misunderstanding, namely that code is the level at which we understand something. Rather, when we build software, we build a theory [1]. So what we really need are tools for building theories. That makes it possible then to take high-level abstractions, express something in them, and then reason about how these high-level abstractions can be formulated using low-level abstractions (but abstractions nonetheless). This makes it possible to play with your creation at any level and make software that is both correct and incredibly fast. It is the only scaleable way to achieve negative-cost abstractions. Rust is not much better than C here, as both just fix you to a certain level of abstraction.
[1] https://news.ycombinator.com/item?id=10833278