My son is enthusiastically programming simple games in Scratch. However Scratch is a very simple programming environment (no subroutines even), and I can see that soon he is going to need to move on to something else.
Does anyone know of a good learning language that makes graphics easy but provides "real" programming features like data structures, functions, arrays and lists?
Bonus points if it runs under Linux (Ubuntu). An answer of the form "language Foo with library Bar" is also an option.
is QuickBasic still around? That's what I started with when I was like 7-8, and I was able to make full fledged games, etc. without any external libraries.
EDIT: check out this link about FreeBasic:
http://linux.about.com/b/2006/11/10/freebasic-open-source-alternative-to-quickbasic.htm
Take a look at Processing.
It's tour de force is graphics, animation, and visual manipulation. It runs under Linux, too.
I would suggest using CodingBat. Although CodingBat doesn't provide graphics, it does provide the "programming features" and straightforward practice involving strings, array, and logic. I think this website helps with developing the basic foundation behind programming.
Link: http://codingbat.com/
Here is an interesting microsoft project called Small Basic that is a good, simple, free programming environment for learning, based on BASIC.
No bonus points because of the lack of ubuntu, but a cool learning tool.