Ask HN: First programming language for teaching programming to children?
I have a two-year-old daughter and I've decided to teach her programming when she gets older. The two languages I've considered are Scheme, for its simplicity and functional focus, and Smalltalk, for its solid grounding in OO. Have any of you taught programming to children, and what language did you use? And incidentally, how old was the child when you started teaching?
7 comments
[ 2.1 ms ] story [ 28.0 ms ] threadThis Google search covers the history http://www.google.co.uk/search?q=first+programming+language+... but the very best of luck with the lessons.
Here's just one: http://news.ycombinator.com/item?id=1663784
With things like Scratch, Alice and Logo, are you really contemplating teaching a young child Scheme? Or Smalltalk?
Most children I've met can't balance parentheses correctly, the syntax requirements are horrendous.
There must be a better way.
In my, heavily inexperienced, opinion, you'd need to start a child off something more concrete they could immediately the see the benefits of. Children typically have shorter attention spans, and need something that they can run with quickly. They are usually not of the mind frame that says "This is difficult now, but some day i'll be glad I know it!". More often, it's "This is fun to play around with, I wonder how far I can take things?". You'd also want to start her off with something she doesn't need a lot of hard work to hit the ground running with.
Take for example Javascript. You could teach programming basics, such as variables and basic algebra, string manipulation including the need to escape certain text, etc. in an environment she could immediately begin to grasp the changes of. Just pop open a javascript console on any webpage in any modern browser, and she has an interactive environment where she can play, learn, and begin to see the effects of her work right away, in a very concrete fashion. Sure, she'll most likely just be breaking a webpage at first, but she'll get to see immediate results. She also wont need to struggle to learn a convoluted IDE, nor the more arcane facets of linking libraries and external resources - but she would begin to understand what they are, and be given a simple example of how they're used and why (external scripts libraries, ajax requests to load json)
Then once shes grasped how these things work, consider moving her onto something more abstract like Scheme. I would definitely say I wish I had more exposure to functional languages when I was learning programming, but my main issue was no one ever showed me real world examples of why you'd use them - it was always a boring, droll, academic venture into the subject. It lost me quickly, and only recently have I begun to try to get back into it. But this is only after I've spent many years developing in more OO languages, and begun to see others using functional approaches in real world ways.
Please keep us posted on what you ultimately decide to go with, and how it turns out (although I'm sure she has a few more years before you begin to introduce her to the wonderful world of development).
In the end I chose Python, it's easy to use, simple to understand and with IDLE you can get instant results.
Plus there are tons of resources if your girls get really interested.
Python gets my vote but dependant on how young they start then something using GUIs might be more interactive, ColinWright mentioned a few good ones.