It should be consistent across programming languages, regardless of whether they are low or high level, otherwise it'll be a recipe for confusion amongst programmers who use a variety of languages. The underlying memory allocation is zero-based, so it makes sense to leave it that way.
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
I wouldn't let CG touch my Abacus!
When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is.
This used to be possible in the "good" old days. You could use UBound and LBound to find the array boundaries. You still can, but the lower boundary will of course always be 0.
I totally agree with you that this is nasty, and it's a good thing you can't do it anymore. Saves you a whole lot of invalid index exceptions.
I'm not heavy - I'm KIDNAP RESISTANT... ----- Don't tell my folks I'm a computer programmer - They think I'm a piano player in a cat house... ----- Da mihi sis crustum Etruscum cum omnibus in eo! ----- Everybody is ignorant, only on different subjects - Will Rogers, September 7, 1924
Hey ... we are talking about "high level languages" not those "evoluted assemblers" like C and C++!!
y=v[x] is an expression extracting a value for y corresponding to a discrete value of x using the v table.
The data structure shouldn't care, and should be up to the compiler to decide to use a plain array, and array with some index elaboration, a dictionary (or <map> in C++ lexicon), a "sparse matrix", a skip-list or whatever better suits the way data are stored, walked and accessed.
Otherwise, whats the meaning of "high level" ??
I just was meaning another thing: I give you a box of pencils, and i want to know how many of them Are in the box.
How do you country them? 01234.... Or 12345.... ??
Are you the first child of your parents, or just the zeroth?
AFTER you were born the have 1 child (except you are a twin ...)
Good example. So what the hell child represents ?
My parents have three children.
Let them be child, child, child, and the array size to be 3, so that I can be the "first" and not the 0th
(Yes: the array size was 0 when they did not have children yet, and  was meaningless).
We are speaking about high level languages. Don't think in C++! An "index" is not necessarily a "counter". Starting at 0 or at 1 is a matter of context. Not something that is "always good" or "always bad"... You didn't demonstrate anything.
Generally an array index is not more than the OFFSET from the start of the
array, and the count is the length
Wrong. A C array index is not more than the OFFSET from the start of the
array, and the count is the length. (C array, not generally).
But the question was another. "Should in high level programming language ..."
So, first, before teaching me the C language read carefolly the question (including the puctuation), than define:
1) What is an "high level language"? Is it ASM? C? C++? D? LISP? English? TNPL(aka "the new programming language": I just inventing it right now?)
2) What is an "array"? a "bouch of continguos memory holding identical objects"? a "set of identical object identifyed by an index"? a "set of similar objects identifyed by a key"?
3) What is the behavior of elements and indexes respect to insertion removal? Shold the indexes remain contiguous? Shuold them remain stable?
If you think to a well specific language (like C) every of the above question has an exact precise ansewr.
If you are designing something on a higer abstraction level ... all of those answers can be true. Of course, you'll come to different implementations. Sometimes even not based on C arrays.