DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk8 min

Raspberry Pi 5 Programming Languages: Which One Should You Use?

The Raspberry Pi 5 runs 64-bit Linux, so it supports far more than Python. Compare the best languages, GPIO libraries, setup practices and Pi 5 compatibility issues.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Raspberry Pi 5 runs Linux on a 64-bit ARM processor, so it is not tied to one programming language. Python is the best default for beginners and most GPIO projects, particularly with GPIO Zero. C, C++, Rust, Go, Java, Kotlin, JavaScript/TypeScript, Bash, Scratch and many other languages can also run when a maintained Linux ARM64 runtime, compiler and libraries are available. The practical choice depends on your workload, hardware-library support and performance needs.

What programming languages work on Raspberry Pi 5?

Raspberry Pi OS is Debian-based and provides access to tens of thousands of packages. On a 64-bit installation, the Pi 5 can run interpreted programs, virtual machines and native ARM64 binaries. A language is a practical choice only when three things line up:

  • Runtime or compiler: an ARM64/Linux implementation exists and is maintained.
  • Packages: dependencies install cleanly through Raspberry Pi OS, PyPI, npm, crates.io, Maven or the language’s equivalent.
  • Hardware support: libraries understand the Pi 5’s GPIO, I2C, SPI, UART, camera or display interfaces.

A language may be excellent for a web service but awkward for direct GPIO. Conversely, C can provide precise low-level control while requiring more code and more opportunity for memory or wiring mistakes.

Best language by project

Goal Strong default Why
First programming language Python Readable syntax, Thonny and a large education ecosystem
LEDs, buttons and sensors Python with GPIO Zero High-level, maintained hardware abstractions
Computer vision or heavy native computation C++ or Rust Efficient native execution and mature libraries
System or driver-adjacent software C, C++ or Rust Control over memory, data layout and Linux interfaces
Network service or API Go, Python, JavaScript/TypeScript or Java Strong networking libraries and deployment options
Existing JVM application Java or Kotlin Reuse of JVM code and tooling
Visual, classroom-based learning Scratch Block-based programming with immediate feedback
Linux administration and automation Bash Direct access to files, processes and command-line tools

Why Python is the usual starting point

Python has approachable syntax, extensive tutorials and libraries for sensors, cameras, displays, robotics, networking, MQTT, databases and automation. The desktop edition of Raspberry Pi OS includes Thonny, and GPIO Zero is installed in the standard Raspberry Pi OS setup. See the Raspberry Pi OS documentation.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
SANDISK 256GB Ultra microSD Card + Adapter, Up to 150MB/s Read Speeds
  • Compatible with Nintendo-Switch (NOT Nintendo-Switch 2)
  • Expand your storage in a flash: ideal for Android smartphones and tablets, Chromebooks, and Windows laptops.
  • Increase your TV show, movie, and Full HD video[4] recording collections dramatically with up to a massive 1.5TB[1].
  • Transfer files fast with up to 150MB/s[2] read speeds and SanDisk MobileMate USB micro 3.0 microSD card reader[6].
  • Load apps faster with A1-rated performance[3].

Python is not always the fastest option. For tight timing, kernel work or sustained CPU-heavy processing, use a native language or call an optimized C/C++ library from Python. This often preserves Python’s productive top-level code while moving only the expensive part into native code.

Install Python safely on current Raspberry Pi OS

Raspberry Pi OS’s current major release is based on Debian Trixie; Bookworm is the legacy release that supports Raspberry Pi 5. Releases older than Bookworm do not support the Pi 5. System Python is managed by the operating system, so use apt for distribution packages and a virtual environment for project-specific packages.

  1. sudo apt update
  2. sudo apt full-upgrade -y
  3. mkdir -p ~/pi-project && cd ~/pi-project
  4. python3 -m venv .venv
  5. source .venv/bin/activate
  6. python --version

For later sessions, run cd ~/pi-project followed by source .venv/bin/activate. A virtual environment isolates one project’s packages; it is not a container or a separate operating system. Avoid sudo pip install into the system interpreter.

A safe GPIO Zero example

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

GPIO Zero uses BCM GPIO numbering here: 17 means BCM GPIO17, not physical header pin 17. Use a suitable current-limiting resistor with an LED and check the pin map with:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
pinout

Pi GPIO is 3.3-volt logic. Never apply 5 volts to a GPIO input, and never connect a motor, pump, solenoid or relay directly to a pin. Use an appropriate transistor, MOSFET, relay module, motor driver or H-bridge with its own power arrangement. If a non-default user lacks GPIO access, add the account to the GPIO group and then log out and back in:

Rank #2
Sale
SanDisk 32GB Ultra® microSDHC 120MB/s A1 Class 10 UHS-I
  • SanDisk 32GB Ultra microSDHC 120MB/s A1 Class 10 UHS-I
sudo usermod -a -G gpio <username>

These electrical and permission details are covered in the official Raspberry Pi computer documentation.

C and C++

C

C suits system utilities, Linux device interfaces, driver-adjacent work and software that needs direct control of memory and data representation. Install the standard compiler toolchain with:

sudo apt update
sudo apt install build-essential
# hello.c
#include <stdio.h>

int main(void) {
    printf("Hello, Raspberry Pi 5!n");
    return 0;
}
gcc hello.c -o hello
./hello

C++

C++ is usually preferable for larger native applications, robotics, computer vision, Qt interfaces and performance-sensitive services. Compile a source file with g++ hello.cpp -o hello. C and C++ can be substantially faster and more memory-efficient than interpreted code, but development and debugging are more demanding.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not assume code written for an older Pi will work unchanged. Raspberry Pi 5 uses the RP1 I/O controller, and register-level code or unmaintained GPIO libraries may assume older hardware. Prefer maintained Linux interfaces and libraries over direct register access. Raspberry Pi’s guidance discusses interfaces such as spidev and userspace drivers in many languages; see the GPIO history and current-best-practices paper.

Rust and Go

Rust

Rust offers native performance, strong compile-time memory safety and useful concurrency primitives. It is a good fit for long-running services, robust systems programs and performance-sensitive applications when you can verify the required crates and ARM64 support.

Rank #3
Sale
SanDisk Ultra 32GB UHS-I/Class 10 Micro SDHC Memory Card With Adapter - SDSDQUAN-032G-G4A
  • Up To 48MB/s Read Speed
  • 10-year warranty
  • Easily Back Up Files With "SanDisk Memory Zone" App
  • SD adapter included for compatibility with digital cameras
  • The 32GB SanDisk Ultra microSDHC UHS-I Memory Card works with any device that has a microSDHC card slot

The trade-offs are a steeper learning curve, potentially long and memory-intensive builds, and a smaller, less beginner-oriented GPIO ecosystem than Python. Compiled does not mean automatically real-time, and a crate aimed at an older GPIO interface may not support Pi 5 correctly.

Go

Go works well for APIs, monitoring agents, command-line tools and concurrent network services. Cross-compilation is straightforward and a single native binary is easy to deploy. GPIO and peripheral libraries are less standardized than Python’s, and garbage collection is not ideal for highly timing-sensitive control. Check ARM64 support and maintenance before making Go the foundation of a hardware project.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Java, Kotlin, JavaScript and TypeScript

Java and Kotlin

The Pi 5 can run full JVM applications. Java or Kotlin makes sense when you already have JVM code, mature enterprise libraries or a team with JVM expertise. Expect a larger runtime footprint and slower startup than a small native utility in many cases. GPIO support depends on third-party libraries and their Pi 5 compatibility, so verify the runtime architecture and peripheral library before wiring hardware.

JavaScript and TypeScript

Node.js is a strong choice for dashboards, REST APIs, WebSockets and home-automation systems. TypeScript adds static checking and compiles to JavaScript. Native npm GPIO modules may need rebuilding or may not support the Pi 5, and large dependency trees increase maintenance. Check support for ARM64, your Node.js major version, current Raspberry Pi OS and the Linux GPIO character-device interface. Node.js is convenient for event-driven applications, but not ideal for precise hardware timing.

Scratch, Bash and other languages

The Full edition of Raspberry Pi OS includes Scratch, making it useful for younger learners and classroom projects. Scratch teaches programming concepts but is not intended for complex services or low-level device work.

Rank #4
Beamo Preloaded 64GB Raspberry Pi OS MicroSD Card - Ready to Boot, No Flashing Needed - U3 Class 10 - for Raspberry Pi 5, 500, 400, 4B, 3B+, 3A+, Zero 2 W & Compute Module - 64-Bit OS Preinstalled
  • READY TO BOOT, NO FLASHING REQUIRED: This card arrives with 64-bit Raspberry Pi OS already installed, so you can skip downloading images, flashing software, and checking checksums. Just insert it, power on, and go.
  • WORKS ACROSS THE RASPBERRY PI LINEUP: Compatible with the Raspberry Pi 5, 500, 400, 4B, 3B, 3B+, 3A+, Zero 2 W, and Compute Module models - a great fit whether you're starting a new build or upgrading an old one.
  • U3 / CLASS 10 SPEED: A solid speed rating for responsive everyday use - booting the desktop, running apps, coding, browsing, and general Pi projects all feel smooth and reliable.
  • 64GB OF ROOM TO WORK: Plenty of space for the operating system plus your software, files, and projects - with headroom left over as your builds grow.
  • THE EASY WAY TO GET STARTED: Perfect for beginners who want a working Pi out of the box, and a real time-saver for pros. Includes a printed instruction sheet with a setup guide and a link to a walkthrough video.

Bash is a real part of Pi programming: use it for startup scripts, scheduled jobs, file operations, log processing, builds and deployment. Many useful systems combine Bash with Python, C, Go or another language rather than using one language exclusively.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ruby, PHP, Perl, Julia, Lua, R, .NET languages and Swift can also be viable when a maintained Linux ARM64 runtime and required packages exist. This is not an official guarantee for every release; evaluate each language’s package and hardware bindings separately.

GPIO and peripheral compatibility on Pi 5

The language question is often really an API question. Use this hierarchy:

  1. High-level maintained library: GPIO Zero is a practical Python choice for LEDs, buttons and simple devices.
  2. Linux interfaces: use GPIO character devices, spidev, I2C device files, serial devices and camera interfaces such as V4L2/libcamera where appropriate.
  3. Language bindings: C, Rust, Go, Java or JavaScript libraries can call those interfaces.
  4. Direct register access: reserve memory-mapped access for specialized low-level work because it is fragile across hardware generations.

For SPI, Raspberry Pi documents device paths such as /dev/spidev0.0. A loopback diagnostic can be built as follows:

sudo apt update
sudo apt install build-essential
wget https://raw.githubusercontent.com/raspberrypi/linux/rpi-6.1.y/tools/spi/spidev_test.c
gcc -o spidev_test spidev_test.c
./spidev_test -D /dev/spidev0.0

Enable the matching SPI device and wire MOSI to MISO for a loopback test; it does not test chip-select lines. The wiring, device path and enabled interface must agree.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
PNY 64GB Elite-X Class 10 U3 V30 A1 microSDXC Flash Memory Card 3-Pack
  • SMOOTH CONTENT CAPTURE: Class 10, U3, V30 speed class performance with read speeds up to 100MB/s for fast and smooth burst mode HD Photography and 4K Ultra HD Videography²
  • FASTER APP LAUNCH: A1 App Performance enables apps to run directly from the microSD card, delivering faster app launch and performance. A1 provides minimally 1500 IOPS (Read) and 500 IOPS (Write)
  • EXTENSIVE COMPATIBILITY: Record and transfer videos, photos, music, files and more from microSD enabled host devices such as Android smartphones and tablets, action and surveillance cameras, drones, computers and more
  • USE WITH SD HOST DEVICES: Included SD adapter for compatibility with SD enabled host devices including DSLR cameras, video cameras, desktops, and laptops
  • EXTREME RELIABILITY: Shock Proof, Temperature Proof, Waterproof, Drop Proof, X-Ray Proof, Wearout Proof, Vibration Proof, ESD Proof, and Humidity Proof³
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Set up a Pi 5 for development

Choose Raspberry Pi OS

  • Desktop: a good beginner choice with Thonny and graphical tools.
  • Full: adds bundled educational and office applications, including Scratch.
  • Lite: suited to headless servers and automation.

Use Raspberry Pi Imager and the current supported release unless a project has a specific legacy requirement. After first boot:

sudo apt update
sudo apt full-upgrade -y
sudo reboot
uname -m

On a 64-bit installation, uname -m should report aarch64. Install common development tools when needed:

sudo apt install git build-essential pkg-config cmake

Power and cooling are part of software reliability

A quality 5 V/3 A USB-C supply can boot a Pi 5, but Raspberry Pi recommends 5 V/5 A USB-PD for high-power peripherals and peak workloads; a 3 A supply restricts USB peripheral current. Under-power can look like a software fault when USB SSDs disconnect or cameras reset. Long C++ or Rust builds, computer vision and other sustained workloads benefit from active cooling such as the official Active Cooler or Pi 5 case with fan. See the Pi 5 product page and official power-supply page.

Pi 5 versus Raspberry Pi Pico

These boards use different programming models:

Raspberry Pi 5 Raspberry Pi Pico
Full 64-bit ARM Linux computer Microcontroller running firmware
Processes, filesystems, packages and daemons No Linux; firmware runs directly
Suitable for servers, desktops, cameras and databases Suitable for low-power, deterministic embedded control
General Linux languages and runtimes MicroPython, C/C++ SDK and other embedded toolchains

The Pi 5 can compile and flash Pico firmware, but MicroPython’s machine.Pin, UF2 flashing and the Pico SDK describe the Pico, not the normal way to program the Pi 5. Consult Raspberry Pi’s Pico documentation for that workflow.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Common failures and their fixes

“pip” is blocked or a Python package will not install

  • Create and activate a virtual environment: python3 -m venv .venv then source .venv/bin/activate.
  • Upgrade the environment’s installer with python -m pip install --upgrade pip.
  • Search for a distribution package with apt search <package-name> and install it with sudo apt install <package-name> when available.

An old GPIO tutorial fails

Possible causes include Python 2 assumptions, obsolete GPIO interfaces, direct register addresses, missing permissions or a library that predates RP1. Prefer GPIO Zero or a maintained Linux interface, confirm Pi 5 support, and avoid copying register-level examples without understanding the hardware.

The program crashes or peripherals disconnect

Check the USB-C supply, cable, cooling and peripheral current before changing code. Also verify that no 5-volt signal reaches a GPIO pin and that motors have a proper driver and separate power path.

Quick Recap

SaleBestseller No. 1
SANDISK 256GB Ultra microSD Card + Adapter, Up to 150MB/s Read Speeds
SANDISK 256GB Ultra microSD Card + Adapter, Up to 150MB/s Read Speeds
Compatible with Nintendo-Switch (NOT Nintendo-Switch 2); Load apps faster with A1-rated performance[3].
$48.00
SaleBestseller No. 2
SanDisk 32GB Ultra® microSDHC 120MB/s A1 Class 10 UHS-I
SanDisk 32GB Ultra® microSDHC 120MB/s A1 Class 10 UHS-I
SanDisk 32GB Ultra microSDHC 120MB/s A1 Class 10 UHS-I
$20.60
SaleBestseller No. 3
SanDisk Ultra 32GB UHS-I/Class 10 Micro SDHC Memory Card With Adapter - SDSDQUAN-032G-G4A
SanDisk Ultra 32GB UHS-I/Class 10 Micro SDHC Memory Card With Adapter - SDSDQUAN-032G-G4A
Up To 48MB/s Read Speed; 10-year warranty; Easily Back Up Files With "SanDisk Memory Zone" App
$19.94

A practical decision rule

  • New programmer or ordinary GPIO project: Python plus GPIO Zero.
  • Native performance or computer vision: C++ or Rust, often with Python orchestration.
  • Systems programming: C, C++ or Rust.
  • Network-heavy service: Go, Python, JavaScript/TypeScript or Java.
  • Existing JVM software: Java or Kotlin.
  • Web-first dashboard: JavaScript/TypeScript with a maintained hardware module.
  • Young learner: Scratch.
  • Microcontroller firmware: use a Pico-oriented toolchain, not a Pi 5 Linux application.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Shenzhen desk3 min
    HONOR Expands Beyond Smartphones With Humanoid Robot RevealHONOR said it unveiled its first humanoid robot at MWC 2026 and named shopping assistance, workplace inspections, and supportive companionship as intended uses. Later Robotics D1 claims and a reported…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.