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.