So, I'm trying to teach my much younger cousin a little bit about programming. My initial thought was something like Scratch or Alice, but there were a few downsides to that.
Everyone seems to be really in to game programming and developing video games (because everyone loves playing video games, and as far as playing video games goes, playing your own can be the most rewarding) - but neither Alice nor Scratch seem to cater to game development
Alice and Scratch seem too childish, while I'm sure my cousin would enjoy dabbling in it, I think he'd quickly bore of it
I want a language that can be used to develop really cool stuff that will impress his friends. I remember writing BASIC back in the day and inviting all my friends over and showing off my creation, and I just feel like Alice and Scratch just don't appeal in the same way
I want a language that requires my cousin to write code. Now, this isn't just because I think typing code out is good preparation for other programming languages, but it's because it gives him an opportunity to actually practice typing, and maybe get used to some of the slightly more esoteric characters on the keyboard
Now, that's why I don't want to choose Alice or Scratch.
I also don't want to pick a language like C or Java, or even Python or Ruby for that matter. My cousin has already imparted to me that he enjoys playing video games and wants to make his own, and that he enjoys using computers. In my opinion, even a simple language like Python or Ruby simply takes too long to build cool stuff. Ideally, he'd sit down, spend around a day or two (or maybe even up to a week, but hopefully less than that) and have a working, 2-dimensional game. I'm not saying you can't do it in Python or Ruby, but I'm just saying it would be difficult for a first-time programmer. Plus, I don't want to bog him down with all the computer science stuff, as that can come later. I just want to help him create the spark, and then let him carry on with the rest of the fire.
I've looked at languages like Lua, and while it seems common in game programming, I'm not sure if it's the best pick - but if you guys think otherwise, please let me know.
I've also looked at a language like Blitz and it looks really promising (plus, I tried it out a few years ago, and it was really quite nice). The downside is that I have to pay, something I'm definitively against.
I've looked at SmallBasic, which seems promising and I'll continue looking at. But I haven't done much (in fact, I'm running the installer as I type this, so I'll report my thoughts on it shortly).
UPDATE: I gave SmallBasic a quick try and it seems intriguing, but it also seems quite different compared to some other languages - that's not a bad thing, but it just is an unusual. Out of the things I've looked at, Blitz is still my favorite, but I refuse to go there because of the cost.
But basically, what do you guys think of what I've said so far, and the languages I've looked at and do you know of any other, good alternatives?
UPDATE: Here's what I've chosen to do...
I've realized that while I would love to help my cousin, I can't be with him all the time, and I can't help him every time he needs help. So, I wanted to choose something that has a good documentation, a good community, and a good book he can follow.
Anyways, I've chosen Python and Pygame. Python is a language I'm fairly familiar with, plus I know there is a pretty good (and pretty large) community around Python. Furthermore, I know that the Python documentation is fairly complete and easy to navigate. Pygame also has an excellent documentation and set of tutorials. I'm also having him use/follow Invent Your Own Computer Games with Python, which seems like a very good book, I bought him a hard copy as a Christmas present, plus I know that his monitor isn't huge, and it would be inconvenient to constantly swap back between the text and the editor.
I think it should go well!
EDIT: I don't want to imply that my choice is final or that it is correct. I just think it's the best fit for this situation. I think each person looking to teach someone younger should browse the selection and find the best solution for the individual person, considering things like age, skill level, and interest.