Skip to content
Programming, Controls & Sensors·Lesson 6 of 51

Choosing a Language: Java, C++, or Python

WPILib officially supports three text-based languages — Java, C++, and Python (RobotPy). Learn the tradeoffs and where LabVIEW fits today.

Sign in to track progress, earn XP, and save lessons.

The three officially supported text-based languages

WPILib has three officially supported text-based languages, all with full WPILib bindings:

  • Java (WPILibJ) — by far the most popular FRC language. Great balance of safety, readability, and a huge community. Most tutorials, example code, and Chief Delphi posts are in Java. Recommended for new teams and beginners.
  • C++ (WPILibC) — used by teams that want maximum performance or lower-level control. More powerful but less forgiving (manual memory concerns, longer compile times). Modern WPILib C++ uses smart pointers and a units library, which helps a lot.
  • Python (RobotPy) — Python became an officially supported FRC language for the 2024 season (after years as a community project). RobotPy provides Python bindings to WPILib. Excellent if your team already knows Python; a smaller but growing ecosystem of FRC-specific examples.

These three were chosen because they hit the right level of abstraction and are common in both industry and high-school CS classes.

What about LabVIEW?

LabVIEW still exists for FRC and is technically still offered by NI, but it is a graphical (not text-based) language, is Windows-only, and its community support, examples, and momentum have declined sharply. WPILib's own docs list the three text-based languages first, and the vast majority of vendor examples (CTRE, REV, PathPlanner, Choreo) target Java/C++/Python. For these reasons, new teams should not start in LabVIEW — choose Java, C++, or Python instead. (Note: even text-language teams still install part of NI's tooling, because the Driver Station and roboRIO Imaging Tool ship in the NI FRC Game Tools.)

How to decide

If your team...Pick
Is new, or unsureJava
Already does AP CS / takes a Java classJava
Wants max performance / has experienced mentorsC++
Already knows Python wellPython (RobotPy)

The concepts in this guide (command-based programming, PID, odometry, trajectories) are identical across all three text languages — only the syntax changes. WPILib's documentation shows Java, C++, and Python side-by-side for nearly every example, so you can switch later without relearning the ideas.

Java vs. the others, concretely

A tiny example — setting a motor to half power — looks like:

  • Java: motor.set(0.5);
  • C++: motor.Set(0.5);
  • Python: motor.set(0.5)

The shapes are nearly identical. C++ method names are PascalCase; Java/Python use camelCase. The deeper differences (memory management, the build) rarely affect day-one learning.

Bottom line

If you have no strong reason otherwise, use Java. It has the most learning resources, the largest community, and the gentlest on-ramp, while still being powerful enough to win championships. This guide uses Java in its examples, but the lessons apply to all three text languages.

Key takeaways

  • WPILib officially supports three text-based languages: Java, C++, and Python (RobotPy).
  • Java is the most popular and the best default for beginners.
  • Python (RobotPy) became officially supported starting in the 2024 season.
  • LabVIEW still ships from NI but is Windows-only, graphical, and in decline — don't start a new team in it.
  • Concepts are identical across the text languages; only syntax differs.

Lesson quiz

Required

Answer all 3 questions correctly to complete this lesson.

1.Which three text-based languages does WPILib officially support for programming an FRC robot?

2.How is the Python version of WPILib (RobotPy) primarily implemented?

3.What does WPILib do to keep the Java, C++, and Python libraries consistent for teams?

Answer every question to submit.