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 unsure | Java |
| Already does AP CS / takes a Java class | Java |
| Wants max performance / has experienced mentors | C++ |
| Already knows Python well | Python (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
RequiredAnswer all 3 questions correctly to complete this lesson.
01.Which three text-based languages does WPILib officially support for programming an FRC robot?
02.When did Python (RobotPy) become an officially supported FRC language?
03.Why should new FRC teams avoid starting with LabVIEW?
Answer every question to submit.
All 51 lessons in Programming, Controls & Sensors
- Not started:Mini-Project: A Closed-Loop Elevator with Motion Magic
- Not started:Mini-Project: A Velocity-Controlled Shooter on REVLib
- Not started:Mini-Project: A Teleop Swerve Drive Subsystem
- Not started:Mini-Project: An Autonomous Routine with PathPlanner
- Not started:Mini-Project: Vision-Aligned Scoring with Limelight
- Not started:State-Space Control and Kalman Filtering
- Not started:Log Replay Architecture with AdvantageKit
- Not started:Advanced Pose Estimation: Multi-Tag Fusion and Standard Deviations
- Not started:Robot Coordination, Alerts, and Operator Feedback
- Not started:Case Study: Hardening Software Before an Event