Subject:
|
Re: Robolab as a tool for teaching programming
|
Newsgroups:
|
lugnet.robotics
|
Date:
|
Fri, 18 Mar 2005 15:32:26 GMT
|
Viewed:
|
1069 times
|
| |
| |
On Thu, March 17, 2005 5:27 pm, John Hansen said:
> In lugnet.robotics, Steve Hassenplug wrote:
> > wow. I guess I don't have a reply to that. My wife (not a programmer) has
> > used Robolab. She said it was like making a flowchart.
>
> The text where I said why Robolab requires people with previously acquired
> flowcharting skills to unlearn some of their skills and break standard
> flowcharting rules was deleted.
Sorry for my aggressive use of editing. I assumed anyone still reading this thread
has either read previous posts, or can go back and look at what was posted, if they
do not follow the text. I didn't think my editing altered the meaning of the
statements.
> Flowcharting rules require that there be only one type of icon used to represent
> a decision and that that icon should have a different shape from the type of
> icon used to represent a normal process step. Flowcharting rules require that
> all lines show the direction of process flow using arrows. If the flow of logic
> loops back (or forward) then flowcharting rules require that there be a line
> showing the flow of logic with an arrow showing the direction and connecting the
> point in the flow where a decision causes the looping to occur to the point in
> the flow of logic where the process begins again.
>
> I could enumerate many more points of departure between the flowcharting skills
> a person would learn outside the Robolab world and the sort of skills a person
> learning Robolab would develop. If anyone reading this believes I am wrong
> about these specific rule differences please point out where, exactly, I have
> made my mistakes. Does what is done in Robolab actually follow all the standard
> flowcharting rules contrary to my assertions? If Robolab does break those rules
> as I have asserted does that rule breakage benefit the child learning to program
> or does it teach them skills they may need to unlearn (or has it no positive or
> negative effect whatsoever)?
It appears I didn't explain myself well when I said "Programming with Robolab is
much like creating a flow-chart". Sorry. I was NOT trying to say programming with
Robolab is exactly like creating a flowchart. There are several differences.
Flowcharting uses different shapes with text to represent different functions;
Robolab uses the same shape, but different pictures inside the shape.
Flowcharting uses lines with arrows to connect shapes; Robolab just uses lines, and
users must know which direction to 'flow'
Flowcharting uses lines with arrows to indicate when and where a user must jump in
the flow; Robolab uses matching colored arrows.
Flowcharting uses ovals with text for starting & stoping of the flow; Robolab uses
start and stop lights for starting and stoping of the flow
Flowcharts usually go top to bottom; Robolab usually goes left to right
And, I suspect there are other differences.
Personally, I don't find any of these to be a big difference that must be unlearned
when switching from one to the other. But, I can accept that others do.
> > I assume you're suggesting Robolab has no flow of logic, decision making, or
> > procedural steps. I don't agree. But I have no way to support my opinion.
>
> I clearly did not say or anywhere suggest such a thing. I said that Robolab
> breaks flowcharting rules so it is not a natural progression from the
> flowcharting world to the Robolab world. If anyone out there disagrees with my
> assertions please argue against them - not against things I have never even
> thought let alone posted in messages here. If anyone out there believes that I
> am right about Robolab breaking several standard flowcharting rules but that I
> am nit-picking and that such rule breakage is inconsequential then say as much.
I seem to have misunderstood what you said here:
--(previous post)
> I don't think pre-existing flowcharting skills will benefit a Robolab newcomer
> because the only substantial commonality is the drawing of lines between boxes.
> In flowcharting, however, these lines are always directional and the flow can be
> (and usually is) in any direction. The rules of flowcharting are consistently
> broken in Robolab. Anyone interested can consult Google for information about
> good flowcharting skills and compare that information to the images of many
> sample Robolab programs on the official Robolab website to see where the two
> bodies of knowledge diverge in non-trivial ways. In other words, to learn
> Robolab coming from a standard flowcharting world you will have to forget much
> of what you know and do things that were formerly forbidden in order to write
> nearly all non-trivial Robolab programs.
>
> On the other hand, pre-existing flowcharting skills will benefit an NQC newcomer
> in exactly the same way that they will benefit any person learning a traditional
> programming language. The flow of logic, decision making, and procedural steps
> that would be familiar to a person experienced with flowcharting will translate
> directly to programming in traditional text-based languages such as NQC. And
> they can use their skills exactly as they learned them to design, code, and test
> their NQC programs.
--(end previous post)
Looking at this:
> I don't think pre-existing flowcharting skills will benefit a Robolab newcomer ...
> On the other hand, ... The flow of logic, decision making, and procedural steps
> that would be familiar to a person experienced with flowcharting will translate
> directly to programming in traditional text-based languages such as NQC.
I thought you were suggesting
"On the other hand ... The flow of logic, decision making, and procedural steps that
would be familiar to a person experienced with flowcharting will [not] translate
directly to programming in [robolab]."
I hope you understand how I was mistaken.
> Does anyone out there believe that requiring or encouraging a child to use
> "magic numbers" all over his programs is a good thing?
I'm not totally sure what you mean by "magic numbers". Previously, you spoke of
using a magic number in Robolab's loop structure. In that case, this line has a
"magic number" of 5:
| for(i=0;i<5; i++)
The 5 is a parameter of the for loop. I think the numbers you're talking about are
just parameters, and they are required in all programs.
> > NQC offers NO advantage to teams.
I should clarify this. I intended to say "NQC offers NO advantage to OUR team."
That may have been more obvious in the original context.
> I also meant to ask how you would write this in Robolab:
>
> | int x[10]; // global to all tasks
> | int* y = &x; // pointer to global variable
> |
> | task main()
> | {
> | int i; // task local
> | int j; // ditto
> |
> | for(i=0;i<5; i++)
> | {
> | *y = i+1; // indirect global variable access
> | y++;
> | for(j=0;j<4; j++)
> | {
> | PlayTone(x[i]*100+j*10, 50); // arrays & temporary variables
> | Wait(100);
> | }
> | }
> | }
I'm not totally sure what you're trying to do here, so I'm not sure I could create
the functional equivalent in Robolab. I am sure *I* couldn't create the byte-code
equivalent using Robolab, and I assume from previous posts that you're not just
looking for something that functions the same, but produces the exact same
byte-code.
It shouldn't be a shock if Robolab produces different bytecode than NQC or
Mindscript. Few compilers produce the exact same output. I'd be willing to bet
most of the kids in FLL don't even know what byte-code is. They don't need to.
Some kids DO want to know. I encourage them to learn.
I did teach NQC to one of the smartest kids that's ever been on my team. I must
have done a bad job, because now he uses Robolab on his Mac.
John, if you really want help learning Robolab, I'll be glad to do anything I can to
help you. But, I've seen your work. I doubt you need my help. It appears (to me)
you're more interested in pointing out what can not be done in Robolab, than
learning what can. If I've misunderstood your intent, I'm sorry.
Steve
|
|
1 Message in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
Active threads in Robotics
|
|
|
|