> I really have to disagree with your statement about VB.  We are talking
> about teaching Freshmen, not Juniors or Seniors.  ....

But what about the bad habits they pick up?  I see Ada written by former
C people with no range constraints.  They've learned that when you need a
number, you say int, float, or double.  So they will never use
"... is range 1 .. 100;"  unless the instructor forces them to.  Similarly,
I've debugged Pascal written by Fortran folks that said

  CONST
     Depth_Mode = 1;
     Distance_Mode = 2;
  ...
     if Mode = Depth_Mode ...
     (or even 'if Mode = 1 ...')
  ...

> about teaching Freshmen, not Juniors or Seniors.  In a very practical
> sense, if you try to tell Freshmen how great generics, inheritance, etc.,
> are, it's likely that those who don't quit after the first two weeks .....

Sure.  But you start out with the easy stuff and add to it as you go
along.

On the other hand, if you teach VB (or even C) first, and constantly point
out its deficiencies as you go along, maybe that's not so bad.  If the
student learns what's great about a range constraint WHILE learning how to
declare a C int ....

But what if you taught both together?  A little Ada, and the corresponding
features of (language X) at the same time, with a brief discussion of the
pros and cons of each might help avoid the tendency to always want to
write in your first language (and to act like it when writing in other
languages).