They asked the difference between Vexcode and Vexcode Pro, not Vexcode and PROS.
Vexcode is VEX’s official API for interacting with the brain, while Vexcode Pro is a currently deprecated IDE meant to develop with that API. The current recommended way to use Vexcode is with the new VSCode extension.
My bad, you are right about that they were meaning when it comes to them asking about VEXCode vs VEXCode Pro. I kinda misread that as OP was talking about PROS vs VEXCode.
If the spin command has no headroom then it simply goes full power and does not have any capability to adapt to deviations. That is why the spin command is slower, to allocate the headroom. I have tested myself and found that a 200 RPM motor will spin around 210 RPM±1 on voltage. This is a significant amount, especially for a drivetrain where competitive teams have negligible friction on their wheels, if built correctly.
You are correct, however, that the secondary reason sometimes is incorrect. This is known in the robotics industry as “PID on PID” and is sometimes implemented in many motion control algorithms like a robotic arm, where you have a main positional PID algorithm for moving an arm to a position controlling joints that have a velocity PID. It’s not uncommon for velocity PID’s and position PID’s to be used, however you are correct that it’s not necessary for, like, pure pursuit on a drivetrain.
and a step in the right direction, but the example seems un-necessarily verbose:
#define POTENTIOMETER_PORT 1
#define POTENTIOMETER_TYPE pros::E_ADI_POT_EDR
void opcontrol() {
pros::ADIPotentiometer potentiometer (POTENTIOMETER_PORT, POTENTIOMETER_TYPE);
while (true) {
// Get the potentiometer angle
std::cout << "Angle: " << potnetiometer.get_angle();
pros::delay(10);
}
}
To put it bluntly, tutorials should assume that individuals have at least some C knowledge, but should try to understand that the vast majority of individuals have very little prior knowledge to C++. Basically, there is a threshold where teaching is more important than merely being “right.”
And frankly, I have always seen the PROS library be oddly scattered all over the place, with a degree of fragmentation that is hard to just “Get Started” for newcomers. No “Next” that nudges newcomers on what to do next. It’s just pages that abruptly end.
Simply put, good tutorials introduce more individuals into PROS, instead of being verbose right off the bar. It should have examples look more like this:
void opcontrol() {
pros::ADIPotentiometer potentiometer (1, pros::E_ADI_POT_EDR);
while (true) {
double angle = potentiometer.get_angle();
// Print the angle to the command line
std::cout << "Angle: " << angle << std::endl;
pros::delay(10);
}
}
Now, new individuals who are learning PROS can better realize and connect the dots as to how the objects and functions work, and over time create the connection as to how PROS works fundamentally.
Then, you can explain after that it’s not necessarily C++ standard and show them the C++ standard version:
I’m sorry for posts-upon-posts. But over a period of time when I got into Computer Science I realized why PROS was so difficult to understand. Because PROS intentionally tries to be difficult to understand and would rather add quantity without double checking the quality. It has the capacity and man-hours to be easily understood however the programmers struggle to identify the root issue with PROS, and that is their focus. I believe they are not focused on lowering the bar, as per:
The most important characteristic of PROS to note when getting started is that PROS is just standard C or C++ programming. Anything that works in standard C/C++ will work as a part of a PROS project, and similarly the errors given for code that doesn’t work will match errors given for any similar C/C++ code. Learning C/C++ is essential for using PROS.
I’m just honestly confused as to why PROS decides to be non-intuitive when the vast majority of individuals simply do not have the classrooms that teach C++. Is the point of PROS to teach, or is it to close off a sector of intellectual capability to those with pre-existing knowledge? That is why so many people, including me, stuck to VEXCode because I didn’t have the resources to adequately understand C++ to its extent, and neither should PROS assume that everyone has the intelligence to connect the dots of fragmented documentation. I know VEXCode practically has no documentation but at least there are people dedicated to hold newcomer’s hands to actually understand how to use VEXCode, while with PROS (during my time using it), the people seem more dedicated to say “RTM” to fragmented documentation.
I came from a background in C++ and I found PROS to be extremely intuitive with very good documentation. I never used vexcode, but I was able to pick up PROSquite easily as I found it extremely intuitive. Additionally, the PID issue that was mentioned was referring to the fact that they likely use a velocity PID controller (and with the addition of the built in velocity PID controller) you may run into issues when you are trying to have 2 algorithms control for the same thing. You are correct in that having a position and velocity PID algorithm will work, but that is not the issue being stated.
Additionally, like @BennyBoy stated, it is possible to get speeds higher than 200 rpm with voltage control, but this is due to the fact that the spin function doesn’t use full voltage when the motor is already spinning at 200 rpm. For example in Spin Up we were able to get 220 RPM on a brand new motor that was attached to our flywheel. This ended up coming out to around 4000rpm with the direct drive cartridge. However, this is something to be careful with as your speed is not automatically maintained and the speeds might fluctuate more often.
A good way to visualize this would be with the following image.
Essentially, The Spin Function will spin at the average speed with of the block (so where the red line is) whereas the voltage will be at a random point in the (legal) range. So in this example, If you set both to their respective maximums, the spin function will spin at 200 rpm and voltage will spin somewhere between 200 and 220. (These numbers are estimates, I haven’t done testing on what the values actually turn up to be).
So voltage control can get higher speeds, but it’s less consistent at those speeds (unless you implement your own control loop).
However, I was under the impression that vexcode and pros both have voltage and spin functions.
I think you are misunderstanding something: PROS is not designed for new users. In fact, we often recommend people new to C++ to use VEXcode. Yes, there are many issues with our documentation we are aware. We simply do not have the manpower to have someone dedicated to creating good documentation. If you truly have a serious issue with the PROS documentation and want something to change, we are open source… nothing is stopping you from creating a pull request to change the documentation. The main reason for us being open source is that users can read our source if they want a deeper understanding, and they can request changes if they have a new feature, a bug they found, etc.
As far as the “RTM” statement goes, if you ask a question that is easily understood by reading the API reference, we will typically send you a link to the function/constructor and tell you to read. We don’t do this to call people stupid, we do it with the hope that they will get used to using our docs because almost every question we get is answered by them. As disjointed as they are in some places, almost everything is in the api reference. If someone asks a question that is not answered by the docs or they have some technical issue, problem with their code, etc. we provide active support to them (in real time where there is no post approval). Our support on discord is extremely good, it is kind of hurtful for you to continue writing post about issues with the docs and not cover aspects where we make up for it.
Please remember that PROS is not a full time job for us. It is a group of students that work on this in their free time without pay. Additionally, since it is a college club, members typically only working on PROS for a maximum of 4 years (and typically it is a few consistent members staying for 4 years, with a few more inconsistent people for 1-2 years). PROS is a learning opportunity for these students to gain real world skills in full stack development (kernel level, cli, vscode extension). It is verrrry rare for us to have members join with the goal of writing documentation. Usually they join because they want to improve their programming ability and have a good experience to put on their resume.
TLDR: PROS was not designed for new users, I agree the documentation needs work, we are a small team working for free in our free time and we enjoy coding not writing docs so that is what we will focus on, we are open source so anyone can make changes to our documentation.
Connor, I’m getting vibes from the last time you went on a tirade against PROS here on the forum.
So here’s the deal. I’m going to go point by point through your posts and point out numerous inaccuracies (as I have done several times in the past now). However, the ultimate problem with your posts here is your attitude. This is a collaborative environment where we can come together to learn new things and help inspire students to learn real-world STEM skills while competing in robotics. There is no need to demean the freely released work of others in the manner you are currently. If you want to help, contribute patches to the projects you are trashing (they are all open source for this exact purpose).
The irony of this statement is astounding. Are you seriously saying that having no documentation would be superior to PROS’s documentation? And how would having no documentation be superior for new students learning to program!?
Additionally, the assertion that VEXCode doesn’t have documentation is plain false. VEXCode has an online API reference, as well as documentation within vexcode and the VEX VSCode extension themselves.
James is indeed an invaluable resource for students who use VEXCode on this forum. But, treating a person as a substitute for documentation as you propose is not ideal, and while I can’t speak for him I would imagine he would appreciate it if more people utilized the documentation that exists rather than going to him first.
This is plain false. There are countless examples of students having trouble with PROS (and VEXCode) being helped through back-and-forth troubleshooting over the course of hours and days in a number of servers. This is true even for high level and fairly complex problems, and can involve hundreds of messages back and forth. People will be directed to documentation first if their question can be answered directly by it, which reduces redundant information and saves the time of everyone involved. However, if they come back and still have questions that are not answered by the documentation (as has happened many times), there are dozens of users ready to help them through whatever challenge they are having.
Again, this is false. Here, let’s take a look at a page of the PROS 3 docs:
Here we can see that the function prototype and example code utilizing that function are clearly delineated, as they are throughout the documentation. Let’s take a look at the PROS 4 docs:
Please explain where this “zero visual differentiation between a header and code” is in this screenshot.
This is the first of several times where you imply that the PROS team has deliberately made their solution hard to use for students. This is not only patently false, it is hurtful, offensive, and it wrongfully impugns the character of the students who donate their time to the PROS project.
First, Okapilib is and was always a separate project from PROS, developed by a different group of people, so I don’t understand the relevance here. Second, what part of the okapilib documentation is dated? The site uses doxygen, which is an industry standard tool, and the new PROS 4 docs use it as well, and I’m reasonably certain the VEXCode API reference uses it in some manner. Doxygen is a great way to tightly couple your documentation to your project’s code, and provides a standardized and modern layout for the documentation it generates.
As for Okapilib being unintuitive for new programmers, Okapilib was never intended to be for teams just starting out with C++. Via rule G4, teams must be able to understand how the libraries they use work and explain them to judges. If a team isn’t capable of reading a C++ function prototype and understanding how to use it, how on earth would they be G4 compliant while using something like Okapilib?
I that instance, I think it’s fair to say that with your level of knowledge at the time, it would not have been G4 compliant to use Okapilib.
There are no “formatting” differences between VEXCode V5 and VEXCode Pro V5 They use the exact same API, but with a different editor and file format.
Spins faster? Yes
Is more powerful? No.
The built in PID on the V5 motor is plenty willing to use the full 12V available when the motor isn’t spinning at its target velocity. This means that the built in PID absolutely is capable of producing peak power output from the V5 motor (which happens when loaded to around 50-60% of rated RPM).
Friction isn’t really the relevant factor here, especially on a drivetrain. The most important variable is how much load is on the motor, whether it comes from friction or from trying to propel a metal robot around. The most relevant use case for the extra speed voltage control gives is very low friction, high speed flywheels, where the extra 10-15% velocity can enable infrequent long range shots.
Right. @BattleCh1cken stated that Okapilib is no longer maintained. You stated that Okapilib is no longer maintained. Okapilib’s repo states that Okapilib is no longer maintained. Where is the disagreement here?
As noted on the front page of the PROS 4 docs:
Note
This website is for PROS 4 beta documentation and is still a heavy WIP. Expect to see bugs and rolling fixes to them. Please report any bugs to our discord.
The clawbot tutorial you’ve linked to is clearly broken and a WiP. It’s not fair to judge the docs on this page alone. Let’s take a look at an example from the docs pages that most students will be referencing regularly, the API docs:
The example given here is more than enough to understand how to use the function in question.
What is unnecessarily verbose about this example? I think it is a good example that also tries to demonstrate good coding practices such as the utilization of constants, and even displays the returned value so that students can see how the value displayed reacts to the potentiometer being turned. Would I write my code exactly the same way? Maybe not, but I think as an example usage for the function, this code is perfectly adequate.
You are misunderstanding PROS’s target audience here. The goal of the documentation is to document how to use the PROS API. The goal is not to teach students C++ from scratch. From the PROS 4 documentation:
Learning C/C++ is essential for using PROS.
That being said, anecdotally, I came into the 2018-2019 competition year with zero C++ experience. Through trial and error, and through reading the PROS docs, with very little outside C++ reference, I was able to start my C++ learning and program my robot in C++ for that year. So, despite it not being the goal of the PROS docs, the PROS docs were sufficient to teach me enough C++ to get going with programming my robot. And for the record, so were the Okapi docs and tutorials, which again I was able to utilize to get going with Okapi despite little C++ knowledge prior. So, I disagree with your assertion that the PROS documentation is extremely unfriendly to newcomers.
The code you’re pulling from here was in an API reference, not a tutorial. It does not make sense to have slightly different “beginner” and “advanced” examples for every function in the API reference. And again, teaching C++ from scratch is not the goal here so simply demonstrating good C++ practices in examples is more than enough.
This is an outrageous assertion, and is unbelievably insulting to the over 10 years of efforts from countless students and contributors to the PROS project. You can make statements about how one programming environment is easier to use than another, or how you prefer VEXCode over PROS, but to assert that the PROS team goes out of their way to make their project difficult for students to learn and use is an egregious overstep, and I think you owe the entire PROS team an apology for this immediately.
You don’t need to know advanced C++ to use PROS. You can get by with an incredibly basic understanding of variables, functions, and control structures which can be gleaned from the first few tutorials on that page. I know this because I and many other students I know were able to do just that.
Connor, you are free to guide students to use VEXCode when they ask for such guidance on this forum. You are free to list the reasons why you think VEXCode is better. It is not ok to attack the character of the PROS developers and maintainers. That is not what this competition is about, and it only serves to demotivate those who are doing their best to make things better for the students who compete in this competition. I hope you reflect on this and issue an apology to the entire PROS team promptly.
If anyone has taken a class in C++, it would make sense why PROS documentation may click. But the issue is the nature of PROS cluttering data into one without adequately differentiating the two. It’s like trying to climb Mt. Everest and you ask someone for advice for something small and they don’t say anything but rather give you two books with the same name and you open both up and they are saying conflicting things. The issue is not only PROS lumping different things into the same visual tabs, but also the fact that instead of answering a question and guiding individuals, they would rather go for the nuclear approach and ask you to read the entirety of C++ and then make connections to verbose barely-used-on-front-end code, that the programming structure they they provide in their examples should have only existed on a back-end. I understand that there are worse documentation out there (like Electron’s documentation on javascript), but I wholeheartedly believe that something with such a degree of history as PROS would have cracked the nut by now to being low-barrier (8 years or so?). If I had to guess, only around 4-5% of high schools out there teach C++. And I doubt that most high schoolers can adequately weigh the risks of hoping that they can make sense of C++ documentation. So the only solution is hoping freecodecamp can at least give them a pseudo-crutch.
That begs the question… What is the audience PROS is primarily aimed at? Given that only 4-5% of high schoolers or so, perhaps lower, have C++ classes, assuming that individuals must have prior C++ experience to use PROS, the audience clearly isn’t for high schoolers and neither do they wish to adequately assist individuals who have no prior knowledge in C++. Therefore the only people who have the capability are those who either:
Have the leisure to read the C++ documentation beforehand and make sense of it somehow
Taken a class on C++
And even after taking a class in C++, it may take a while to make sense of how the C++ documentation works. I understand that you may have had it easy with learning PROS, but the vast majority simply don’t because PROS doesn’t wish to assist those who don’t know much about C++. And, additionally, the vast majority of individuals in VEX don’t know about the Unofficial VEX Discord, and honestly I doubt I would recommend anyone to join it.
I believe we are both speaking the same language (pun intended). I already understand that, however that visualization is really solid at expressing the difference between the two.
The issue here is that for newcomers PROS and VEXCode both have their own issues. Newcomers are practically stuck between a rock and a hard place when it comes to these two systems, and at least VEXCode has the right mindset to have wonderful support to answer questions, regardless of how stupid the question may sound. And honestly, when someone learns VEXCode there is little incentive to learn PROS because making sense of the documentation is honestly quite a steep hurdle, especially in high school.
You are right about the fact that I could help with the documentation for PROS. However, just as like what you stated your reason is the same as mine… financial incentive. If there is no financial incentive, it makes sense as to why the focus is more on the resume-building incentive.
I feel like most people who are trying to learn PROS don’t really care about the emotional aspect. They just want to try to understand PROS usually but end up leaving because nobody is willing to guide them on understanding it a bit more, being defaulted to a “RTM” answer repeatedly. They don’t leave due to being offended, but rather because for every question they ask, a newcomer has to ask several more, just because they have to push through the bias of the individuals who know PROS who pretty much communicate to newcomers “If I make it as difficult as possible to give them the answer then they will be forced to read the API” which most often does the opposite for newcomers, making them leave at that point because they can’t understand the API in the first place. Most individuals who make a project do it for themselves and and those with pre-existing knowledge on the subject to primarily understand. It’s like the equivalent of a walled garden where the barrier of entry is pre-existing knowledge, and the PROS community not only reflects it but usually practices it too. And if I were a newcomer, and I used VEXCode, even if I learned C++ afterwards I may not switch to PROS because ultimately I would have graduated high school before I could even understand how C++ works, or find a class that teaches C++. And at that point the majority of colleges don’t have VEXU and therefore I would have been on my way, without even having the capability to learn PROS because nobody is there to help teach C++ in some adequate way and answers questions regardless of how stupid the questions are.
I’m not really trying to be harsh, but to communicate my previous issues trying to learn PROS back in high school and try to circumvent this from happening for new users who eventually become intermediate, finding no other alternative but to stick with VEXCode. I switched to PROS for like one year and gave up because nearly every question I asked about C++ was met with “RTM” which is a very very bad practice and honestly disingenous to someone trying to actually learn something and is showing genuine interest.
I don’t know you. I don’t know your experience. But these posts, and the ones @sazrocks references, indicate to me that this might be something to consider before posting.
This may be one of the few times where I feel right about my attide. My directive isn’t just to PROS, but VEX in general. If you look at FRC’s Documentation, it genuinely puts VEXCode and PROS to shame.
The fact that VEXCode has practically no documentation for newcomers is embarrassing but, yet again, at least jpearman and many other helpful individuals are on thos forum to help newcomers. I am understanding that PROS is new, but as it stands, VEX really is not doing a good job with documentation, and as I see it the only genuine documentation may be behind a pay-wall for their PD+ platform (but I haven’t checked it out neither am I willing to pay in the first place).
Correct. If I’m a newcomer, I’m at zero. I wouldn’t understand the documentation. I would need to rely on the community. That is why despite PROS having documentation and VEXCode not having any, VEXCode will beat PROS anyday and is doing so by just one man, @jpearman. And heck, even if I were intermediate, PROS would be too un-necessarily non-welcoming and I would still rather stick to VEXCode.
I am aware of the online API. In fact, I have referenced it in the past. But VEXCode’s API is so much worse than PROS that I see it as not even worth believing that it exists.
As of late, no adequate documentation for newcomers exists when it comes to VEXCode or PROS. The only “documentation” and resource that exists is @jpearman . And you are right about the fact that he is one man. And I’m arguing the same thing… Why is one man the only good source of documentation? Why haven’t I seen adequate documentation for newcomers for both VEXCode and PROS, assuming that an individual is at zero.
This does not match my experience. I’ve seen many new teams learn programming both from Vex’s guides/APIs as well as from PROS. I’ve seen teams at competitions help other teams get a basic “move forward” auton to work.
I can’t speak to your experiences, nor all newcomer’s experiences. And maybe my observations contain an element of survivor bias. Though seeing teams who don’t speak English and literally come from refugee camps learn and succeed at having a functional robot leads me to believe that the situation is not as dire as you seem to think.
Immediately presented with videos, pictures, examples. And when you go further into the tutorial they provides a plethora of code with immense and detailed, easy to read commenting:
This is my first post on VF but I’ve lurked for a while and read this and other conversations involving you and I have a lot to say.
For context, I am graduated and into a Computer Engineering program but have been a PROS user for 3 years, a VEXCode user pro for a year, have used VEXCode Python & blocks (though not on a competition robot) and used RobotC in IQ for a year. I am also (as my username suggests) a developer for LemLib and have worked closely with PROS team members on stuff.
Now for my statements.
I have three (connected) points for this:
1.
“The docs are bad but at least there’s community/developer support” is a bad take in my opinion; in software, support should accompany documentation but is not a reasonable substitute.
I’m going to go off on a slight tangent here. In my first ever CS assignment, I went above and beyond with my code and covered cases not mentioned in the problem statement. The professor complemented my use of more advanced topics, but was deeply disappointed by my lack of sufficient documentation and gave me only a 60% off that alone. This was in intro to programming one. Most of the VEXCode api reference docs are not much better.
2.
From my experience, and as stated above, you most likely asked a question that is easier to find an answer to by a quick google search or trip to the relevant docs than asking. Additionally, almost any time I’ve seen someone ask a legitimate question, even basic ones, they tend to receive support - oftentimes from PROS or template developers directly - much faster than is possible on VF.
I count minimum 100 threads on the VTOW Help forum tagged as software related, of which every single one has had timely replies, and almost every has been solved or redirected to another solved thread for the same or a similar problem. This is primarily PROS users, but also includes support for VEXCode, vexide, etc (even one from a RobotMesh Studio user), as well as developer support for major templates like EZ, LemLib, JAR Template, etc. There are another 100+ answered threads on the LemLib Discord, and more in VTOW’s software channel and other places.
This is completely inconsistent with almost every single case I’ve seen or heard of in my almost three years active the community besides apparently yours. Do you have any other examples you can share?
3.
We all love James, but his job description doesn’t include helping people on VF. None of the VEX employees who work on VEX Forum even need to be here besides wanting to help competitors.
We really shouldn’t be relying on James forever. Yes, that is hard because of the lack of documentation, but that’s exactly my point. PROS docs can stand on their own much better than VEXCode ones can, and PROS community support will probably stay alive as long as PROS exists and the active VEX community stays at a similar size.
Also, James spends so much time doing code support on the forums, give him a break.
(Also I agree the documentation is generally better than anything in VEX but I don’t know if it completely “puts it to shame”)
2.
(And similar previous statements)
I honestly think that free resources (learncpp has already been mentioned in this thread) and just doing projects is a pretty good way to get started learning coding, and is what I did. It’s definitely more than a “crutch”.
3.
I can think of, off the top of my head, three top North American VRC or VEXU teams who started with VEXCode and continued with it - 9181N/TNTN, 2775V, and 2029C. Every single other I can think of either started with or moved to PROS. Generally, I know more “successful” teams at any level - from the richest privates to teams from underfunded public schools in Washington (which is also my background) - who use PROS than VEXCode, and many switched to PROS as part of whatever improvements they made as a team after which they became successful. This includes both template and custom code users. (I know this is just anecdotal evidence but I think the scale of it is significant, definitely more than yours).
4.
This is a small one but it annoys me. This is completely incorrect. PROS has existed over a decade, and I’m pretty sure it’s older than VEXCode (someone who’s been in the community longer than me will have to verify). Also as far as I can tell, PROS 3, for V5, was in development before V5’s public release.
5.
This message was not kept in the thread split, but I would like to address it anyways (original message is here. I will be going over this out of order, but you can read the original for context).
I have a few things to say.
Potentially in the future, I am working on making a lib of my own, planned to be available for VEXCode and PROS upon release that pretty much fixes a lot of the issues of lackluster libraries:
Congrats on making your own library, but do you have to be rude/provocative with almost everything you say. I think you owe all existing library developers some respect for all the time they’ve likewise volunteered to making them, even if yours does fix all our “lackluster” elements, which I find unlikely.
However, you will realize that even with LemLib, even odometry configuration seems confusing and the path planning seems un-necessarily complex and could have been simplified a lot better using a list of lists/vectors.
This one I am personally interested in. Please explain to us in more detail your specific issues with LemLib. Odometry configuration is undergoing changes in our 0.6, but is generally only as complex as is reasonably necessary for the algorithm to work as written. Path formats are not designed to be touched by humans, but instead using path.jerryio (can’t link because of new user limits), which provides a visual interface that is much better to use than a “list of vectors” (assuming I’m reading that statement correctly).
That is why LemLib is so popular, because people recognize how dated PROS and Okapilib’s documentation is. And, genuinely, even LemLib itself can still be scary for newcomers.
You fundamentally misunderstand why users use LemLib. It’s not because PROS documentation is bad, it’s because they want easy, good, motion algorithms and LemLib is basically the best option for that which doesn’t outright break G4. Our “competitors” (whom we actually work with quite frequently to the benefit of all parties) in that regard are EZ-Template, and JAR-Template, both of which also have large userbases, and VOSS, which is new but has seen some early adopters. The newcomers who find LemLib scary, in my experience, are the ones who’ve never read the tutorials and don’t know a thing about programming, same with PROS (and kind of VEXCode), and we’ve been able to guide most onto a track of figuring it out.
In conclusion
I’ve responded logically to all your arguments as best I could, but I can’t help but feel like some of them are in bad faith. Most of your reasons boil down to “documentation bad, community bad,” where I think you’ll find a huge majority number of PROS users (both long-time and new) will disagree with you on both points. Honestly, this whole thing feels like you’re using your previous bad experience as your primary or only reason to dislike PROS. I wouldn’t actually care about that, besides that you’re attacking PROS, the team, the community, and template developers because of it.
I will finish by reiterating what Charles said, which as far as I’ve seen you have yet to acknowledge:
I hope you will heed his words and we can end this conversation here.
You are right.
A lot of what I sad was primarily out of frustration. I apologize for the harsh words and honestly I should know better. I don’t really know much as to where this frustration came from, but if I had to guess it’s the fact that I have a disability and sometimes reading books are not my strong suit, and sometimes having someone explain things and answer questions I find to be a lot easier to learn. And even when I took Java Courses and knew Lua, I never really understood C++ and its entirety until I started to study college. I am making such statements because in the past the resources weren’t really there back in 2016-2019 years, however I believe it may have changed over time and I just dind’t know about it. I understand that PROS is written by people in the backgrounds doing work for free, and ultimately a lot of the time it’s the lack of being heard that might have caused further frustrations. Generally, I feel like PROS is a very good library and it has a very high ceiling, but I really wish that PROS can put more effort into lowering the bar the same way the bar is for VEXCode. I should have acted better back then and I should be more cognizant of being more respectful as a community. Because, as what you all said, we are a community and we should support each other. Honestly, yet again, I’m sorry.
You are right. I can see that both PROS and FRC has very similar structures. I don’t really mean how something appears to be, but rather the quality of what is presented. I feel like WPILib is oftentimes more concise and straight to the point than PROS. I think both the FRC and PROS library would benefit by providing links that immediately help the user by immediately jumping into recognizable code that has practical input and output.
For example, a tutorial to introduce users to learn C++ can look like something along the lines of:
Its not the same thing at all though. PROS is first and foremost a kernel for interfacing with a robot, it doesnt really try to be much more than that, so a simple API reference is adequate. More extensive examples would be nice, but are no means a requirement.
WPILib is an advanced library with a high degree of abstraction, so it takes a lot of explaination since you aren’t dealing directly with hardware.
/**
* Runs the operator control code. This function will be started in its own task
* with the default priority and stack size whenever the robot is enabled via
* the Field Management System or the VEX Competition Switch in the operator
* control mode.
*
* If no competition control is connected, this function will run immediately
* following initialize().
*
* If the robot is disabled or communications is lost, the
* operator control task will be stopped. Re-enabling the robot will restart the
* task, not resume it from where it left off.
*/
void opcontrol() {
pros::Controller master(pros::E_CONTROLLER_MASTER);
pros::Motor left_mtr(1);
pros::Motor right_mtr(2);
while (true) {
pros::lcd::print(0, "%d %d %d", (pros::lcd::read_buttons() & LCD_BTN_LEFT) >> 2,
(pros::lcd::read_buttons() & LCD_BTN_CENTER) >> 1,
(pros::lcd::read_buttons() & LCD_BTN_RIGHT) >> 0);
int left = master.get_analog(ANALOG_LEFT_Y);
int right = master.get_analog(ANALOG_RIGHT_Y);
left_mtr = left;
right_mtr = right;
pros::delay(20);
}
}
yeah I agree that seems pretty practical.
PROS can put more effort into lowering the bar the same way the bar is for VEXCode
I don’t want to sound defensive here but a ton of effort goes into making the VSCode extension more user accessible especially for newer users. You can ask anybody who worked on making the extension recognize doxygen comments or trying to have it pull from our docs.
When PROS 4 was being developed, being more beginner accessible was also a criteria I emphasized to the team (even having been critisized for it).
While I understand that there’s a part of the VEX community that likes to gatekeep around PROS usage as an “ultimate form of programming” (hyperbolizing here obviously), we’re still not going to be the classroom accessible plug and play super-platform that anybody can use with little to no C++. There’s a balance and niche that we fill, and it’s the same with VEXCode as well.
Besides, templates can go either way depending on how the author designs them :P.
At the end of the day, PROS is a programming platform for kids made by slightly older kids who want to give back to the platform they used through their years in VEX. I don’t think it’s that deep.
I am essentially the reason 2775V and JAR-Template use Vexcode instead of PROS, but not for any of the reasons Connor gave.
I just prefer the official-ness of Vexcode; it’s the same reason I use Windows over Linux. As an example, when vex released the V5 IMU in early 2020, we could use it immediately in Vexcode, but using it in PROS would have taken another month because the PROS team didn’t also manufacture the IMU like Vex did. I’m still a big fan of PROS, EZ, and the lem team.
@Connor if you’re genuinely interested in fixing the “lackluster” templates you’ve seen, join the LemLib/EZ/JAR team. The last thing any new team needs is another library to pick from.