PROS vs ROBOTC

I’m here to clear up some confusion I have about using PROS vs ROBOTC. My organization mainly uses ROBOTC to program our robots, but I’ve noticed on the forum many fanatics of PROS–what’s so great about PROS? Is it a better platform than ROBOTC? Please make your case. :slight_smile:

Note: I’m a second year VEX student so I’m quite inexperienced with ROBOTC, therefore I’m considering whether to learn using PROS or ROBOTC.

PROS is more similar to C that is used in industry. It also has great developer support, and since so many of the good teams that are active on the forum use it, you can probably find help from them, too. Also, if someone asks for help with RobotC, you can tell them you don’t know how to help them and save some time. (I’m joking, I still try to help them.)

PROS can be integrated with just about any IDE due to its command line interface. RobotC code can neither be compiled nor downloaded outside of the official “IDE.”

While I do not like Atom, the IDE recommended by the PROS team, I still prefer PROS to RobotC primarily because I can easily use PROS with Visual Studio, my preferred IDE.

Additionally, as @Aponthis said, PROS uses an industry-standard C/C++ compiler instead of a proprietary one and lets you use full-on, unrestricted C++ if you so choose.

Additionally, PROS’s support for gyroscopes is really good.

Please be sure to run a search on a relevant keyword, like ‘pros’, in the forum search box before posting though. It saves a lot of time on both ends, and a lot of questions about PROS have already been asked. There currently exists large quantities of information on the forum about PROS vs ROBOTC vs other programming options, etc.

Or you find people like me who use both almost equally as much.

I think its reasonable to say that PROS is almost entirely superior - mostly because it extends the ceiling much closer to the limits of the cortex (esp if you have a play round with the kernal). But personally I can’t justify using it if the project is just an arcade drive and a couple of arm movements - especially if I have to teach a team how to use PROS (when a solution like RobotC is well documented on the lower skill end - has a non-beta debugger - doesn’t require messing around with build packages on sublime because Atom doesn’t run on potatoes etc), lest I am not present when they desperately want to modify or extend the code.

For anything I write personally that I don’t intend for my team to touch - PROS all the way

I use RobotC. I’ve heard PROS is better from many sources, and I know the developers are much more active in improving it. That said, it’s quite easy to program in robotC, and there’s readily available help if you don’t understand how to do something. I learned how to use PID from an online tutorial and looked at some NBN code from other teams to learn the bulk of the advanced coding I know, none of which would have been possible to access nearly as easily in PROS.

Also, given that you presumably have a few years of experience in robotC, it just makes more sense to keep using robotC.

Good luck!

I am not a programmer. I am a mentor. My son started with RobotC and made the change two or three years ago. I cannot remember exactly when. His comment on RobotC was that it was like learning to program with C using training wheels that detonate when you take them off.

RobotC is fine if programming Vex robots is the only programming you will ever do. If, on the other hand, you plan on programming later in life, it is really good to learn actual C or C++. PROS is actual C or C++. The habits you learn from PROS will be habits that will help you later even learning other languages. That may not be the case with RobotC.

As others have stated, the options are better with PROS. There is more you will be able to do. The earlier you make the change, the better. My son’s biggest struggle, though it was not too bad, was unlearning certain habits.

Those are my thoughts.

This is my new favorite analogy.

If you are inexperienced at programming, RobotC will be easier to learn. The development environment is easier and pretty straight forward. As far as robot functionality, I seriously doubt there is any functionality you can achieve with PROS that cannot be achieved with RobotC. PROS will run faster on the cortex. Will that really make a difference in a match? Probably not much.

The biggest advantage RobotC has is the debugger. You can set break points, step through your code and watch variables change value. I don’t think PROS has anything similar. Another nice thing about RobotC is the ability to see in real time without running a program what the current state of an input is. So if you have a sensor connected to an input, you can see what number is being read from the sensor.

As far as learning a language and transferring skills to the real world, PROS is closer to real programming, but logic is logic and creating an algorithm so solve a problem is the same in either platform. The bad habits of including c files instead of h files are not really a big deal compared to learning proper indenting and organization of code.

The biggest advantage of PROS is the efficiency of execution and the ability to use any IDE. It is also free, but now so is RobotC so that is not much of an advantage anymore. As a computer engineer, I don’t see the advantage of using PROS over RobotC. For me, the fact that RobotC is the officially endorsed platform and the power of the debugger seals the deal.

As Simulink becomes more of a supported platform for VEX, any student that really wants to learn industry skills that will transfer to the embedded control arena should be more interested in Simulink than either PROS or RobotC.

My $0.02.

https://pros.cs.purdue.edu/tutorials/debugging/

Atom works surprisingly well on my potato. And my potato is really old. Like so old that it doesn’t support 802.11n old (pre 2009). I run Ubuntu 17.04, x86-32.

I’m surprised that you have trouble. Is it a RAM issue for you?

I think a combination of a few issues along the way. My students potatoes usually run ancient hard drives that have been thrashed to within an inch of their life. Combined with an install of Win 7 or 10 bloated up with other bits and pieces of trash and as few as 2GB of ram. I have less performance issues with Sublime, but damn, Atom gets really tiresome and slow once you get into the lower end.

Now days with changes to our schools policy and updates around the place there are less of these devices - but it still is a real PITA when you are waiting upwards of a minute for atom to start and 10-25 seconds to open a new file!

The idea with PROS is you can set up the debugging however you wish: live input from the computer, real-time data plotting, and more are all possible.

RobotC teaches more bad habits than just that one. Also, I would argue the indentation system built into RobotC (a) is very inflexible to different programmers’ styles and (b) teaches poor indentation practices just because it’s not “smart” (doesn’t look at indentation level of applicable opening symbols, for example).

Fair point, but not everyone is looking to go into embedded systems. For most people, knowing how to actually program things would be a more valuable skill.

@blatwell I’m sorry, from my perspective, printf’s doesn’t cut it as far as a debugger is concerned. I live in the embedded world where we don’t even have a terminal screen. But we have in circuit emulators and logic analyzers so we can see what is going on. Don’t get me wrong, printf’s are a lot better than nothing. but it is not the same as a real debugger with the ability to set breakpoints and see the entire context that your program is operating in.

@Barin Please explain to me or show me how real time data plotting works with PROS. While that is nice and would be very useful, still not the same as a real debugger. I am not saying that RobotC is the best environment, I would not choose it. I much prefer Visual Studio or Eclipse as an IDE. I would also suggest that an IDE that figures out your indentation level for you is very nice, but doesn’t teach a new person the value and discipline of correct indenting. Visual Studio has is really nice at indenting. However, I do not agree with how it structures complex conditional statements. As a programmer you need to learn the discipline to do correct indenting inspite of the environment you are working in. I wasn’t all that long ago that a lot of software was written in a notepad/textpad type of environment…

Again, I’m not saying PROS isn’t good. Certainly it runs faster. It is very cool and I applaud the people who have developed it. I just don’t see why somebody who is trying to learn programming would choose it over RobotC. 1)RobotC is going to be easier to learn. 2)RobotC is officially supported, it HAS to work. Perfect? No. But since it is the officially supported platform it must work. 3)RobotC has a much better debugger. Perhaps this should be first as it is much more important than the first two.

Please help me see the error in my thinking if I am missing something as to why PROS is so much better.

Edit: One further point, if a student is not targeted at the embedded arena, C is not the language to learn. But again, logic is logic. creating an algorithm in one language isn’t much different from any other language.

See JINX. PROS uses a standard serial debugging system that the user can adapt as they wish. (Debugging with PROS can easily become much more powerful than with RobotC if you’re willing to put in the effort to get there, which would be an excellent learning opportunity in its own right)

What I mean is that RobotC actively messes up my indenting. Visual Studio and other mainstream IDEs can be extensively configured to match the programmer’s style.

JINX seems similar to the datalog type functionality in RobotC. That is akin to putting in a real time data scope in Simulink. Still not the same as being able to set break points and set through code. @Barin you will get no arguments from me that PROS is interesting and an excellent learning opportunity. I’m still not seeing why PROS is so much better. I’ve been lurking around the forum for a couple of years. I’ve seen many threads that go by about how great PROS is. After digging through it and using it, I don’t see why I should push my club to use PROS instead of RobotC. When RobotC was expensive, I was going down the road of learning PROS and deploying it to the club. Now, I’m struggling with the motivation. RobotC seems simpler and arguably has better features. The two main reasons I can see to use PROS is the speed/efficiency of the machine code and the flexibility to run under any OS and with many different IDE’s. Are there others? I know I’m discounting the indenting problem of RobotC.

Great is the enemy of good. I think good is fine for this.

I know PROS is more efficient from a computing standpoint and matches the development environment I use. But, for me as a coach, RobotC is easier to deploy, manage, and support for new programmers in MS and HS. My approach has been to have the teams use RobotC with the expectation that if they decide to develop a VexU team in the future that may be a good time to move to PROS.

I would never stop a team-member from using it if they wanted to do it themselves, but I’m not going to promote it either. I haven’t see any operational limitations yet in RobotC that PROS would have fixed from an executional code standpoint. At least for the past 5 seasons.

If you think that using printf or other serial debugging is anything close to using a real debugger with the ability to set breakpoints and show both local and global variables, then you are completely missing the point.

If you don’t like the auto indent etc. (I don’t like it either, but I also don’t like what VS Code or eclipse does) turn it off.
text_prefs.png

I understand that even what PROS provides is far from a real debugger. My point was just that, with PROS, the capability is there to emulate most features of a real debugger, while RobotC’s debugger is limited to just what is built-in (which, admittedly, is quite a bit).

The turn-it-off argument will remain, but that doesn’t change the fact that the auto-indentation in RobotC can be quite infuriating. Visual Studio (less-so VS Code) has far greater flexibility in terms of tuning the auto-spacing/indenting than just an on-off toggle.

If RobotC had a CLI and could be integrated with mainstream IDEs, I think many complaints about RobotC would no longer persist.

@Barin If PROS only provides printf statements and some graphical representation of printf statements, then PROS currently does not emulate the functionality of a debugger at all. What PROS is calling a debugger is really just a data logger.

Even RobotC only really provides a very simple debugging environment, simple breakpoints and a rudimentary data logging functionality. and I have had times when they do not seem to work as well as they should. However, as far as I know, RobotC is the only VEX development platform that does provide this type of functionality.

Also, I’m still waiting for more reasons why PROS is awesome. I’m trying to keep an open mind here, but there doesn’t seem to be much meat to the argument. Anyone?