It's an oft-quoted fact that while the generation that grew up in the 1980s and early '90s learned programming languages (on their BBC Micros at school, and their ZX Spectrums at home), today's nippers don't have the same opportunity.
And it's something that large numbers of people, from Codecademy to the Raspberry Pi foundation, are working to correct. The trouble is, programming languages have a steep learning curve, and the initial results - simple displays of text, calculations or very basic animations - aren't all that impressive. To begin with at least, staring at lines of text-only code doesn't exactly fire the imagination.
That's why one aspect of Project Spark, Microsoft Studios' new build-your-own-adventure game, really caught our attention: part of the game involves using a simple, intuitive visual programming language.
What is Project Spark
Project Spark is a free-to-play game along similar lines to Little BigPlanet, with the object being to build your own game world. You're given a 25-square-kilometre space in which to sculpt mountains, valleys, rivers and so on.
You then paint this landscape with textures, dot it with trees and populate it with characters, creating a home-made game within a set of parameters. It's designed to be easy to use, and there are some really nice touches, such as the Recording Studio, in which you use Kinect to record your voice and movements and then apply them to a character in a cutscene - you can use this feature to make your own animated machinima movies, too.
The coding comes in when you begin making the story, by applying 'Brains' to your character, or to an enemy or object in your gameworld. A Brain is what causes something to happen in the game, so if you put a flock of birds in your game, you can apply a Brain to them that makes them fly away when the player character approaches.
If you want a cutscene to happen as the player crosses a bridge, you apply a Brain to the bridge, and by using Brains you can cause NPCs to talk to or attack the character. Brains also determine how the player character behaves and what s/he can do. They're made up of blocks, which you string together using connectors like 'if - then', 'and' 'or', to turn them into rules - exactly as you do in any other programming language. Build them into longer strings and you can start to do fairly complex things, such as building a little AI for an end-of-level boss.