Discussion:
ANNOUNCE: Learn programming with RoboMind
(too old to reply)
John St. Clair
2007-03-20 02:18:57 UTC
Permalink
The message below is being cross-posted from the LogoForum. Please
reply here at comp.lang.logo and it will be crossposted back to the
LogoForum. The original author of this message is "Arvid"
<***@gmail.nospam.com>.


Hello Logo fans,

I worked hard on a new version of RoboMind: an alternative
interpretation of the well-known Turtle. See:

http://www.robomind.net

ROBO is a new and very simple educational programming language that
will familiarize you with the basics of computer science by
programming your own robot in the RoboMind development environment.

The main reasons to come up with a modified version:

* Most Logo implementations have reached a stage far beyond their
original scope: a first introduction to programming. All the fancy
gadgets you find in the popular implementations (file IO etc.) may be
intesting for teachers, but may confuse beginners.

* Although I like that Logo is a Lisp based language, the syntax is
definitely not as elegant. In general I like the idea of a functional
language but to be honest little remains in all Logo variants. A more
conventional syntax of an imperative language is chosen.
The ROBO language is very minimalistic: it even lacks operators and
variables. From a theoretical point of view, the robot closely
resembles a Turing machine.

* The interactivity of the turtle with its environment is limited.
Where the turtle focusses on drawing, perceiving is essential for
interesting robot programs (e.g. line followers).

* The RoboMind development environment aims to be as user friendly as
possible. Nice visualizations are combined with a simpel no-nonsense
interface.

Please let me know what you think of it!

Arvid Halma
John St. Clair
2007-03-21 04:06:52 UTC
Permalink
The message below is being cross-posted from the LogoForum. Please
reply here at comp.lang.logo and it will be crossposted back to the
LogoForum. The original author of this message is Pavel Boytchev
<***@elica.nospam.net>.



Hi Arvid and Quincy,

You have done really nice graphics. Congratulations!
I'm sure your work will be well accepted by students,
teachers and parents.

I have some questions about your future plans, namely:
(1) Will you provide other paints for the robot?
(2) Will you support more than one robot at the same time?
(3) If yes then would it be possible for robots to communicate? Or to
reprogram each other?
(4) Have you played a game called "Robot Odyssey". I played it 20 years
ago on Apple II's. Your Robomind remind me of "Robot Odyssey". However,
"Robot Odyssey" was about designing the hardware of a robot, while
"Robomind" is about the software of a robot...

Please, find below some more comments and counter-opinions :)
* All the fancy
gadgets you find in the popular implementations (file IO etc.) may be
intesting for teachers, but may confuse beginners.
No one is forced to used the 'fancy gadgets'.
* Although I like that Logo is a Lisp based language, the syntax is
definitely not as elegant. ... A more
conventional syntax of an imperative language is chosen.
Speaking about beginners I'm not quite convinced that Java/C-like syntax
is better than Logo-syntax :) Things like empty parentheses (when no
arguments are used) will definitely confuse some users.

Yes, as a developer of several implementations of programming languages,
I know that FORWARD() is easier to process by the translator than
FORWARD, but the point is whether it will be easier to the user :)
The ROBO language is very minimalistic: it even lacks operators and
variables.
So, it has something common with Elica Logo :)
From a theoretical point of view, the robot closely
resembles a Turing machine.
I'm not sure what you do mean - I cannot find any relation between
Robomind and the Turing machine...
* The interactivity of the turtle with its environment is limited.
Yes, this is correct for environments where the turtle is hardcoded in
the core. In environments where the turtle is entirely user-defined, it
is possible to make a turtle that behaves and senses just like Robomind
:)
Please let me know what you think of it!
You've done great job. I'm eager to find what other features you will
add in the next versions :)

-Pavel
John St. Clair
2007-03-22 02:35:25 UTC
Permalink
The message below is being cross-posted from the LogoForum. Please
reply here at comp.lang.logo and it will be crossposted back to the
LogoForum. The original author of this message is "Arvid Halma"
<***@gmail.nospam.com>.


Hi Pavel,

Thanks for the compliments, but most of all for the critical notes.
Especially if they are as appropriate as yours. Let me explain in
little more detail RoboMind's design decisions and why I call some of
its omissions 'features'.
Post by John St. Clair
(1) Will you provide other paints for the robot?
No. White and black it will be. Two colors directly correspond to
reading and writing bits in the environment and therefore do all I
want for my purpose of painting. For example: if you want to make a
twice as long copy of the line you see on your left, you have to mark
spots in the environment to keep track of the progress.

The robot is therefore clearly not as artistic as a turtle, but thanks
to the combination with a (simpler) grid world reading plays a key
role instead of blindly painting (99% of Logo scripts on the web).
Post by John St. Clair
(2) Will you support more than one robot at the same time?
(3) If yes then would it be possible for robots to communicate? Or to
reprogram each other?
No. I know quite a bit of multi agent programming since I have a
degree in artificial intelligence, but letting laymen program more
than a bunch of randomly walking agents is a bridge too far.
RoboMind's focus is mainly convincing one that writing instructions
down can be handy to solve problems (the programming aspect), instead
of training robot engineers.

I do agree in a very fixed setting like robot soccer, xtank/robocode a
high level API for multi agent programming could be feasible, however,
I see these environments as interesting next steps in a programming
career.
Post by John St. Clair
(4) Have you played a game called "Robot Odyssey". I played it 20 years
ago on Apple II's. Your Robomind remind me of "Robot Odyssey". However,
"Robot Odyssey" was about designing the hardware of a robot, while
"Robomind" is about the software of a robot...
I was not aware of Robot Odyssey, but it is indeed very much related.
It really seems like a nice game I could still be addicted to! Time to
get an emulator... thanks for the tip:)
Post by John St. Clair
Please, find below some more comments and counter-opinions :)
* All the fancy
gadgets you find in the popular implementations (file IO etc.) may be
intesting for teachers, but may confuse beginners.
No one is forced to used the 'fancy gadgets'.
Granted. But a bloated API *does* obfuscate things. If I now read
posts on the web with logo questions, no way that they are on topic
for a beginner. The logo community has grown older, and so have their
problems. RoboMind should be for beginners again.
OK, as a developer it is hard to confess that your program is not
interesting anymore after a while for pupils, but the mission was a
success.
Post by John St. Clair
* Although I like that Logo is a Lisp based language, the syntax is
definitely not as elegant. ... A more
conventional syntax of an imperative language is chosen.
Speaking about beginners I'm not quite convinced that Java/C-like syntax
is better than Logo-syntax :) Things like empty parentheses (when no
arguments are used) will definitely confuse some users.
Yes, as a developer of several implementations of programming languages,
I know that FORWARD() is easier to process by the translator than
FORWARD, but the point is whether it will be easier to the user :)
There is nothing as hard as choosing syntax. I believe the choices for
RoboMind are not too bad, but since choosing it is more an art than a
science I'm afraid I have to leave it with that. Personally I'm not a
Java/C fan either. No, then take a look at Haskell. Why I didn't chose
a functional language while I love them? I think most teachers aren't
used to them. It's better to teach something you feel comfortable
with.

About the empty brackets after a function call: it indeed needs
special attention for beginners. On the other hand I think it is
valuable to get acquainted to the "zero or more" idea without
unnecessarily special casing things.
Post by John St. Clair
The ROBO language is very minimalistic: it even lacks operators and
variables.
So, it has something common with Elica Logo :)
Elica Logo is definitely the nicest implementation I have seen so far.
Post by John St. Clair
From a theoretical point of view, the robot closely
resembles a Turing machine.
I'm not sure what you do mean - I cannot find any relation between
Robomind and the Turing machine...
In regard of your comments I think a don't have to explain what Turing
machine are (http://en.wikipedia.org/wiki/Turing_machine) so I'll keep
it a comparison.

- The infinite tape corresponds to the environment (although it is
finite).
- The tape can be marked with symbols where the environment can be
painted (with the white/black alphabet)
- The symbols can be read with frontIsBlack() and frontIsWhite()
- The tape head is the robot itself, that can move a step to the left
or to the right.

Agreed, a demo will do better, so I will work on that.
Post by John St. Clair
* The interactivity of the turtle with its environment is limited.
Yes, this is correct for environments where the turtle is hardcoded in
the core. In environments where the turtle is entirely user-defined, it
is possible to make a turtle that behaves and senses just like Robomind :)
I'm sure it is possible. But in my opinion it should not only be
possible, it should have the main focus to create more relevant/real
word like puzzles.
Post by John St. Clair
Please let me know what you think of it!
You've done great job. I'm eager to find what other features you will
add in the next versions :)
Thanks again. New features might include: loading your scripts into a
toy robot, creating projects (combining
exercises/examples/hints/maps), a random coinFlip() procedure, more
maps and examples.
John St. Clair
2007-03-22 13:40:04 UTC
Permalink
The message below is being cross-posted from the LogoForum. Please
reply here at comp.lang.logo and it will be crossposted back to the
LogoForum. The original author of this message is Pavel Boytchev
Post by John St. Clair
No. White and black it will be. Two colors directly correspond to
reading and writing bits in the environment and therefore do all I
want for my purpose of painting.
Here are few suggestions (I've tried to make them minimalistic :) )

[1] Trying to understand your design decisions, I see that Robomind is
not only targeted to beginners, but also to young people. I.e. the
special attention that you paid for graphics means that you expect
Robomind will be used by kids too. So, what about a simple 8 or 16
colour palette? Kids would love it!

[2] What about if there is a simple way for the robot to take a small
square picture from outside (e.g. from a file) and place it in its
environment - a kind of building user/robot defined worlds with custom
images?

[3] Another simple idea (taken from Robot Odyssey) -- info-boxes -- a
boxes which popup some text when reached by the robot. In this way you
can build tutoring environments that contain instructions in themselves.
Post by John St. Clair
It's better to teach something you feel comfortable
with.
[4] Multiple front-ends? Supporting Java-style syntax, or Logo-syle
syntax, or List-like syntax? So the teacher could have some choice? This
might be an interesting option and is not hard to implement -- at most a
day for every front-end :)
Post by John St. Clair
Post by John St. Clair
From a theoretical point of view, the robot closely
resembles a Turing machine.
I'm not sure what you do mean>
In regard of your comments I think a don't have to explain what Turing
machine are
Yes, I meant the same Turing machine. Now I see the source of confusion.
You were talking about physical similarities (and in this respect
Robomind and Turing machines are very close), but I was thinking about
pedagogical aspects :) What bothers me is that Turing machines, although
ultra-minimalistic, are toys for advanced students. For the simplest
thing you have to do long and hard programs. In the examples which I saw
on your site, none reminded me about a Turing machine :) That's why I
concluded that there is no relation :)

(BTW how long "tapes" you can use in Robomind? Turing machines tend to
consume quite long fragments from their tapes :) )

Here comes the next suggestions:

[5] Include more examples. I'm particularly interested to see how one
can solve this problem in Robomind: "The robot is standing on a white
cell, which is is a part of a white segment with unknown (for the robot)
length. Make the robot complete this segment into a square by adding 3
same-length squares."

[6] Check the existing examples. I find some of them confusing. For
example the explanation about repeatWhile says:

# keeps going forward,
# but stops when it can't go any further

and the program is:

repeatWhile(frontIsObstacle)
{
forward(1)
}

I think it should be either "repeatUntil" or "frontIsClear" :)

[7] How would you explain to me (imagine I'm a beginner) why do I need
to put the condition of repeatWhile and if in parentheses?

[8] There might be some typos in the examples. The "repeat()" example
uses "frontIsObstakel". Usually typos in the text does not bother me,
but typos in program examples are something I cannot accept. (Actually I
think there is just a mixture between Dutch and English words. Have you
tested the English examples?)

[9] In the English section of the help there is a non-English word -
"Voorbeeld". Does it mean "Example"? The example right after "Voorbeeld"
look strange -- the line with comments are wrapped in a way which will
invalidate comments.

[10] Looking at "Example 1" form the site and comparing the program with
the image, I wonder how would you make the robot paint the unpainted
cell in the upper-middle of the letter "A"? Or alternatively, how would
you draw a filled square? It seams that some cells are inaccessible for
the robot. Or, alternatively, the painting does not cover the whole cell.

[11] If turning left/right is available for only 90 degrees and if not
all the space is accessible for drawing (see [10]), then how would
someone draw the letter X?

[12] In both code examples in "Example 3" you have "rightIsWit()" --
sounds like a Dutch-English combination :)

[13] "Example 4" -> "rightIsObstakel()"

[14] To be honest I have not tested Example 4, I just looked at it. And
I have some questions about how the robot will find it's way out of the
maze if:
(a) if the robot is placed away from any obstacle (let's say 5 cells
away from any obstacle). It appears it will go round forever...
(b) the robot is placed near a single obstacle, as an island,
non-connected to other obstacles

Also the description of the solution is not precise - I do not agree
that "you will find the exit for sure", because this algorithm works
only for some kinds of mazes :)

[15] One issue about the site design -> If you use narrower window of
the browser, the top tabs (Robo|Documentation|Download|Contact|Links)
wraps in a way that makes impossible to use the Robo pull-down menu
Post by John St. Clair
Thanks again. New features might include: loading your scripts into a
toy robot
Do you mean a mechanical robot? A robot that you can put on the floor?
Post by John St. Clair
a random coinFlip() procedure
or an empty condition which asks the system to select randomly true or
false ;) Like this:
if() {...} else {...}

I think this is enough :)
I hope that (at least some of) my comments would be helpful.

Thanks for reading and good luck with Robomind
Pavel

(Do you have a bigger image of the Robot's family shown on your front
page? I'd like to see the robots in details so to make (and animate)
them as 3D objects in Elica)

Loading...