Browsing the internet you'll find several possibilities using
Scratch or programming environments following similar approaches to interface microcontrollers.
This list makes no claim to be complete - I would be very happy finding out more possibilites...
Scratch and BYOB/Snap!
All Scratch versions and BYOB/Snap! do not program the Arduino directly but use it as a sensor and control extension. This is realised with a kind of "listener" program that has to be downloaded to the Arduino; the computer running Scratch controls the remotely connected Arduino through a permanent connection. Thus a standalone operation of the Arduino is not possible with Scratch or BYOB/Snap!.
Scratch 2.0
Scratch 2.0 can be extendend as described in
http://scratch.mit.edu/discuss/topic/13740/ and
https://github.com/MrYsLab/S2A . This project was recently updated from a CodeShield extension to a direct Arduino extension (both codes can be found on this github repository) and Alan Yorinks has done an amazing job - not to forget the excellent documentation.
The described concept using an Arduino JSON client presents in my opinion a very clean approach, as well as the rest of the employed software stack.
BYOB/Snap!
BYOB/Snap! implements interesting programming concepts and adopts the underlying principles of Scratch at the same time; it seems to support older learners (14-20) by adding named procedures (thus
recursion), procedures as data (thus higher order functions) structured
lists, and sprites as first class objects with inheritance.
To my knowledge interfaching with the Arduino platform is not directly supported, whereas at least some extensions exist (e.g.
LEGO NXT,
Parallax S2) which should allow to create a connection to the Arduino world with reasonable effort.
S4A - Scratch for Arduino
S4A was developped to use the built in PicoBoard protocol of Scratch 1.4. It seems it comes as a kind of "turnkey" solution for controlling an Arduino with Scratch. The available output and input channels as well as their assigned purpose (motors, servos, sensors) might be regarded as a slight disadvantage. IMHO this is more than compensated through the available workshop materials providing an easy access to the use and control of Arduino's possibilities. For my impression a good starting point.
Minibloq
Minibloq is designed to provide a graphical programming environment for physical computing and robots. From my opinion the approach is not as stringent as it is implemented in Scratch, but it shows graphical programming and conventional text based program code in parallel, and hence might facilitate the transition.
Minibloq is a sister project of
Multiplo, an open source physical computing / robotics platform.
Modkit
Modkit seems not to be a public available programming tool as it requires a 50$/year membership with the "Alpha Club". From the impression you get from the website, it might be worth the invest....
ArduBlock
The concept of ArduBlock seems to enable the programmer creating sketches through graphical elements, thus provides the possibillity for standalone Arduino operation.
On first sight it allows to lower the hurdle for unexperiences programmers in directly accessing all features of the Arduino. Probably not my first choice for my son, but I will surely follow the evolution of this project as it might present a second or third step towards "normal" (text based) programming.