My Vex competition teams are considering swithching from EasyC to RobotC for programing their competition robots next season. It it worth the switch? If so what are the benefits?
RP
My Vex competition teams are considering swithching from EasyC to RobotC for programing their competition robots next season. It it worth the switch? If so what are the benefits?
RP
RobotC gives you a lot more versatility than EasyC does. It is much better practice for what people do in the real world. It’s also multitudes faster than EasyC, since it’s all typing. You can’t click and drag as fast as you can type everything.
Do it. It’s worth it.
If you know how to program already, there is basically no point in using EasyC, it seems. Our HS team never used RobotC, but in retrospect, we probably should have. It’s faster to type (once you memorize all the functions like SetMotor( , )), and it’ll teach you how more “real” programming works. Besides, EasyC even shows the code that you’d be typing in RobotC in the side panel, but you just can’t edit it there.
RobotC would be much better if you already know how to program and if you want to go into industry. I always used EasyC when I was in high school but now I have been slowly been converting my old club to RobotC and they have really been enjoying it.
This has been discussed and Debated a few times before:
Each has their Advantages and Disadvantages…
One fact to clear up, you can write ( Type ) ‘C’ Code in EasyC or Import a “.c” or “.h” file into EasyC… You don’t get the protections of EasyC adding the Semicolon at the Statement End or keeping you from Misspelling the Function Names, but you can Write all the Code you want…
Also, EasyC compiles to ARM Cortex-M3 Machine Code, RobotC compiles to a Meta Code that runs of the RobotC Machine ( which runs on the Cortex-M3 ), meaning there WILL be Inefficiencies in Code Speed Execution…
Think of it as the difference between Bare Metal and a Virtual Machine.
To be fair, I believe that RobotC is much easier when you have robots that require complex programming. We have licenses to both RobotC and EasyC and, I after programming my robot in RobotC, simply could not figure out how to convert some of my PID loops into an EasyC program. Additionally, I would agree that RobotC is considerably faster.
This is completely true. However, I believe it is unlikely one could notice the difference, especially for competition code. I’ve personally never noticed a difference. Also, ROBOTC programs download a LOT faster than easyC does. This is the result of ROBOTC not converting to the Cortex-M3 code while on the computer, like easyC does. I personally use ROBOTC.
I was the first person in the history of our club has ever really used ROBOTC. We were having issues with the IMEs, so I was forced to go back to easyC. Little did they realize, the same issue was happening on easyC. To most users, ROBOTC and easyC have the same capabilities. I see ROBOTC as the programmer’s friend and easyC as the builder-who-needed-a-quick-program’s friend. ROBOTC has many more features, including better debugging, faster download times, and useful “Controller Configuration”/“Motor and Sensor Setup.” The latter is by long and far my favorite. You can assign motors names and you won’t ever have to worry about “which port was that motor on?” again. Same goes for sensors, you set it up once and you use the same call for every sensor, regardless of type (SensorValue]). easyC, on the other hand, has incredibly useful Smart Tasks. I find these helpful in teaching younger teams/teams less focused on programming to quickly code a basic autonomous or something like that. ROBOTC has some limited capability in this (Natural Language), but it is nowhere near as good as easyC’s.
I’ve used this analogy before, and I get the feeling some dislike me for it. But I don’t care. Using ROBOTC is a lot like using the Android smartphone OS. Using easyC is like using iOS. ROBOTC, like Android, can run almost all of the same things that iOS can, but you can customize your experience and do whatever the heck you want with it. On the other hand, easyC, like iOS, gives you everything you could ever need, but doesn’t give you much customization or anything else. With that in mind, iOS also delivers a really good peace of mind. You aren’t about ready to break it any time soon if you run an iOS device.
I started out by learning how to program with EasyC. Since then I have learned how to write code without drag and drop (through EasyC) but I still don’t use RobotC. I have never had a need to. I haven’t yet encountered a robot programming situation that couldn’t be accomplished in EasyC.
But you use EasyC anyway??? Or is this a Mistype for “couldn’t”???
Hahahaha, good catch, just fixed it :rolleyes:
This is true. I would completely agree. However, I have personally found it easier to debug amd write text code in ROBOTC. It’s all personal preference. I find the features available in ROBOTC to be overall more useful than easyC. Some people may not, like you.
Please don’t think I’m trying to bash you. Merely trying to make the point that the decision between ROBOTC and easyC is really one of personal preference.
I understand. That was exactly my point, I just didn’t articulate well
[NOTICE]
I would like to note that I own licenses for EasyC v1.x, v2.x, v3.x ( Pro ) and v4.x and RobotC v1.x, v2.x and v3.x and that each Development System has its Strengths and Weaknesses… I also come from the era of 8 Bit Microcomputer with 1-4 Mhz Processors… Just because you have a Heck of a Lot more power, doesn’t mean you need to Waste It…
[/NOTICE]
As long as Processing Power exceeds the demands of your Calculations, you will not notice any differences… When the End is Reached, RobotC will arrive sooner than EasyC… I would guess for anything you have in a VRC competition, it won’t matter, but in an Infinitely Large Universe, it will. It might be reached in using every Sensor available to the Vex Controller in One Program.
For what I have observed, RobotC download faster, because Only the Byte Code of your program is Downloaded… EasyC Downloads everything, every time… Your program, the EasyC Libraries, the ARM Libraries that the EasyC Libraries depend on, the ARM Libraries that the Your Code depend on .
Debugging is PrintToScreen statements in EasyC, Points go to RobotC for a “Real Debugger”…
Downloading is Slower on EasyC, see above for why…
RobotC has many Features to make your Programming easier, like Labels for the Motors and Sensors, the Task Control Functions, the Debugger and Sound support. EasyC has Drag-and-Drop, but you can Type your Code too,
Using the EasyC Library ( [FONT=“Courier New”]easyCRuntimeLib.lib[/FONT] ), you could write code for the Cortex using just GCC, or Eclipse and GCC… ( Re: Open source development for the cortex and Advanced EasyC programming - create a user library )
I like your Analogy, I see it the opposite way…
EasyC is much more like Android and RobotC is closer to iOS… RobotC has More Features built in, but EasyC has Less restrictions in place…
EasyC is a Proprietary Development System with a Proprietary Interface Library to the Master Processor based on an Open Source Compiler ( GCC ), Android is an Open Source Development System ( Eclipse ) based on an Open Source Compiler ( GCC ).
Using an Open System, you are limited by the Hardware and Proprietary Modules that are not Open.
RobotC is a Proprietary Development System targeting a Proprietary Byte Code Engine, iOS is a Proprietary Development System targeting a Proprietary Operating System.
Using a Proprietary Systems, you are limited to what is provided by the System Developer.
Also, RobotC v3.59 Beta is released today ( 27-FEB-2013 ).
Why do you say this Mark? Every feature of the cortex is available to ROBOTC code, even features not provided by CMU.
Wish you/they had not posted that today, now I have to post on the dangers of the watchdog timer.
I have not delved into the Byte Code of RobotC, but my statement is still True, because If Every feature of the cortex is available to ROBOTC code, that is because the Developer Provided it. In this case, I am glad they did… It gives the Programmer, more power… If you can deliberately Crash the RobotC Firmware by manipulating the Hardware, then you have control of all the features…
Wish you/they had not posted that today, now I have to post on the dangers of the watchdog timer.
You can’t stop progress… Or change, or Beta Releases… ( And Just because you can… Doesn’t mean you should… )
So!! What do we need to know about the Watchdog Timer???
I have not delved into the Byte Code of RobotC, but my statement is still True, because If Every feature of the cortex is available to ROBOTC code, that is because the Developer Provided it. In this case, I am glad they did… It gives the Programmer, more power… If you can deliberately Crash the RobotC Firmware by manipulating the Hardware, then you have control of all the features…
They gave us pointers, that was enough.
You can’t stop progress… Or change, or Beta Releases… ( And Just because you can… Doesn’t mean you should… )
Yes, I know, I thought it was going to be released next week.
So!! What do we need to know about the Watchdog Timer???
I posted in programming tips.