What are all the supported programming languages for FRC

Read the title.

1 Like

https://docs.wpilib.org/en/stable/docs/getting-started/getting-started-frc-control-system/intro.html

4 Likes

As for unofficial languages:

  • Kotlin (using Java WPILib)
  • Python (using RobotPy)

I know teams have also used Scala, Lua, and C#, but I don’t think any of those langs has an up to date WPILib port

1 Like

It also depends on what you mean by supported. Carlos has the docs page.

However, technically speaking, anything which can bind to the C++ interfaces for controlling the FPGA is technically possible . Ex: Javascript Robots!

Can I ask what the context of the question is? Are you just academically curious, interested in what exotic flavors exist out in the world, or making concrete decisions for your teams programming strategy in the upcoming year?

While there are other language have support C++, Java, and Labview are the ones that have official support. IE documentation written by WPLIB, official Beta testing, and CSA more likely to be familiar with the language.

If your team has no programming experience and no mentors who know any of the supported languages, it may be worth it to ask around what languages are popular in your area in order to decide which to use. I know around here there are very few teams using C++ so getting help at events from CSAs or other teams is difficult. In other regions LabVIEW is very unpopular and it’s hard to find help with it at competition.

1 Like

A few weeks ago we did an interview with Tyler Vaness who is an active contributor to the WPILib and widely consulted in the FRC Discord for advice. He dived quite a bit into the options and how to best utilize tools. Timecode of where the interview starts: https://youtu.be/I23pYhbJcoc?t=2181

4 Likes

I’m helping out with a possible new team and they wanted to know all the options they had for languages. I know that Java, C++ and LabView are supported languages, but I just wanted to check if there were anymore.

Gotcha.

Based on that, I’d tend to recommend C++/Java, as that’s what you’re most likely to find existing expertise in, along with maximum community support.

Labview/Python/Kotlin all could be options if you’ve mentors/students with substantial experience in them. However, keep in mind, “substantial experience” isn’t just that they’ve used the languages for projects, but that they have experience integrating and debugging their respective runtime environments, and could do it on embedded linux controllers. Writing “hello world” programs is easy, getting said hello-world to run with 99.99% reliability on the roboRIO is a whole additional ball of wax.

For similar reasons, I’d definitely steer away from any of the more exotic options.

1 Like

For anyone who came to this thread looking for more “exotic” options like I did, there are also libraries available in .NET and Rust. However, I think Java or a language that programmers already know would be easier for new teams.

1 Like