What are some good Resources & Tips for Learning VEX Programming? I am aware there are other programs like EasyC and definitely I will use them, but I will mainly want to learn Robot C. Any good tutorials, how can I start learning? Also what are the difference with all these programs (pros and cons)?
The 3 main programming options for VEX EDR are RobotC, EasyC, and PROS. EasyC is heavily graphical and RobotC has a Graphical mode. I do not recommend anyone take up graphical ‘programming,’ novice or expert. Others may have different opinions.
RobotC text-based and PROS are both based on the C programming language. PROS supports pure C and even C++ if you set it up correctly, while RobotC lacks some of the more advanced features of C (though is still perfectly adequate for programming VEX robots).
Documentation/Resources PROS documentation is thorough and complete. On top of that, information on the web about the C programming language simply will be valid for PROS. The PROS team is active on this forum, along with many community members, ready to answer PROS questions. I would call PROS the hands-down winner in this category. RobotC’s Web Help Files are… underwhelming, but mostly adequate. This forum has a dedicated channel for RobotC tech support provided by the one and only jpearman. EasyC does not have the same community support on this forum, and I couldn’t find any substantial documentation for it.
For learning RobotC, see the VEX EDR Video Trainer.
For PROS, follow the official Getting Started guide. As stated therein, start by learning the basics of C through one of many tutorials/books/etc. available (such as this one or this one). Then work your way through Programming the Clawbot.
For EasyC… I have no clue. I used it all of once; I opened it up, saw the drag-and-drop graphical ‘programming’ GUI, and promptly closed it down.
I generally recommend people to use PROS but RobotC would be my second choice.
Ahem. Robot Mesh Studio offers four programming options for both VEX EDR and VEX IQ. More than 80,000 VEX-based projects have been created (so far).
For what it’s worth, I disagree with Barin’s evaluation of graphical programming interfaces. Especially for younger and less-experienced people it is much easier to start with a graphical language, like Robot Mesh Studio Blockly, and then transition to a text-based language like Robot Mesh Python. In Studio, you can even create a project in Blockly then copy it to a Python project and continue in Python. Robot Mesh also wrote curriculum activities for Python, Blockly and Flowol.
Woops… Forgot about that… I should probably get better at going to sleep instead of coming on the Forum late at night.
I do not want to derail this thread into a debate, so I will keep this short:
I do not mind graphically learning computer science (logic, flow control, etc). I refuse to support graphical programming, though; I find it often quite limiting and think it’s too much hand-holding. I do realize that some people can truly benefit from graphically programming, though.
I program in a lot of different languages on a lot of different platforms, and i think there is real benefit to learning graphical programming. It makes it easier to visualize some concepts. I also think that if you intend to program after high school and college, you need to learn a real traditional text based computer programming language. The order you should learn them though… I have no idea.
Personally I disagree with using robot mesh’s python solution. It ends up being a bit slow for use cases that range from medium-high amounts of processing as well. In terms of future-based thinking, I would highly suggest RobotC, as there is only a small learning curve to it, and you can easily advance to more difficult topics such as PID (link to George Gillard’s amazing PID Guide).
You can also use PROS, which has a bit of a learning curve alongside a small amount of difficult to understand concepts if you have not programmed anything in ANSI C. However, PROS offers an amazing level of control and prepares students for real world C programming much more than any other of the solutions provided.
To address graphical programming, I feel that it is largely unnecessary and creates an even more difficult barrier to cross. When someone gets used to something, they’re going to have difficulty moving to something else. As a result in many cases, not just programming, people are pushed to do the most difficult thing first, in this case learning programming through typing. Generally speaking, I find that some students have much more difficulty with learning how to program without a graphical interface than others, and for them perhaps programming may not end up being something they are interested in, and therefore they may opt to use a graphical solution. For others, no matter how difficult it seems, make sure you learn programming via typing. The more you program for VEX (and I mean beyond setting motors and using wait1Msec) the more you learn about programming itself, and in my experience after a season or two you’ll pretty much know all you need to know.
If you are coming from absolute 0 knowing nothing or little about programming in general then I would recommend watching/reading a tutorial on c. While c isn’t robotc/easyc etc. it should give you some idea of the basics of programing (you should know for, while, do while loops, if/if else statements, arrays etc) then after that most of them (with the possible exception of mesh) should just make sense aside from a few small things. If you know any high level language then you should have little problem with robotc/easyc etc. (if you like or know python then mesh is basicly python.) As for what language you should use then it really comes down to you and your team. I personally use robotc because it lets me do most everything I want to do and some people in my team know it. I can’t really speak for easyc or mesh. Skim the documentation and just pick one if you hate it then you should be able to tell pretty quickly. You probably don’t want to use a graphical interface for the sole reason of it gives you less control but it’s your choice.
If all you want to do is program Vex robots it is really a toss up between RobotC and PROS. If, on the other hand, you think you might want to do some programming beyond Vex, I would recommend PROS. My son started with RobotC and then transitioned to PROS. He wishes he had started with PROS since it is real C. The learning is more transferable to other programming projects like building Linux from scratch. His comment was that RobotC is like C with training wheels, but the wheels explode when you take them off.
The hardest part of the transition was unlearning things in order to code in a more standard and acceptable way.
In the end, it really depends on what you want to do after Vex.