constrained languages are easier to optimize

exposing raw pointers make the optimizer’s job horribly hard. high level languages can constrain your program, making more optimizations sound.