Thanks for all the responses. I’m just getting back to this and still comparing the different programming options. Hopefully I will be able to compare Blockly, RobotC, Simulink, and PROS. My perspective is someone migrating from Vex IQ to EDR. The 20+ kids that I will be training will be in this situation.
RobotC
@Barin and others were correct, it is the Natural Language settings that enable SetMotorSpeed. This is not intuitive for someone coming from IQ, because IQ has Natural Language commands but SetMotorSpeed is not one of them.
That 2nd “Vex 2.0 Cortex” setting is confusing too. Not only are there two seemingly identical settings, but when you change the 2nd setting (to IQ) it appears as if the 1st setting does not change (it stays Cortex). But if you go out of the menu, and then come back in, you can see that both settings were changed to IQ. It kind of feels like opening the fridge to see if the light is still on, and it’s not.
One of the hardships of using Natural Language is that RobotC automatically dumbs down the help when NL is enabled. Not sure why I can’t have NL turn on and still have the Super User function list. What I (and all my kids) will end up doing, is temporarily turning off NL to see the full list, and then turning it back on when it’s time to compile. Annoying…
My reason for preferring using
SetMotorSpeed(...)
as opposed to
motor[port4]=X;
is because (I believe) it teaches better programming concepts and habits. For kids that are just learning programming, I find that they pick it up quicker if you break the program into nouns and verbs. Functions are verbs, variables are nouns. One good exercise is to have them look at code and identify what is a command and what is a variable. If you want the motor to move you have to give it a command and
SetMotorSpeed(...)
looks like a command. “And oh by the way you can create your own commands…”
In contrast you can teach the kids to set the motor speed like this:
motor[2] = vexRT[Ch2];
They will get it, but all that they will remember is that ‘this is how to set the motor speed’. If you try and explain the arrays or typedef enums, they won’t remember any of it. Trust me on this, I’ve had plenty of kids come back from a robotics camp using this coding style, even for Vex IQ. All they remember is ‘this is how to set the motor speed’. I’ve also noticed that those students are more likely to have an auton routine that has a bunch of these commands strung together all inside a giant main(). They don’t get functions, and don’t know how to create their own.