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?
I can appreciate the idea of starting with a more functional language like scheme, although maybe not something as far out of the modern lime-light as smalltalk - despite how historically important it is.
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).
Not sure when you plan to start her on programming but I just started my girls on CodeAcademy (I'm not affiliated) because its super easy, teaches by doing, and there's gamification/rep system in place. I'm following along with them. Personally, I wouldn't want to choose a language for them to learn, rather, get the principles/fundamentals of coding and let them explore languages from there.
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).