How do kids program today?
I have often wondered how people learn to program today.
In the old days we had Basic and Logo, but what do kids use
today? The old standbys are powerful enough to make something for the
web (assuming they even exist) and nothing else has a simple
development environment for children. Perhaps we need something new.
I was raised on AppleSoft Basic, built in to the firmware
on an aging Apple IIe (it was aging in 1983!). It was simple
enough for my 8 year old mind to grasp but powerful enough to hold
my fickle interest. At first I could make looping print's, which became animation when I discovered I could scroll lines of text at 15 times a second. Of course you understand that this was the days before Nintendo. Atari was the state of the art at the time so my ascii figures weren't too bad. Later I figured out the 40x40 graphics mode with 16 colors. Astounding to my childhood self. Then I picked up Logo. The world was at my finger tips!
But I'm getting away from the point. I learned to program, basic algorithmic thinking, by using simple tools built into my computer. With a few lines I could make a picture, add numbers, and print text. And I could see the patterns of structured programming forming below it. It wasn't until years later that I learned a real language like Pascal, C, or Java, but I was ready because of those late weekdays at the school library.
So what do kids have to use today? What programming language is simple enough, powerful enough, and also freely available for any child to learn it? Perhaps we need to invent one. But what should it do?
I think any language for the modern child should have the following features:
- Be freely available. Both in terms of cost and platform lock in. I would prefer something Java based, but it needn't be.
- Be sharable. Kids want to show off to their friends. This probably means saving to a web format of some kind (applets or flash?)
- Teach modern programming techniques. This means event driven
and OO programming.
- Be useful. Kids want to be able to do something. Make a game. Answer questions. Calculate their alebra homework. Just something.
- Be easy to be pretty. Kids like pretty things. They don't have the skill to use a modern GUI toolkit and the commandline just won't cut it. It must be easy to make pretty things.
Is this possible?