"Best" Programming Software for V5


Yep. It’s why we’ve got some easier-to-learn languages in Robot Mesh Studio in addition to C++. C++ is… not a newbie friendly programming language.



because part of the point of PROS was developing a solution for people who knew what they were doing already… That’s how the original PROS for cortex was presented, and back when I also had a solution for cortex, I said this right at the beginning of the thread.

ConVEX does not have an installer.
ConVEX does not have an IDE.
ConVEX is not easy for beginners to use, in fact, don’t even try, however…

ConVEX is provided as Open Source, that’s right, if you want to brick your cortex, now you can.

PROS for V5 is much better, but there is an expectation that you already have a good grasp on programming. I saw many programs written in PROS at worlds this year, it’s surprising that some of them ran at all, there were so many rookie mistakes.



I understand what you mean. However, if you find improvements, and you think you can explain better, the PROS devs will be happy to include any PR (pull request aka modification) you make to the docs =)

All the examples you provided, there is an answer that is not particularly hard to find.
“cli” on google returns this

For the battery and temperature commands, remember that PROS just exposes existing vexOS functions.
They probably wouldn’t know either what the command did aside from the description provided to them by VEX. Your guess might be just as good as theirs. However, considering that on the same page there is pros::Controller::get_battery_capacity() , pros::battery::get_capacity() seems relatively clear that it refers to the main robot battery. Same with the temperature.

The Makefile is the file called “Makefile” in your project directory. It is a file used by gcc make, which is an industry-standard tool that allows developers to specify how their entire project gets compiled and manages the use of the actual g++ compiler. It is used in the majority of real-world C and C++ programs.
Again, if you don’t know the term from previous programming experiences, which is perfectly reasonable, you can still find it on google fairly easy.

VEXCode, for example, also has a Makefile. So does VCS. But it’s hidden so you never have to deal (or learn) about it. Is that better for educational robotics? Idk

Yes, PROS assumes external knowledge. But that knowledge is not particularly hard to find, so PROS opts not to explain every little thing when there are better explanations than they could ever make just a google away.

I understand that PROS can be confusing for people. It was for me too when I started. But I took the time to try to learn the lingo (for which there are great tutorials like learncpp.com) and it started to make sense.
For example, I don’t think it would make sense for the PROS docs to teach what a “forward declaration”, “compiler”, “RTOS”, “typedef”, or “literal” is. I think the PROS docs should be documentation concerning PROS-specific stuff, and not reinvent the wheel in terms of teaching programming concepts that is taught in most programming tutorials available.
Btw, I am sure they know they are dealing with high-schoolers here. None of this is university-level stuff, this is miles below what they are probably learning in class. Not to say that this stuff is not advanced, but you don’t need a degree to understand it, just several hours of reading.

Rookies who want to scrape together a competition code should definitely stick with RMS/VexCode. But if people want to pursue higher level programming and learn along the way, PROS is great for that. The problem is not that PROS omits information that the other languages include, the problem is that PROS deals with more advanced concepts and features with more transparency so they need to use more complicated terminology.



This is a great point. It is not the job of the PROS devs to document stuff that isn’t PROS. If you want to be a programmer, you’re going to have to get used to using google and stack overflow to answer questions that you have. It would be a waste of everyone’s time to explain the basic concepts every time.



Additionally, if you go out of your way to take a course or read an in-depth book or tutorial, you will have most of the information you need available before you even know how to use it.

Something I have found with programming is half the battle is just knowing something exists. If you know it exists, you can plan with it in mind, and when the time comes to actually use it, you know where to look. This is, in my opinion, the biggest benefit to lots of reading. If you don’t know it exists or is possible, you won’t ask about it. But if you do, it adds to the arsenal of tools you develop as a programmer.



I find this confusing. The pros docs are really straight forward because of the tree system. Here’s an example search for getting a motor temperature in c++:

  1. Go to docs
  2. Not okapi so I go to the base pros section
  3. I’m using C++ so I click on that
  4. I want the motor API so I click on that
  5. Reading the table of contents, I see telemetry so I go to that section of the contents
  6. I see get_temperature and click on it.
    And now I have a short but descriptive explanation of the function with an example application.
    The only time I ever search more that a few min is when the thing I’mn looking for doesn’t exist.

How is that unnecessary? Would you really like to eliminate all the shorthand in programming languages? Also C is just the same. For example, pointer->foo is shorthand for (*pointer).foo. Advanced things require more advanced symbols.

How can you properly judge LVGL without ever having used it? While it is not the most intuitive, it is very powerful, and if you read the docs you can make it work.

Can you show an example of this? I find that almost all of the information is quite clear.

This is necessary. The PROS devs (or any other doc writers) do not have the time to write an essay on file systems every time they ask you to change a config file. If there is missing knowledge, it is the responsibility of the user to acquire that knowledge

And high schoolers are perfectly capable of typing “cli”, “makefile”, “RTOS”, “literal programming”, or “typedef” into a google search. I would argue that it is because the audience is assumed to be in high school that these concepts have not been explained. Once again, this is not necessarily because the reader is assumed to already know the concept by heart, but because the reader is assumed to be capable of looking up such information if necessary.

The vast majority of the PROS docs are perfectly straightforward. While it is true that there are gaps and errors (some that I’ve found myself), these are few and far between and quickly corrected when pointed out (sometimes within the hour).

A 20-30% google search rate is actually quite good. At the very least it is not a bad thing, especially when the thing you are searching for is not part of PROS. Most other docs are not nearly as friendly to newcomers.

I do find it kind of contradictory that you complain that the pros docs are messy while at the same time you insist that they explain many more basic concepts, despite the fact that 95% of the audience already knows these things. How would doing so not lead to increased clutter?



Thanks for your feedback. As others have mentioned, PROS is largely meant for people who have a good grasp on programming concepts already, so we don’t go out of our way to explain concepts that are not specific to the PROS environment.

That said, one of the benefits of being open-source is that we can integrate community feedback pretty easily. If you find things are confusing (especially with respect to the documentation), I highly encourage you open an issue so that we know there are problems to fix, or even suggest edits by opening a pull request.



Hi Connor,

You make valid points from your level of experience. I think that is a point missed by many, that Best Programming Software has different meanings based on the experience of the person using it. A novice middle school student might be perfectly happy and expressive with drag and drop block programming. A high schooler getting competitive may learn a lot with VEXcode. An experienced coder would thrive with PROS. It is not a one size fits all world. I’ve see many people jump on a coding platform bandwagon before they are ready to use it effectively, or remain hindered due to the limitation of a chosen platform and could not move on. This is the great thing about VRC, you have a lot of choices and a lot of great support from the community.

C++ syntax does give me shivers sometimes, but I move on and focus on the task at hand.



I am curious if you have put this much time into pros looking for things have you ever actually submitted any issues or pull requests to get anything “Fixed”? It is open source so all you have to do is put a little bit of work in like the rest of the community and let them know what would be better for the end users.

But they fail to realize the audience of the readers are high schoolers while they are college students or teachers who have most likely a high knowledge of C++ and computer science definitions as they are pushing towards a degree or already have one.

They do have an audience of students that have a higher understanding of programming languages, and if this is to hard for a user like you, follow what others have said go with something easier.