C vs Python for Robotics

Is C (PROS) or Python (Robot Mesh) a better option? Some of my team mates already know and are learning in other classes in Python, but from what I’ve heard… Python doesn’t really fit with Robotics in VEX (which is why there is Easy C, Robot C, and PROS but only Robot Mesh for Python)… We want to win our competitions and make good programs so would Python be a bad choice?

If we are to do C we would use PROS… if we were to do Python we would use Robot Mesh… is one more limiting or worse than the other?
My team mates say that C takes too much time to learn and since they know / are learning Python they should stick with that.

What are your thoughts?

1 Like

I will give you two contradictory answers with reasons they are both correct.

1st, the language you know is better than the one you do not know, at least for as long as you do not know the other language. In other words, get something working on the robot. There is no rule about switching later on.

2nd, C is a better language for robots in general since it is a compiled language. I guess Python can be, but I do not know if it is for Robot Mesh. That would be a question for @Rick TYler. C runs faster than Python. You may or may not notice any difference depending on how complex your code will be. C is closer to the metal. There are things you can do in C that may not be possible in Python, but I am not sure if that is the case in Vex. Learning C is a bit more complicated but once you understand C, other languages should be a bit easier to learn. Getting help with C is also easier since there are way more people using C.

@blatwell Robot Mesh has a python option that works fine. I was really just talking about language characteristics & if it would benefit with vex competitions.

For most, there won’t be a noticable difference between PROS C and Robot Mesh Python.

However, I think Robot Mesh Python would be more limiting in the long run, especially because many seasoned VEX programmers have publicly released C libraries (most in RobotC, but still not terribly difficult to port to PROS) and very few people will be able to provide meaningful help with it, as @blatwell noted.

It should also be noted that while Python works for VEX, C and its variants are the industry standard for programming microcontrollers.

P.S. It doesn’t take that long to learn basic C. Consider gradually building up code by incorporating concepts as they are learned.

@Barin @blatwell

This is my idea then:
Out of my team there is one experienced Python programmer and one who has 0 experience in any programming language… The experienced programmer can teach the 0 experience one Python to help get coding concepts in general understood… the experienced one, can get into robotics using python… once both are at a good level they can transition to C and then they should be good… that prevents any limiting and makes it easier for them to transition to C yet still getting to learn the concepts in their comfort space.

Does that sound like a feasible plan? (sorry for the rambling!)

1 Like

I think that’s a great plan. RobotMesh has great resources for getting started out with programming. We cater a bit more to programmers who have programmed before. C is quite the norm for (embedded) systems programming, so eventually switching over to PROS could give your students good experiences that could be easily transferred to a job skill. Python is fairly forgiving to mistakes and easy to learn. Python is certainly used in all sorts of places, but I haven’t really seen it used for programming for lower-level robotics or at the systems level.

How fully will RobotMesh support V5? That would be a question.
I would go with C, RobotC, as a starter. We have 5-7th graders and are moving them from graphical C to RobotC, they get it.
When you think about it, there are only so many commands, loops, logic, etc… these kids are much faster at picking this up than you would think.
As an embedded controls engineer, we are looking for C, not Python. Especially for real-time if that kind of experience matters.

Last I spoke with Anthony and Rick, fully. I can’t imagine that’ll change.

VEX has told us they’re making a new programming environment for the V5, so the concern over support of V5 should be more over ROBOTC than RobotMesh.

Why?

Robot Mesh will be launching a version of Robot Mesh Suite the day the V5 controller is available, including all of the current options (Controller Express, Flowol, Blockly, and Python) and a couple of new languages. We are a software development partner with VEX, and have been working on V5 solutions since before the V5 hardware even existed.

Robot Mesh Studio is going to be the only software solution for V5 will include built-in Mimic CAD, which allows you to build and program virtual robots online, without having to buy parts.

1 Like