RobotC vs PROS

Hi everyone,

TL;DR: PROS or RobotC and Why?

The teams in our school have used PROS the past few years, but we were forced to switch to RobotC 3 this past season due to some issues with using IMEs in PROS. While RobotC 3 works well, it is somewhat dated and the API isn’t the greatest. We are debating whether to purchase licenses for RobotC 4 (a significant investment given our limited funding) or switch back to PROS (which lacks some of the features and support of RobotC).

The big questions:

  • Does anyone else use PROS in competition?
  • What are the big benefits of using RobotC over PROS and vice versa?
  • Is RobotC a worthwhile investment or should we stick to PROS?


I’m going to be using PROS for any of the work I do on VEX robots from now on. I talked for a good while with the Purdue guys that maintain it and they’re awesome, pretty much encouraged me to convert from RobotC. I think they said something about trying to push out some updates and more support soon too. PROS is a lot more like what you’ll see in practice in places that aren’t VEX in my opinion, and the fact that it’s C++ based (and thus object oriented) makes it easier for a software team to collaborate since you can split things into classes and finer pieces in more intuitive ways. Access to standard libraries is also a big plus. And PROS is free, that means a lot to some individuals/teams and can encourage more collaboration.

I like RobotC because it’s pretty solid and easy to use, but I’m starting to get annoyed when I want to do something that I do really often in actual C (RobotC is more pseudo C because it’s missing the standard C libs, but gives you everything you pretty much need out of C for a VEX bot. I really wish I could use stuff like malloc in it, it would make life so much easier just because I’m used to it). You’re gonna get more support or help if you use RobotC too, since it’s so ubiquitous, but if anyone considers themselves an adept software developer, I would strongly encourage giving PROS a shot.

I’ve just switched to PROS, and there are a few things I just enjoy more, due to the fact its more similar to C, as well as a few other things. For instance, I really enjoy having the microsecond timer. The only thing that’s lacking is a more involved debugger, and that seems to be coming in the next update.

It’s cool to see people recommending pros!

127 has been competing with pros at worlds since it came out. What problems did you have withIMEs? They seem rather finicky, so we just use the shaft encoders now.

Hopefully the pros team finishes the next version of the ide soon so we can get a nice debugger with graphing and stuff; really looking forward to that.

PROS being more standard with eclipse and regular C is nice too. I didn’t know we had full c++ object/class capabilities though. I’ll have to try that.

I actually hate Eclipse, but I think they’re trying to move it into Atom.

I never thought IME’s were bad, I use them all the time when I need higher res readings (I love I2C though, gives me an excuse to use it). The red quads are more reliable by nature though, because they can’t ever “reset”, the values are stored in the cortex.

Ive been using PROS for the past 2 years so i have seen how useful it is and heard a lot of feedback from people that have used PROS, Originally the only reason i used it was because it ran on Linux (Before then i just assumed it was like Sony Vegas vs crappy open source Linux video editor) but after getting used to the UI and reading all the features it has i began to like it a lot more than RobotC because it was more like what i was used to with C/C++ development i do outside of vex.

Right now i use PROS because RobotC is simply too frustrating and limiting when it comes to the compiler, it really sucks when you write 200 lines of valid c99 and you have to rewrite it because structs and arrays are quirky in RobotC.

There are also features that are not well advertised that PROS has and RobotC doesnt, such as a working filesystem and the ability to use Analog/UART/I2C ports as digital I/O for controlling a ridiculous amount of extra pneumatics.

A filesystem is extremely useful, in skyrise i used it to store an infinite amount of pre-recorded autonomous reruns and the autonomous selection would persist after reboot so i wouldnt get screwed if the battery connector got bumped on field before a match and forgot which auton to run.

But dont force someone to use PROS if they are just learning C, I would have been super frustrated if i had to use it 3 years ago since i diddnt appreciate or understand many of the features.

I’ve been using RobotC, and it is a constant love hate relationship.

I love RobotC, it is simple and easy to use. Yes, it lacks a lot. Yes, a lot could be fixed about it and improved about it. But, once you learn your way around it, it works great.

IME’s can be finicky in RobotC if you don’t do it right. On every tutorial I’ve ever seen, they use:


And that has never worked for me. What does work is:


Also, if you are going to be using RobotC, just be warned that gyro drift is a huge problem and isn’t fun to fix. Also, there is a lot RobotC doesn’t have that C has. So you’ll have to get used to the difference there.

But in general, I’m happy with RobotC. Yes it’s a pain, but you get used to it and it ends up working.

Hope this helped


If you have any questions about RobotC, I’m usually on the discord or just shoot me a PM here.

Thanks for all the input! Definitely sold on switching back to PROS. I wasn’t aware that they were working on a new IDE, I figured they were sticking with eclipse since they just updated to the newer version when they moved to GitHub. Some new debugger features would put RobotC out of the contest save for the technical support.

I played around with PROS for a while, and I loved it. I wasn’t doing anything very challenging, but I picked up most of it quickly. I went back to RobotC when we started needing to program our competition robots, and I haven’t used PROS much since. I will probably pick it up later this summer when I work with freshmen instead of a competition team.