the video version
The same lesson as a narrated video. Watch it on YouTube
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.
the part worth keeping
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.
Programming, Controls & SensorsFoundations: Tools, Languages, and Your First Robot Programlesson 2 of 4
Keep going
Take the quiz+10 XP with an accountMore in Foundations: Tools, Languages, and Your First Robot Program
where this came from
Sources and corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed, in public, in the corrections log.
sources and further reading
- docs.wpilib.orgWhat is WPILib? (supported languages)
- wpilib.orgBringing Python to FRC (RobotPy)
- robotpy.readthedocs.ioRobotPy Documentation
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 7 min readFRC Programming Languages: Java vs C++ vs PythonAn honest, beginner-friendly comparison of the three WPILib-supported FRC languages — Java, C++, and Python (RobotPy) — with vendor support and how to choose./blogread it
- 13 min readFRC Code Structure Best Practices: Command-Based Project ArchitectureHow to structure an FRC command-based robot project the right way — subsystems, commands, RobotContainer, and Constants — verified against official WPILib docs./blogread it
- 9 min readFRC Command-Based Programming: Subsystems, Commands, and the SchedulerA beginner-friendly guide to WPILib command-based programming in Java: subsystems, commands, the CommandScheduler, triggers, and composing commands./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01Which three text-based languages does WPILib officially support for programming an FRC robot?
02When did Python (RobotPy) become an officially supported FRC language?
03Why should new FRC teams avoid starting with LabVIEW?
Answer every question to submit.
All 51 lessons in Programming, Controls & Sensorsopenclose
01 / prerequisites
02 / foundations-tools-and-first-program
03 / robot-program-and-command-based
04 / motors-and-control
05 / autonomous-trajectories-simulation
06 / sensing-fundamentals
07 / encoders
08 / gyros-imus-orientation
09 / closed-loop-control
10 / vision-pose-estimation
11 / worked-examples-mini-projects
- Not read yet:Mini-Project: A Closed-Loop Elevator with Motion Magic
- Not read yet:Mini-Project: A Velocity-Controlled Shooter on REVLib
- Not read yet:Mini-Project: A Teleop Swerve Drive Subsystem
- Not read yet:Mini-Project: An Autonomous Routine with PathPlanner
- Not read yet:Mini-Project: Vision-Aligned Scoring with Limelight
12 / common-mistakes-troubleshooting
13 / advanced-techniques-case-studies
- Not read yet:State-Space Control and Kalman Filtering
- Not read yet:Log Replay Architecture with AdvantageKit
- Not read yet:Advanced Pose Estimation: Multi-Tag Fusion and Standard Deviations
- Not read yet:Robot Coordination, Alerts, and Operator Feedback
- Not read yet:Case Study: Hardening Software Before an Event