DIY kit computer goes Forth against Braben's RaspberryPi
Are the 80s format wars back?
Elite developer David Braben's RaspberryPi may have generated headlines aplenty, but it's not the first 1980s-style teach-yourself-programming gadget, one Reg reader insists.
Step forward Julian Skidmore, developer and seller of FIGnition, a 20 quid DIY "retro computer built with modern parts... designed to be built by its users, coded - it boots into its programming language - and understood".
"The key thing to producing programmers in kids is that you need ridiculously simple computers, with Kilobytes of memory and relatively modest performance," says Skidmore.
"It's simplicity that produces understanding, ability and excitement."
Simplicity? Try 8KB of memory, 384KB of Flash storage and an Atmel AVR 8-bit microcontroller as a CPU.
Keyboard? That 2 x 4 array of buttons on the right-hand side are your eight data-entry keys.
FIGnition is a kit computer comprising motherboard and solder-yourself components. There's a USB port for power, and a phone-style PAL video output so it can be hooked up to a telly as a monitor.
Just like it used to be...
Skidmore promises to open up the hardware at the end of the month for folk who really want to do it themselves, though he's selling kits too.
Read all the details at the FIGnition website. ®
FIGnition is not capable of very advanced languages, so BASIC would be a reasonable choice here, but RaspberryPI has much more power and memory, so you can run full-scale languages. The suggested Python is not a bad idea, but in spite of it being fairly easy to approach, it is also very difficult to find errors in programs.
I would prefer a language designed specifically for teaching, which would have the following properties:
- An easy-to-understand model of computation. This rules out, for example, OO languages and scripting languages with strange scope rules.
- Support for case-based programming, i.e., pattern matching on structured data.
- Read/write access to a screen buffer with primitives for reading/writing rectangular areas of the screen and for drawing simple figures such as lines, circles, polygons, flood-fills etc. Much like BBC Basic. Support for scroll in four directions.
- A primitie soundtrack datatype and an interruptable queue of sound effects that would support multiple concurrent sounds. So you, for example, can start a music track, add sound effects on top of this and interrupt the music when something happens.
- Primitives for reading/writing bitmaps and sounds in many different formats (PNG, JPEG, MP3, ...).
- Automatic memory management (garbage collection).
I specifically don't want a language where a lot happens "under the hood" that is not easily understood. Scratch and similar languages that have mechanisms for animation and collision detection remove control and understanding of what actually happens.
Python?! Your kids will beg you to by them a real language
Any language where whitespace is significant is a no-no for children. Imagine explaining to an 8-year-old why their program didn't work because of the lack of invisible stuff at the start of a line.
I started my kids at six by helping them take an old computer apart and showing them what each part did, and explaining why computers are useless without instructions.
Around 8 they started playing with Scratch, getting the cutesy cat thing to move around. They learnt that there was this thing called Java under the covers, but that was it. The most important lesson you can teach a child about a computer is that there are _always_ things under the covers, and to really master computing requires a little bit of knowledge of what's going on down below.
Now they're 11 they watch as I program and sometimes roll their own. I don't fix their bugs, but I provide hints sometimes. We're also talking about how programmers need to manage the computer's resources, and code efficiency (at a very high level: eg "if you had to search your room for a sock, what would be the fastest way to do it?" leads on to a discussion of why some search algorithms are faster than others)
It may all be too late. My language of choice for quick jobs is Perl. I've probably scarred them for life.
Make sure you remove the TAB key from their keyboard first
Python - easy to get started, no complex IDE needed. SImple programs are very simple - there is no boiler plate header stuff. Has built in very good help on all the commands.
You can use it for procedural, object orientated and function (sort of) programming.
And you can write real world apps with it.
And there are lots of free, learn programming with python books