If I were teaching high school students I'd probably start with HTML and Javascript.<p>I think Javascript is a great intro language, you can start really simple (alert("hello!")) and dive deeper into some pretty complex programming without leaving Firefox/Firebug. Plus webapps are very accessible for High School students.<p>For CS students its really hard. Dynamic languages are nice because it simplifies much of the work you deal with in Java and C.  But eventually you'll need to know what static typing is and how to allocate memory.  I like starting simply and building on that base as opposed to diving in the deep end.<p>My college's first programming language was C++.  Spent the first few weeks understanding bits and bytes and core programming concepts w/o even writing much code.  It seemed overly complex for an intro, but maybe it was poor instruction.