I help teach an after-school programming class for middle schoolers. Last year, we tried using Python. While some students got the hang of it, many seemed confused and demotivated.
This year, I wrote a simple TinyBASIC REPL from scratch[1], aiming to produce the simplest subset of the language that made it possible to do interesting things and illustrate concepts like looping, branching, variables, etc. It was a big hit with the kids, and the whole class has been extremely engaged. As a next step, I've built a Logo[2] implementation so that we can move into writing modular, reusable procedures and play with graphics.
Learning to program is almost entirely orthogonal to learning a language, and I think that starting with very small "toy" languages is a good way to approach teaching core concepts without getting lost in the quirks and complex features of popular "real" languages. BASIC is small, Python will never be.
[1]https://github.com/JohnEarnest/Mako/tree/master/demos/Masica
[2]https://github.com/JohnEarnest/Mako/tree/master/demos/LokoI've always felt that it's hard to go against Logo. When I was a kid, there was a direct connection between what I did on the keyboard and what the turtle would do.
That language changes your brain, not your data. Thus, it is one of the most important languages.
http://en.wikipedia.org/wiki/One_Laptop_per_Child
Pippy https://www.youtube.com/watch?v=E7aQxYuKJ18
Turtle Art https://www.youtube.com/watch?v=i2MblcmwWo8But Python is a fine programming language for beginners. A Raspberry-pi would be another good teaching tool. Processing might be interesting to some kids as well...
But there is no new Basic, no new Logo, no new Oregon Trail, no new Math Blasters. Those things belong to a different era.
That simply doesn't make sense. You could make that argument against every single programming language.
Because it was simple and the rest was very complex. In fact, only assembly language for some CPUs was as simple as basic (now, it's not really the case anymore, although asm basics are simple, stuff often gets complicated with special registers and special opcodes doing magic)
Many languages today as simple and relatively sane, like, say "python" ;-) (now the other reason why I like python is because while you don't feel limited with it, it _forces_ people to code half readable, half decent stuff. They got a good balance)
[0]: http://smallbasic.com/ (Microsoft SmallBASIC)
[1]: http://smallbasic.sourceforge.net/ (SmallBASIC - One more basic)
Last year I did a small project with Excel/VBA and I realized VBA is even more difficult than C#. String manipulation is overly complex and nearly everything seems really difficult.
Cmd-Opt-J[0]. While easy to get to, it's not the same as being forced into a REPL every time you use your computer; you still have to know it's there, lessening the temptation to jump right in and break things.
[0] or insert browser/platform appropriate shortcut for JS console/debugger here
But were it now for the REPL, I would likely not be a programmer today.
It's even got the "nastiness" factor down. :-)
We're also starting to see things like Snap written in pure JavaScript/HTML5:
I'm pretty language agnostic, but I'll admit I've briefly fantasized about an ECMAScriptish language that shared all it's feature, down to the object model, weird hybrid half FP/OO and prototypical inheritance, etc, plus some of the propose features and other cool junk like clean macro support, operator overloading, etc, and squared up some of the crazier stuff like weird definitions of truthiness, and looser type coercion.
Throw in a way to set up bindings, GUI toolkit or whatever, and a way to build distributable standalone binaries, and I'd use that as my go to language, esp to prototype and hack out ideas.
It's a fun way to just dump ideas and a few changes would make it a great all-round language worth favouring.