Scratch is a computer language designed by the MIT Media Lab, where Seymour Papert and Marvin Minsky did their ground breaking work, and first released in 2007.
The language and its environment are free to download and distribute and works under Windows, Mac OS X or Linux (specifically Ubuntu). If you have ever used or played with a Lego Mindstorms kit then you will recognised the approach to the problem of making programming easier because Mindstorms' language was a forerunner of Scratch. There is also an hardware device that extends Scratch into the world of embedded programming - PicoBoard. You can even use Scratch with the Lego WeDo Robotics kits.
Scratch is a visual programming language - a real visual programming language, nothing to do with Visual Studio or any of Microsoft's uses of the term. You build a program by manipulating programing blocks on the screen. You "wire" the blocks up by placing them together and customise what they do by entering values into slots. Blocks have different colors and shapes and only fit together in fairly obvious ways thus reducing the syntax and grammar of the language to a visual metaphor - which is geek speak for "if the blocks don't fit then it's not meant to be". Programs are simply stacks of customized blocks.
The basic environment is inherently multi-threaded with different objects communicating by message passing - which is of course a natural environment for robotics. There are looping and conditional blocks but it really is an event-driven system.
As well as good documentation and books to get the beginner started, there is also an active community. Scratch programs are uploaded directly to the website and users can collaborate and interact as they learn. There are also design studio challenges to stimulate the creation of new projects. At the current moment the website is showing 1,061,687 projects, including many new installations of classic games which run in a browser window. Users can also post and swap sprites for use in other projects.
It is difficult to understand Scratch unless you have tried a similar visual language like Lego Mindstorms, but you can easily make up for the lack of a rounded childhood by downloading the system and trying it out. Just don't expect to be writing any code.
More info and downloads from:http://scratch.mit.edu/
Hello World! Computer Programming for Kids and Other Beginners
A Programmer's Guide to Scratch 2