This is a point I very much like. One of the benefits of more abstraction is that "sufficiently smart" compilers/interpreters can do a lot of reordering/optimizations at a lower level that would otherwise need to be (unsafely) done by hand.
I really like the Rust approach, but (I believe) it is impossible so have heap compacting at run time in practice and similar things.
There was here an article about SQL that pointed out how Oracle would give you estimates of run time for a query, choose the estimated best data structures and algorithms, and also switch on the fly if it realizes the query was taking to long. As another example of the kind of techniques that are possible only from a higher abstraction.
I really like the Rust approach, but (I believe) it is impossible so have heap compacting at run time in practice and similar things.
There was here an article about SQL that pointed out how Oracle would give you estimates of run time for a query, choose the estimated best data structures and algorithms, and also switch on the fly if it realizes the query was taking to long. As another example of the kind of techniques that are possible only from a higher abstraction.