>>while in other languages, like C the programmer has a great deal of freedom that would lead in most cases to slow the code.
You understand that the point of 'C' was to make a machine-portable assembler language? Like with non-portable assemblers, it's easy to do dumb / slow things with it. The beauty comes in pairing it with native assembler pieces, using hotspotting to figure out where that might be productive.
FWIW, 'C' came very late to the IBM mainframe world as it's centered on stack framing - and something called Ratfor (rational fortran) that compiled an Algol-like syntax into Fortran) long preceded it.
Agreed on Fortran's arrays making it a good candidate for multidimensional processing. C works fine for that as well, but you really have to know what you're doing.