PROS vs other programming software

For vex programmers, there are several sets of software that you can use.

If you don’t use PROS, why don’t you?

  • PROS is too hard to install
  • PROS has too high of a learning curve
  • migrating code to PROS isn’t worth the effort
  • other (comment other problems that you’ve had)

0 voters

Personally I use the built in drive program on the v5 brain, I find it very easy to use since I can barely control the robot at the cost 0 programming time and convincing the judges it’s my program.

On a serious note are there any benefits to using pros? VC has built in api and motor controller. I have used pros but eventually switched to VC.

I want to make this clear: you can do almost everything you want regardless of your platform (I’m going to focus on VEXCode and PROS). Both use a standard C++ compiler and toolchain, both have full access to all vexOS commands and functionality (motor, sensor, brain, etc).

VEXCode is designed for educational programs, schools, clubs, mentors, and teachers. It is the official programming platform for the V5, which means it will always be first to support new sensors and functionality. It is relatively straightforward to install, use, and learn, and has a good community, knowledgebase, and examples backing it up.

VEXCode is not extensible and is only usable in the way it was intended to be used (only using the vexcode editor feature set, on Windows or Mac). The VEXCode API contains the minimum set of functionality to have full interaction with the robot and nothing more (other than the small chassis abstractions).

PROS is an open-source project which is designed to be as flexible and extensible as possible. There are no restrictions over which platform/os you want to use or which editor you want to use. However, aside from providing a (imo simpler and more straightforward) minimal API to interact with the robot, PROS does contain some extra functionality that you can choose to use.

PROS has a template/package ecosystem which allows you to make modular libraries of code and install them into projects (eg https://github.com/theol0403/gif-pros). PROS by default comes with two of these such libraries:

  • OkapiLib - a library of device/chassis abstractions, controllers, and utilities (What is OkapiLib and Should I Use It?)
  • LVGL - a library for GUI creation that involves building using buttons, menus, and widgets, instead of drawing lines and rectangles manually.

These libraries, should you choose to use them, are very powerful and also expose you to advanced styles of programming. However, they are not necessary to program a robot.

PROS also has a CLI (command line interface) that makes interacting with PROS projects (compiling, new projects, etc) and the v5 brain (uploading, terminal, etc) scriptable and usable from other editors. This is (for me) a much nicer way to interact with my code and the robot, and is faster for me than clicking buttons.

For beginners in VEX, VEXCode is the right choice. The built-in command reference is excellent, and the feature set is perfect for most users. However, as you get more experienced, and some functionalities in PROS start to interest you, it is a good idea to improve your C/C++ and skills then jump into PROS.

Both platforms have a good community and support, though the open-source nature of PROS and the higher-level community it draws is more appealing to me. Both default editors are good and fairly equivalent in features.

Now, here are my PERSONAL reasons why I could never use VEXCode and favour PROS:

  • PROS supports Linux, which is my daily driver, and PROS has a CLI. This is a must for me.
  • I can use any editor, plugin, theme, or language server (I use VSCode + Neovim, custom themes and plugins, and Clangd + TabNine for the language server).
  • I strongly dislike the VEXCode API, it is not intuitive, concise, nor beginner-friendly. It is easy to copy/paste, but the design is quite convoluted with so many ways to do the same thing (ie spin a motor at some speed). PROS, while it may expect more understanding of C/C++ to read the documentation, has a very simple and straightforward (one way to do one thing) API.
  • The PROS docs are excellent and the code is open-source if I have questions or improvements.
  • The extra functionality in PROS is very useful, such as the package ecosystem, and built-in libraries (especially OkapiLib abstractions and utilities).

So,

Is not accurate, there is nothing in PROS that makes it more accurate to move a motor (only easier by using okapilib). PROS and VEXCode can both use vexOS’s integrated motor control, and you can also run custom PID on both of them too.

However, all the options in your original poll are reasonable reasons to not use PROS. VEXCode has become an excellent option (in contrast to VCS), and you really only want to use PROS if any of the reasons above apply to you.

I’m curious what the results of the poll will be, as I hope it won’t be “too hard to install” because that is one thing that PROS does worse than VEXCode.

(oops this reply was longer than I thought it would be :stuck_out_tongue:)

21 Likes

Very good response from @theol0403, I definitely agree the PROS documentation is really well-built and concise. VEXCode’s api is not the best, and the explanations are quite vague and lacking. The VEXCode API would do better with example programs of a sort as well (as of which, it has minimal, if not none). Regardless, the user MUST have previous coding knowledge in order to understand both API’s. I believe, for any programmer and Engineer, it is a very good idea to join Computer Science class in High School. Computer Science is not just essential for robotics, but many colleges have the first semester of Engineering solely for coding. For example, if you want to be a Mechanical Engineer at Texas A&M, you are still required to learn coding even if your Engineering Degree isn’t even related to coding. So, taking a computer science class will not only help you with understanding these languages in VRC but it will also prepare you for life as an Engineer. That being said, I think it would be beneficial joining a Computer Science class in High School, and at least try PROS and understanding it senior year in High School (11th-12th grade). The time I realized PROS potential was when I finally spent the time looking through C++ resources online to understand the basics of C++. But, using VEXCode is not necessarily a bad idea either. VEXCode is very nice and helpful for those trying to start learning to code, but once you get into more sophisticated coding (multiple files and headers, with the addition of classes and other aspects), the VEXCode application starts to get confused and sometimes gives false positives. VEXCode has a limit to how much it can handle within its user interface (but it is far better than VCS by a landslide). But as time persists, if you start to become more sophisticated in programming, you will need to consider using PROS.

6 Likes

Here’s the thing:

I don’t doubt that PROS is a more effective frogramming software for several reasons. (better API, Okapi, better motion control). However, I believe that there is little that can be done in PROS which can’t also be done in VexCode.

Since my team is much more familiar with and understands the syntax of VexCode, it really is not worth the effort of migrating to PROS at this point. We’ve already implemented odometry and motion control, so there’s little else that PROS has to offer as far as I’m concerned.

That’s why my team is not switching, however, I would recommend that any new teams who might be interested in VexCode look into using PROS instead.

6 Likes