There are other threads on this subject of the "best" programming language for teaching kids, but, I wanted to point a few things out in response to specific previous statements.
The creators of Unix and C are on record saying that, if they had known that those technologies would ever even be considered for use in real-world, mission-critical systems and applications, they never would have let them get beyond the walls of Bell Labs. They were intended for computer science research, and nothing more. As some have pointed out, C is just a general-purpose assembly language that is readily ported to any hardware by customizing a few hundred lines of assembly code specific to the target architecture to establish the lowest-level memory and file management functionality. The compiler compiles itself and the OS after that. This is not something that should be used for an introduction to computing for adult novices, much less child novices.
Ada is not a niche language, and I'm going to go into some detail here because so few computing professionals actually know much about it. It currently ensures that most of the tens of thousands of airliners tens of thousands of feet over our thick little skulls every day stay up there, and that military weapons systems get their jobs done in actual life-and-death circumstances. Companies like Boeing, General Electric, and many others use Ada because it's the only way that they've been able to achieve the Software Engineering Institute's (SEI) Capability Maturity Model (CMM) Level 5 (the highest), which ensures repeatable, reliable, completely understood and fully-documented code that gets jobs done, and fails gracefully, in the rare instances where it ever fails. It was designed from the beginning with exception handling foremost, among other iron-clad strengths such as the strongest type-enforcement on the beat, bullet-proof synchronization of processes (it was also designed from the ground up for multi-processor systems decades before multiple cores became all the rage), solid memory management, etc.
Its syntax descends from Algol through Pascal, Modula, and other strongly-typed, structured procedural programming languages (it doesn't precede them, as stated above), although it has been extended over the past couple of decades to include very solid object-oriented, real-time, and many other features. Some have misinterpreted these features as making the language bloated and too big for anyone to master - such people have never tried to actually use Ada - you only need to learn the features required for the task at hand in order to make use of it. In fact, this was done in order to make the largest number of programmers familiar with other programming languages, architectures, and styles to be productive in Ada with the minimum of ramp-up time. Perhaps the biggest benefit of Ada is that there is only one correct version of it - compilers, linkers, and all other tools used to develop and build software with it must pass mathematically-rigorous compliance tests. Ironically, this was pioneered in AT&T Unix System V, but, was never enforced, and the variations of C and C++ compilers/etc., and *n*x OSes that have proliferated is the exact opposite of what has been achieved with Ada. However, Ada is not suited for introducing kids to computing, either - not because the kids couldn't handle it, but, because the teachers and most software "professionals" couldn't.
I've posted elsewhere in the forum that only about 15% of the effort expended on any project is spent writing code, with the rest split between requirements analysis and specification, high and low level design, test case development and execution, debugging, documentation, and corrective and enhancement maintenance. The choice of the programming language is therefore not the most important factor in successful software development - there are many others that must be considered. What these factors demonstrate is that there are a lot of things that kids can (and should) learn and that programming (implementation) is just one of them, and most of them are not even technical in nature. This is very good news, because it widens the scope of skills and interests needed for software projects to include those needed for success in any kind of project. Kids can (and should) participate in software development, not just programming/implementation, such that their individual interests and natural skills can each contribute to the synergy of teamwork (the whole is greater than the sum of its parts).
I would also recommend Python and Java as the most likely usual suspects that should be considered to be used for teaching actual programming/implementation. There are many educational subsets that have been built over the years, which I've listed with brief descriptions at:
http://elinux.org/RPi_Educatio....._languagesAs for the disdain that some may have for kids gravitating toward playing games and, by extension, developing game software, it should be recalled that games have served to push the envelope in computing at least as much as anything else. Military gaming and simulation is just another side of the same coin as gaming and virtual environments used for entertainment purposes, and have been another major force (not to mention significant source of funding) in shaping computing technology research and development. Let the games begin!