Language for teaching basic programming I'm interesting in teaching programming to middle school students.  I'd like a programming language with the following criteria:


Simple - pared down to the absolute minimum needed to support sophisticated programming without too much code.  As such, for this language, I'm not interested in pointers and am weary of object-orientation (although functions are good).
Powerful - I'd like to be able to program 21st-century elements, including graphics, networking, and distributed processing.
Debuggable - I'd like an elegant Integrated Development Environment with a human-readable debugger (i.e. not some strange error message with a stack trace, but a clear explanation that an average middle school student can use to determine what is wrong with the code).


The standard programming languages (C,C++,C#,Java) fail the first criterion.  Basic programming languages like Scratch fail the second (and possibly third) criterion.
Scripting languages (perl, python, php) fail the last criterion.

I'd like to know if someone knows of such a beast, before I sit down to make it up myself.
You should perhaps look into Racket (formally known as Scheme, a derivation of Lisp). It's the language taught to first year CS students at my University. Since it's a functional programming language, the syntax and concepts are quite simple compared to C/C++, there are several libraries that can do some basic drawing or networking related things, and Dr. Racket as several debugging features... including a Stepper (i.e it will show and perform one substitution at a time when you click the "next" button). I think that it may be worth looking into: http://racket-lang.org/. It has several other features that you may like, such as teaching modules (beginner, intermediate, advanced, full student levels) and pretty good documentation and examples. The book: How To Design Program (http://www.htdp.org) is a great teaching reference for this language which has a few nice examples using some of the libraries I mentioned above.