New Myro Languages

January 28, 2011 at 8:43 am 13 comments

Doug Blank just sent out this report on where the IPRE robot education technology Myro was going — the movement into new languages and platforms is pretty exciting!

This is a note to let you know the status of three new versions of Myro,
the API to interact with the Fluke and Scribbler. For more information on
any of these projects, please feel free to use this mailing list.

1) Myro in C++. This project has been developed at the University of
Tennessee at Knoxville, by Bruce MacLennan, John Hoare, and others. Mayro
in C++ is ready to use. For more information, please see:

2) Myro in Java. This project is underway at DePauw University by Doug
Harms. Myro in Java is under development and ready for testers. For more
information, please see:

3) Myro in the Pyjama Project. Pyjama is a new scripting environment for
Python, Ruby, Scheme, and more. This is the latest version of Myro from
the IPRE. Pyjama is designed to run very easily on multiple platforms, and
with multiple languages. Pyjama is under development and ready for
testers. Form more information, please see:

The pages at will begin to change to
reflect these exciting developments and alternatives.

I invite users and developer of all of these systems to further describe
the projects, and provide additional details.


Entry filed under: Uncategorized. Tags: , , .

Less than half of students at science competency Computers are Systems, not Languages – Ian Bogost

13 Comments Add your own

  • 1. Alan Kay  |  January 28, 2011 at 9:08 am

    Myro is a robot programming language — it appears to be a subroutine library for controlling low level mechanical functions.

    How for example should a teenager get a robot to solve even simple problems (such as analogies to “monkey and bananas” where some intermediate problems have to be posed and solved in order to achieve the main goal)?

    And what is there in Myro to help teenagers who might want to make a better language for robot programming?

    What is there about Myro that would give rise to good imaginings of what good programming and languages might be like?

    What is the upward path in Myro towards more interesting and important ideas?



  • 2. Doug Blank  |  January 28, 2011 at 2:26 pm

    Alan Kay wrote:

    “Myro is a robot programming language — it appears to be a subroutine library for controlling low level mechanical functions.”

    Myro is an API for interacting with a device that can move, make tones, report back sensor values, take pictures, and emit IR signals. The announcement that Mark was relaying was a status report on the state of various languages that now support this API. This now includes C++ to Java, and many choices in-between (like Python, Ruby, and Boo).

    “How for example should a teenager get a robot to solve even simple problems (such as analogies to “monkey and bananas” where some intermediate problems have to be posed and solved in order to achieve the main goal)?”

    If the language or API doesn’t have a specific function built-in, don’t all problems then need to be decomposed into smaller parts? “Go dance” isn’t built in, so “some intermediate problems have to be posed and solved in order”, right?

    “And what is there in Myro to help teenagers who might want to make a better language for robot programming?”

    That isn’t our goal, per se, but just giving teenagers (and younger) exposure to interacting with robots is the first step. We want to create an on-ramp to computing with robots that is easy to get started, and makes it easy to see cutting edge, harder problems.

    “What is there about Myro that would give rise to good imaginings of what good programming and languages might be like?”

    The ability to switch languages with a keystroke gives students the ability to see what other languages are like. At this stage, we mostly want to get them in interested in computing, and show them that it is something that they can do.

    “What is the upward path in Myro towards more interesting and important ideas?”

    More important and interesting than what?


    • 3. Alan Kay  |  January 28, 2011 at 2:59 pm

      Maybe the meaning of “robot” has changed, but what raises “a device that can move, make tones, report back sensor values, take pictures, and emit IR signals” to being an actual robot is having something as much like a brain as possible.

      So (to me) the question I would ask about something that bills itself as a “robot programming language” — especially for youngsters — is “how high is the quality and range of ‘brain making’ facilities?”

      For example, most languages are ill set up for non-deterministic pondering, planning, execution, reflection, and recovery.

      FORTRAN had subroutines, but it did not lend itself to making semantics very different than what it came with. Lisp also had subroutines and did lend itself to making qualitatively new things that were needed.

      Neither of these would be particularly suitable for teenage robot programming.

      So we are really talking about more than just features (though they are necessary — cold turkey Turing options don’t count with these users), we are also talking about languages that combine understandability with flexibility with some nice scaffolding for thinking about minds and building them.

      To gently disagree again, you are not giving teenagers access to “robots”, just to the bodies of “robots”. This is good, but misses much of what is interesting about making robots.

      I think my questions still remain to be answered.

      Best wishes,


  • 4. Doug Blank  |  January 28, 2011 at 3:13 pm

    Our “robots” don’t do anything, because students create the “brains”. That is the motivation.

    Alan says: “Neither [Lisp nor FORTRAN] would be particularly suitable for teenage robot programming.” And yet, here we are.

    As educators using robots, we carefully pick what we put into the robot, and into the API. That way, we can make sure that there are interesting problems that students can still solve. For example, finding an object in an image, and turning towards it involves many issues. We can’t make the system too sophisticated, but the problems still needs to be authentic.

    I think your question still needs to be asked. That is, I’m not sure what is at odds with our goals of bringing interesting problems to students to motivate them into learning computing.


    • 5. Alan Kay  |  January 28, 2011 at 3:32 pm

      Please steer me to an example of an interesting robot “brain” made by students via Myro + one of its host languages.

      For example, one very simple comparison would be to Seymour Papert’s turtles (which in the 60s and 70s were physical manifestations as well as graphical objects — and had various kinds of sensors, etc.) with LOGO as the robot programming language.

      It could well be that LOGO might be quite superior to do this kind of programming compared to (say) Python or Java.

      Or, we could try to make a language that includes the powers of Prolog, but which is not obscure in appearance, and see what it would be like for a robot brain to use simple non-deterministic logical deduction to figure out how to deal with complex problems that involve errors and intermediate problems.

      One question I always ask myself with regard to start up systems is are these in accord with what the students at a particular stage of development are capable of?

      Are they more of a gesture than anything that points to the real thing? For example, are the ways the early problems are solved like the real thing?

      Do they illuminate interesting aspects of computing and the world of ideas that go beyond the specific examples?


      Best wishes,


      • 6. Doug Blank  |  January 28, 2011 at 5:10 pm


        Your first questions are interesting to contrast with your later ones. First ones, paraphrased:

        1) Is this really a robot?
        2) Can these robots do sophisticated things?
        3) Would students be able to create their own language?
        4) Would I be interested in writing a robot brain?
        5) Is your system really a good way to program robots?
        6) What’s the best language for robot programming?

        Addressing the interests and opinions of the instructor has been an interesting exercise in this project. For each teacher, there are many issues to get through, and even more than what your questions suggest. For example, many teachers are intimidated at the prospect of having to deal with unknown hardware issues in the classroom, and stepping outside their comfort zone in general.

        Although each of your questions is interesting in its own right, they are the wrong questions. I’ve translated each into the mind of the student:

        1) Wow, you mean I get my own robot? Yes.
        2) What can it do? Nothing, until you program it.
        3) How do I program it?
        4) Can I make it do X?
        5) Look at what I made it do!
        6) How come it did that?

        Your last questions are much more on mark:

        7) Can students use the Myro API to program robots? Do they find it frustrating or rewarding? Yes, Yes, and Yes. More work to be done.
        8) Is this an authentic problem that leads to real understanding? Yes, and Yes.

        We have a number of papers exploring these last issues.

        Thanks for the challenges, and interest!


        • 7. Alan Kay  |  January 28, 2011 at 7:24 pm

          McLuhan liked to say “Don’t ask if it is right or wrong or true or false — try to find out what is going on”.

          And (in my opinion) “yes” and “no” are at best cryptic answers to most questions of substance.

          I can see from your papers that the aim here is to use physical object control as a motivation for learning some of standard programming in some of standard languages. This seems like a good ploy for that aim.

          But I disagree with the aim in a number of ways, including thinking it too low an aim, that the languages used as targets are poor ones to hand to beginners and experts alike, and that it misses what is interesting about trying to make intelligent agents.

          Best wishes,


          • 8. Doug Blank  |  January 28, 2011 at 8:01 pm

            Our goals at Bryn Mawr College are to get as many women exposed and interested in computing as we can. This course is a first-semester course that does not distinguish between majors and non-majors.

            if you think that goal is too low, then you might not be familiar with the “crisis” of lack of women in computing. If you think this huge spectrum of languages that we offer are all poor, then do please suggest alternatives—we really want to succeed! If you have insight into what young girls (K-12) and college women might find interesting about developing their own intelligent agents in this context, please do tell.

            I don’t think we have all of the answers, but we are exploring how to achieve our goals through a variety of contexts. I will say that some of the intuitions from the average, white, male, middle-aged computer science professor (like me!) about how to solve this problem can be quite wrong.

            I guess we’re just trying to figure out “what’s going on”.


  • 9. gasstationwithoutpumps  |  January 28, 2011 at 4:34 pm

    The interesting parts of robot programming are the interactions with the real world. Even very simple interactions are much more complicated than most people realize. Perception and motion are quite complicated enough for beginners without getting into planning and cognition.

    There have been a lot of attempts to use robot programming as an intro to programming (Logo, various Lego programming languages, NQC, RobotC, …). I don’t think any of them have been particularly successful: they either dead-end at fairly low levels (most of the Lego languages), are too low-level and arcane for first-time programmers (most of the C-based languges), or don’t generalize well to more than one robot (most of the Logo attempts).

    An API that is embedded in a powerful easy to learn language could be a good approach, if the API is well designed. That seems to be what Myro is trying to do, except for the powerful, easy-to-learn part.
    Of course, C++ and Java both suffer from not making multi-threading easy, but a good robot controller really does need to have many threads (possibly running on independent micro controllers).

    • 10. gasstationwithoutpumps  |  January 28, 2011 at 4:39 pm

      Correction: the first implementation of Myro seems to be in Python, which is fairly powerful and easy to learn, though it still lacks easy multi-threading (the way, for example, that Scratch does). Python is a reasonable choice to add an API to for high-school students.

      The announcement here was of Myro implementations in C++ and Java, which threw me off, until I probed a bit more on the Myro website.

      • 11. Doug Blank  |  January 28, 2011 at 4:47 pm

        Right, Python was our choice as educators, but not everyone can (or even wants) to go that route. Now we have quite a selection, thanks to many other contributors.

        We are big fans of Scratch, and of Alice. We have built some easy-to-use threading support in the Python Myro version, which works like:

        doTogether(func1, func2, func3, …)

        Each of the funcs is a zero-argument function, and they all run together. We originally added that as a utility for students to play musical pieces together (via our Python interface to ChucK) but it has also been useful with robots.


  • 13. Alan Kay  |  January 28, 2011 at 11:43 pm

    Answer to
    8. Doug Blank | January 28, 2011 at 8:01 pm

    Hi Doug,

    “Our goals at Bryn Mawr College are to get as many women exposed and interested in computing as we can.”

    This seems like a fine goal to me, but as stated it doesn’t require Python, Java, or etc. So I would first ask, are these a side condition, or can you do what the Alice, Etoys and Scratch folks did, and try to invent and make the most suitable language to serve the goals?

    (As an aside wrt “the crisis of women in computing”, if I were starting out now I’m quite sure I would not choose computing, and I’m guessing that my reasons would be very similar to those that turn away many girls….I think many of them are showing considerable taste to reject the current state of affairs)

    I think “intelligent agent” programming with both physical and virtual agents is likely to have appeal. Women have a wide spectrum of interests (maybe wider than males), and we know from lots of past experience with K-8 boys and girls that the girls can be just as interested as the boys, and especially for 12 and 13 year olds, can be a little more advanced.

    For example, you might be interested in the “Vivarium” project we did in the late 80s and early 90s in which 5th graders did intelligent agent programming by making animals they were studying, especially aquatic ones, and creating brains from scratch (but a different scratch than a standard programming language) that would invest the simulated animals with reasonable behaviors. The girls in these classes were just as interested as the boys and were very good at this kind of learning and doing.

    One of the keys here is that (as was mentioned by others in this post) physical bodies have multiple parts and so do brain/minds. And the “society of mind” (as Marvin Minsky calls it) is not always in accord with itself. So the programming language has to have many easily made loosely coupled processes, ways to do speculative reasoning, ways to represent goals and ideas, etc.

    Many of these processes will get rebuffed by higher priority ones, but will need to have an incremental “urgency” that ups their priority as time passes. And so forth.

    But now we are to the language part of things, and what we could facilitate by inventing a language and environment that has a nicer fit to intelligent agent programming that the ones mentioned.

    We know to some extent what younger children can do via Playground (the Vivarium language), Etoys, and Scratch, etc.

    So we should not ask high schoolers or college students to do less. We know they can do more.

    One of the keys to this is similar to what made the above languages work, which is to think of the language as a UI and design that UI as well as possible. This can be done without in any way diluting the computer content of it, and in many cases, one winds up with many superior features to existing workaday (and dare I say “unimaginative”) language designs.

    If you are not bound in your goals and aims to Python and Java, you might be interested in exploring how more carefully designed and more suitable languages might enhance your main goals, and bring more richness of experience and outlook to the students.

    Best wishes



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,052 other followers


Recent Posts

Blog Stats

  • 2,031,463 hits
January 2011

CS Teaching Tips

%d bloggers like this: