This is awesome and now there is absolutely no reason to use EasyC or Pros. I just wish it happened before I purchased a 30 seat RobotC license.
Iâm going to have to disagree. Sorry, but function pointers, Eclipse, task payloads, lots of partially implemented C++ features, etc.
PROS was never the âpoor manâs ROBOTCâ IMHO.
Also donât dump on so many peopleâs hard work to make VEX better, you realize that the competition the PROS team (and our savior James) brought to this market surely influenced VEXâs decision to include ROBOTC in their KOP for free.
For a lot of teams it was. I know my school team (5678) was just about to switch to PROS because the school wouldnât give them funds to get RobotC. Obviously, this decision has made them rejoice. And for power user programmers, Iâm sure that PROS is an excellent choice. However, too many teams will always prefer the simplicity, support (as in guides and user base of other teams), and quick learning curve of RobotC.
Iâm not trying to dump on peopleâs hard work, but itâs just true that RobotC is a better fit for most teams, even if it was paid.
I never understood why people always thought RobotC was so much easier to use than PROS. PROS has very clearly written documentation all in one place and a nice, well explained function library - something that RobotC either lacks or has cleverly hidden. Code questions for PROS usually get answered right away just like RobotC. The times when people have to wait a while or have problems are when they are trying to do something weird with the installation or explore the full capabilities of some of the more obscure API functions. And as Cody said, the eclipse features alone make it preferable over RobotC imo.
Half the teams that use robotc dont even know what eclipse is.
Thatâs true, the main reason why so few people use PROS is because most people donât know it exists and think RobotC is their only choice if they want a decent environment in which to program their cortex
You donât have to know what eclipse is beforehand in order to realize that it has wonderful features that youâll come to find annoyingly absent in RobotC. I didnât ![]()
Yeah, but people who are using robotc so extensively that they are actually affected by these problems will also bother to actually do the research and figure out what pros is. Everyone else just doesnât need the extra convenience and extra features. And by saying that they âdonât know what eclipse isâ I also mean they donât care enough to learn how eclipse works. RobotC is a lot more intuitive to people who have never seen programming than you would think. âWhy are there multiple files in a project?â âHow do I even use PROS with eclipse?â âtf are plugins?â âWhy do I need to âimportâ something?â
I donât know why anyone wouldnât need/want extra convenience.
I still donât see why RobotC is more intuitive. Thatâs the conventional wisdom, I know but . . . sigh. Someone should do a clinical trial.
I mean, ok, if the multiple files thing actually confuses some people, I donât have a response for that, other than that it helps you keep your code organized. But to your other points: You run the installer, you need neither know nor care, you donât need to import anything.
VEX wants this robotics program to expand out farther than it already has. One of the main things that they want to do is create more programmers. They have implemented parts of their plan to grow the like for programmers by making Robot Skills a combination of Driver and Programming Skills, increasing the importance of APâs, or Autonomous Points, and now, by making the most used and the most easy way to program robots (in my opinion of course :))at their dispense free. That is my take on this whole thing.
As for the debate going on here, I would have to agree with @phantom285A. VEX wants to get people interested in things that they would have never thought of doing before. IF you replay the ESPN2 airing of VEX Worlds 2016, the leader of Swampbotics (I think, so donât quote me) said that he was an average jock who tried something new and loved it. PROS is for itâs name: Pros, or generally for established teams who want to try something new to try some different things on their robot. While it is an amazing program, RobotC has a lot of the same things, but it is easier for the general populous to pick up, while having many complex functions that established teams can still use and win competitions with. The only thing that PROS was overall better at than RobotC was the price. Now that isnât the case anymore.
Another big thing that RobotC has going for it is that it works across all of the VEX platforms (IQ included) - this is a pretty big thing for Middle Schools with both IQ and VRC. For Elementary kids, they may have 3-5 years of experience with RobotC by the time they get to Middle School these days.
This sounds about right⌠PROS isnât designed for anyone to learn programming. PROS is intended for people who have learned how to program and want the full flexibility youâd expect out of embedded programming. Having come directly from an embedded systems related internship, I know first hand that a lot of the ideas that PROS has (and will continue to have) translate very directly into industry norms. Thatâs not something any other environment for the VEX platform can boast.
That being said, if everyone would like to see learning this platform to be easier, Iâd love to see that happen. PROS is maintained by several university students and is supposed to be a community effort - so we donât necessarily have the time to dedicate to making all the curriculum a company can do. If anyone is interested in helping in this regard (or any) - feel free to shoot us an email at pros_development (at) cs.purdue.edu or DM me personally.
except for one other âŚ
Oops
sorry. ConVEX too
PROS in my opinion is much better for learning. Thereâs so many more resources to learn C than ROBOTC and once you learn C you only need to learn the PROS API. And as long as it isnât anything related specifically to the PROS API you can ask for general C advice. And if itâs something pertaining specifically to the PROS API it usually doesnât take very long to get an answer here on the VEX Forum. Iâm currently am the only programmer on my team but thereâs other interested and Iâm having them go through this tutorial or whatever tutorial they want, then Iâll show them how to use the PROS API.
But ROBOTC is C. Itâs true there are some advanced features missing but 99% of student code will not use those features anyway.
James while I admire your work and everything you do for the community I believe youâre wrong and are going back on what youâve previously said. You stated today:
When a simple google search restricted to the vex forum will find multiple posts of yours in the past claiming otherwise:
In that same post later on:
In another post:
In a much more recent post:
Now with that and by definition of a sebuset, how can a subset of a language be the language?
Okay that was a little overkill. It is pretty much all included in the statement â99% of student code will not use those featuresâ .
It is pretty much C. Does it follow the C standard perfectly to the letter, obviously not. If it did we wouldnât be having this conversation. That doesnât mean that the students are not learning c. The learning curve of ROBOTC is a lot less steep than PROS. It makes sense for 99% of the user base to use ROBOTC. If it didnât people wouldnât use it so much.
Ouch, I feel like a politician now with quotes being used out of context. Here is the original thread from which some of those were taken.
They were true at that point in time, almost five years ago when ROBOTC was still on version 2.X (version history. ROBOTC V3 introduced both pointers and a local stack on a per task basis, these features addressed the two big concerns I had.
I stand corrected in that I have said that ROBOTC is a subset of C, I did say that there are some advanced features missing, I was referring to things like function pointers, however, if you consider the parts of the language that someone new to programming will learn, variable types, language syntax, program structure then itâs not unreasonable to say that ROBOTC is C.
As further proof, itâs worth looking at the code in this project.
This code was originally written for a project completely unrelated to robotics, I ported this over to the cortex about 3 years ago. There is a version in ROBOTC, a version in PROS and also one in ConVEX, the major difference between the three are the library functions that each one calls, for example
here is the ROBOTC version of one of the functions.
void
P3DebugPacket( p3pak *packet )
{
unsigned char *p;
int i;
p = &packet->command.data[0];
for(i=0;i<packet->cmd_len;i++)
writeDebugStream("%02X ",*p++);
writeDebugStreamLine("");
return;
}
and the PROS/ConVEX version of the same one
void
P3DebugPacket( p3pak *packet )
{
unsigned char *p;
int i;
p = &packet->command.data[0];
#ifdef _TARGET_CONVEX_
for(i=0;i<packet->cmd_len;i++)
vex_printf("%02X ",*p++);
vex_printf("\r\n");
#else
for(i=0;i<packet->cmd_len;i++)
printf("%02X ",*p++);
printf("\r\n");
#endif
return;
}
writeDebugStream is replaced by vex_printf or printf depending on which runtime library is available but itâs all C code.
If the learning curve of PROS is more steep than ROBOTC itâs certainly not by much, itâs really stinking easy to learn C and PROS is C plus the API.
C is the least forgiving language I have ever seen. It is very easy to do something horribly wrong. We are just doing our best to suggest an environment to students that wonât end in things going horribly.