A Small Contribution to the Coming Robot Apocalypse:

Posted by Elf Sternberg as chat

I’m a dilettante in a lot of things software-development related, but I do love watching the world go by. Every once in a while I see two things happen at once and wonder why they aren’t aware of each other.

A few days ago I was reading a paper entitled: Buzz: An Extensible Programming Language for Self-Organizing Heterogeneous Robot Swarms. I don’t know anything about robot programming, but I have read (and implemented, at least in simulation) Tim Skelly’s description of “flocking” behavior for the 1980 video game “Rip-Off.” Buzz was a pretty good paper. It starts out with a fantastic idea: when a robot goes from being independent to being part of a swarm, it needs new relationship management features, which the Buzz VM provides through a combination of live tracking of swarm membership, neighborhood awareness, and “virtual stigmergy,” a way of emulating a buildup of sensory information until it crosses thresholds and causes new behavior in the entire swarm, emulating the way ant or bee hives collectively operate.

(Aside: The first video game to use stigmergy is PacMan: As PacMan moved, he left a “scent marker” on the square behind him that faded with every clock cycle until it reached zero; the probability that a ghost would turn was influnced by that scent trail. PacMan had easy-to-memorize patterns because the clock cycles were relatively large with respect to human reaction time and the probability had no randomization.)

But one thing that bugged me about Buzz was that the developers wrote their own language. It looks a little like Javascript, and a little like Perl, and a little like every other Algol-descendent. The author of Buzz even admit to hewing to “object-oriented programming jargon.”

And then a few days later I saw the paper that explained why I was so bothered: Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development Swamp proposes that VM writers do too much with their language. A VM, they write, should deal with exactly three issues: memory, hardware, and concurrency. Buzz does that– and then it does so much more. Swamp says that everything else should be left to the language developers. Once you’ve got concurrency, memory (really, garbage collection) and hardware abstraction down in the VM, your VM should get out of the way.

If the writers of Buzz had gone down this route, they could have spent all their time making sure to get the concurrency issues around swarm membership and virtual stigmergy absolutely correct and performant, and allowed the language development guys in their team layer any language they wanted on top: Lua, Javascript, Lisp. Even their own Buzz.

So, Buzz, Mu, I must highly recommend you to each other.

Bring on the robot apocalypse.

1 Response to A Small Contribution to the Coming Robot Apocalypse:

Carlo Pinciroli

August 11th, 2015 at 3:42 pm

Nice post, and thanks for the kind words on our work! 🙂

I didn’t know MicroVM, and I’ll definitely check it out.

I have an answer to the question “why a custom VM” here: http://developers.slashdot.org/comments.pl?sid=7821561&cid=50286913. In brief, for us the VM, at the moment, is a part of our research scope. We want to have full control over it, and using a pre-cooked solution is for us more hassle than help. As soon as things get less experimental, we’ll surely look for a stable and well-known solution. MicroVM seems to be really good.

Thanks for dedicating the time to read our paper and criticize it!

Comment Form

Subscribe to Feed



August 2015
« Jul   Sep »