Because reading or especially writing a value outside the bounds of an array may cause the program to malfunction or crash or enable security vulnerabilities (see buffer overflow), index checking is a part of many high-level languages.
Many years later we asked our customers whether they wished us to provide an option to switch off these checks in the interest of efficiency on production runs.
Unanimously, they urged us not to—they already knew how frequently subscript errors occur on production runs where failure to detect them could be disastrous.
In any respectable branch of engineering, failure to observe such elementary precautions would have long been against the law.Mainstream languages that enforce run time checking include Ada, C#, Haskell, Java, JavaScript, Lisp, PHP, Python, Ruby, Rust, and Visual Basic.
C# also supports unsafe regions: sections of code that (among other things) temporarily suspend bounds checking to raise efficiency.
Research has been underway since at least 2005 regarding methods to use x86's built-in virtual memory management unit to ensure safety of array and buffer accesses.