The descent to C
"the length of the array isn't stored in memory anywhere"<p>This is probably not true.  For arrays on the heap, the size (or an approximation e.g. number of pages the array spans) would have to be stored somewhere in order for the array to be deallocated.  For arrays on the stack, the size is either known at compile time, or else it was at least available when the array was allocated and could be kept in the stack frame (and in many cases would be kept in the frame anyway).<p>Not only that, but the common pattern of passing a pointer to an array and its length as arguments to a function implies that most of the time C programmers keep the length of the array stored somewhere.  You are really talking about niche cases where the length of the array is truly and inherently unavailable.<p>Really this has more to do with the fact that C is meant to do as little as possible for programmers -- it is supposed to be "close to the machine."