I was not talking about ON n GOTO ... I was talking about various "event handler" type routines, like ON PLAY or ON STRING. These only exist in GOTO/GOSUB versions.
Well, ON [event] really only exists in QBasic, you'll find that more modern structured BASIC variations handle events more sensibly (though you won't find ON PLAY and the like outside of QB) Of course, events aren't something that you teach to beginners unless you're teaching at a trade school. There, you likely aren't concerned about teaching a student to program as you are hoping they pick that up as you walk them through the "text book" so that they "know how to use [tool x]". Yuck. (Events come much later, long after they've written a few event loops already. Doing so otherwise is like expecting them to fully understand linked-lists because they've used the equivalent object in Java. [Madness!])
Well, why array isn't a type, then? It's a type everywhere else.
Hence my disclaimer. Arrays are collections of primitives of some type, but not really a type themselves (if that make sense) Think of them like arrays in C, where the identifier is just a pointer to some type, except that BASIC doesn't have pointers in the proper sense. (Wow, I've made this even less clear. Horray!) Anyhow, I can't speak to more modern structured BASICs where this feature may very well be present. (Even to ones I've used as this isn't something I'd be covering while still in BASIC.)
if the language cannot handle it, it's not good for much.
Well, the language can handle it, though it can be a bit messy (at least in older BASIC variations). Still, whatever limitations this puts on the users, it certainly doesn't limit the language so significantly that it's useless for the purpose that I'm proposing it be used for (as a beginners language).
Now, if the structured variation you're using supports records, making linked-lists isn't as nasty or illegible as it is in QB. Still, by the time I'm teaching about those structures, we've already moved past BASIC (to C, of course, the greatest language for teaching data structures!) Heh, if you think teaching linked-lists in BASIC would be bad, you should try doing it in Java! :)
Anyhow, if I get your meaning it's not that BASICs syntax is necessarily inconsistent -- only that it differs significantly from other structured languages? Well, I can't argue that.
Still, I haven't seen this as an impediment to learning other languages. Quite the contrary, in fact. A billion years ago when I tutored VAX assembly, I'd have students work out an assignment in unstructured BASIC first, then convert their solution to assembly. It was a remarkably effective technique which turned more than one students' grade around.
We we move to C, to keep with your examples, I've found that students find things like file handles obvious, having worked with the # thing in BASIC. The # system is great for learning -- it eliminates questions like "so if I print this to the screen, will I see what's in the file?" (#1 isn't obviously a variable, but it does clearly represent the open file, so the question never comes up. #1 is just "the first file opened" in their minds. Once we get to C, the idea of a file handle is obvious, again avoiding the question!)
Done right, most students pick-up C in a few days, once they've been introduced to the syntax. The details come as they need them, but it's not nearly the struggle it would be had we started with the language. (Why a struggle? Even in C there is too much "cruft" for the beginner -- that is, necessary code that the student has no hope of understanding for several weeks or months -- magic code, if you will. When they can understand everything they've typed, it's empowering. When they can't, it's disheartening.)
Anyhow, that's really one of the greatest advantages of BASIC as a beginners language. There isn't any "cruft" to get in the way, slow them down, or mock their understanding. They can do a lot with very little without sacrificing anything fundamental. It's in BASIC that they can most easily learn how to "think like a programmer" and gain not only the skills, but the confidence that they need.