New language for kids: Scratch - Logo meets Squeak Smalltalk?

I had first heard of Scratch as being a candidate for MIT's $100 laptopfor the third world. It appears to be a mind-meld of Squeak Smalltalk (the implementation language), Microworld Logo and the Lego Mindstorm's visual programming environment.

Here is an early paper on the language and here is the (even earlier) proposal.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Scratch has been released.

Scratch. Visual programming for kids? It's amazingly well put together. Some of the control structures are a bit clumsy, but otherwise, my eight year old son is already cranking out little "event driven" animations.

No abstraction?

I agree that scratch is really neat, particularly for really young kids (my five year old is starting to play with it very preliminarily). But the odd thing about it is that there are, as far as I can tell, no abstraction mechanisms. In particular, there are no functions or procedures in sight. That greatly limits how far one can take a system like this, and seems like something that should be added for later versions.

There are some abstractions...

Depending on what you mean by "abstractions"...

Scratch offers a fairly small canvas (literally a small section of screen realestate) upon which to do things. Programming Scratch is about doing interesting things with that canvas. There isn't much support for text (no text entry dialogs) and you are right, there are no functions/procedures (code reuse). Instead, for each "agent" (object) you have code "chunks/modules" you can drag and drop between scripts.

Yes, there are abstractions. There is data encapsulation, autonomous "agents", message passing and concurrency. Each agent (sprite) is autonomous, may have its own (non global) variables, may be duplicated, can send/receive messages and execute scripts in response to events.

In some respects it reminds me of StarLogo.

Build a block

The scratch team are apparently planning to add some form of procedure definition mechanism, where new procedures are realised as new blocks, as per the Build a block (procedures) discussion in the scratch forum. Apparently an earlier version of scratch had procedure definitions, but in a form that confused young users.


This is great news, thanks for letting us know! My wife taught a one-week class for 10-year-olds last summer using Scratch, and it was an absolute blast. The lack of any real abstractions was definitely a concern. For a one-week class at that age, there was plenty to cover in any case, but it would be frustrating to have to switch tools so quickly, for either a longer class or a follow-up. To give the students some idea of the next steps in programming, she tried to motivate the idea of procedural abstraction, but it would be so nice for the tool to support it.

Not news

Just to make clear, this is not any kind of announcement, just a year-old request for comments by the scratch team on a proposal for procedural abstraction that they apparently intend to follow up on.

I'll try to find out if there is any kind of timeline for implementing real abstractions.

In the news

Scratch is experiencing a media blitz today, with stories from the BBC (Free tool offers easy coding) and the Boston Globe (With simplified code, programming becomes child's play). It seems that it's starting to be used in some middle schools on a trial basis.

Of course, that means it's also being discussed on Slashdot, digg and reddit.

Very nice. It feels very

Very nice. It feels very friendly, and reminds me of the ejay product line that lets you create music by dragging and dropping music pieces. It seems a bit limiting that you cannot spawn multiple sprites of the same class programatically though. On the other hand, I can see how that would increase complexity.

Comparison to ToonTalk?