i for one dont know any C programmers that cant read basic but i know a lot of C programmers that dont know java.
For me, it was the other way round. as a C-flavour programmer, I easily read java, c++, c, j++, j#, c# as they are very similar. basic, on the other hand, looks long winded, messy and overly-simplistic. I guess you could say I find VB similar to legal documents - they are written in my native language of english, but use too many words (to cover all eventualities) and become very hard to follow.
I dont know if you intended to draw a distinction when you said "read basic" vs "know java" but the two are different concepts - the french people use (mostly) characters that I recognise from english so i can read their words, even if I dont know their language. I would expect that all C programmers can read java (than basic) even if they dont know java.
vbn is similarly powerful to c# but it may take time to shake off its "numpty language" stigma, and I attribute a part of that to the default setting of Option Strict = OFF. Many VB programmers would question why:
Dim x as Date = "#01-Jan-2006#"
would make C# programmers cry, because their background doesnt lend them to understand the notions of strong typing. If VBN shipped with Option Strict ON it would have simultaneously: upset a lot of developers who didnt know (or care) about the difference between a date and a string, and it would have made VBN more like the strongly typed, mission capable, mature OO language that it is.
I am required to work in VBN on major projects, for no good reason other than the VB6/VBA guys think they would have a hope of understanding the code if I left the company. They file anything other than VB syntax in the "too hard" bin and that's a flipside hold-back - humans that are unwilling to change.
Until little things like that change, it may always have that false stigma of being a noddy language for less capable programmers
J notes that there are syntactical differences between .Net flavours that would also stop everyone from adopting one or the other. The following loop structure is impossible to create nicely in vb:
for(string s = reader.ReadLine(); s != null; s= reader.ReadLine()){
if(s.Equals(""))
continue;
//more code, etc
}
you have to use a while and as many goto statements as exist continue statements.. it's just not nice!