Programming for four-year-olds – No assembler required
economist.com
economist.com
Secondly, they need to be taught an active and inquisitive posture towards technology. Most devices today (especially tablets and phones) force the user into a dependent and passive mode of interaction in which it is impossible to know how things work. Accordingly, I think it may be destructive for children to spend too much time with these devices.
The KIBO system described in the article seems like a great thing to play with to build a basic understanding of symbolic control flow, although it too is opaque. I think 4 is too young to spend much time staring at a screen, but by the time a child is 8-10, I think it is better to have an admittedly difficult to use Linux workstation or an old computer running FreeDOS. Also good are the many simple devices arising out of the "maker" movement.
I would really like to give my kids a simple device that could be programmed from the hardware up in something like Forth. Something like an HP calculator, but with a command line and options to connect to other devices would be great.
Just curious, what about Forth makes it appealing as a first programming language for kids (or well-suited to hardware programming)?
Alternatives include Scheme and Python. One has a long history teaching people and the other is developing one. Python is one I recommended to someone's kid with good results not long ago. Closer to pseudo code as BASIC was while having quite a community and industrial-strength libraries.
And similar to what tumba said, I think you would do your kids (at that age) a much bigger favour simply by training their logical thinking skills and encouraging their curiosity. Those two skills will serve them in just about all areas of life, not only in programming.
Can you elaborate?
It's not clear to me why programming should necessarily be different.
(especially if we can get at the essence of the skills it's a matter of, as opposed to seeing it as a matter of preparing people for jobs as programmers.
One reason I say this is, as computing technology becomes more pervasive and mature, there ought to be broader scope for applying programming techniques, which mean that many more people will be using programming techniques in their work and day to day lives than just those working specifically as programmers).
Easy. First: name five jobs in which you absolutely do not need to be able to read or write. Found five? OK, can you name five in which you do not need to be able to program? What set took you longer to think of?
Secondly, you cannot program without being able to read and write. (OK, KIBO makes do without, but I'm talking about serious programming here.) In a way, programming is a subclass of writing. Usually, you write in order to pass information on to humans, when you're programming, you're simply changing the intended recipient to a computer. My argument is that if writing is the superclass of programming, writing could reasonably be considered to be more important.
> many more people will be using programming techniques in their work and day to day lives than just those working specifically as programmers
While I would agree with this, we have to be careful not to fall victim to the programmer's bias. Yes, the need for programming skills in the world around us is big and growing rapidly, but it is probably not as big as we as programmers tend to believe, for two psychological reasons that skew our perspective:
If all you have is a hammer, everything looks like a nail - and if you have a programmer's mindset, you will tend to approach (almost) all problems as if they were software problems. That's just human nature. Mathematicians try to solve problems mathematically, carpenters look for a practical solution, etc. (There's a good TED talk on that, unfortunately, I can't find it right now.) But it does mean that we think about software solutions when in fact, another approach might actually be better.
Apart from that, we also have a bias of association. As programmers we spend so much time with other computer people that we easily overestimate how many of us there are in the world - and thus, how important our occupation really is.
of course that's the case now, but that doesn't mean it always will be. And also, the value (to the person, or society) in learning something is not IMO simply a matter of whether it will help you getting a job where you need to do that thing.
> Secondly, you cannot program without being able to read and write. (OK, KIBO makes do without, but I'm talking about serious programming here.
if we're talking about kids, then the requirement for "serious programming" doesn't apply.
but in any case, I don't agree. I was responding to your earlier comment where you put reading, writing and arithmetic on the same level and programming should come after that. If you can't program until you can read and write then you can't do arithmetic until you can read and write -- i.e. i think that argument applies equally to maths and programming. Why can't you learn programming at the same time as reading and writing? Why can't it be part of learning those things? Just like reading books is part of them?
> we have to be careful not to fall victim to the programmer's bias. Yes, the need for programming skills in the world around us is big and growing rapidly, but it is probably not as big as we as programmers tend to believe, for two psychological reasons that skew our perspective...
have you heard the argument that "software is eating the world"? Yes there is the tendency for people to see "everything as a nail" but just stating that doesn't provide any actual argument against the notion that software, and the utility in being able to have programmatic control over the software, will be pervasive.
But a lot of friends with children ask me how to introduce their kids to computing at an early age. They often believe that learning a computer language would be like learning other languages, allowing for some 'bilingualism' early on. We all know that's not true.
I am not sure if introducing a child to computing languages is as important as introducing it to other things first. I would rather introduce it to music or another spoken language. That I assume would benefit it's brain more rather than using technology (probably already outdated) that will be certainly outdated by the time the child is at highschool level.
Specifically, I think that a lot of efforts to get kids into computers these days are too literal about it. The value of learning to think like a programmer is not exclusively in one's ability to write programs (though that's certainly a powerful and valuable skill), it's in one's ability to solve problems within constraints. I'd argue that computer literacy is an orthogonal skill. Given that, things that stimulate the brain in ways similar to programming (e.g. deep strategy games) will probably have orders of magnitude more success than the more literal approach of "teaching kids to program".
Props to the tool designers and the kids building stuff. I can't wait to see what the next leap in that category brings.
https://en.wikipedia.org/wiki/Mount_Kilimanjaro#Geology_and_...