Free tools Windows power users keep installed
One-click scans. No signup required.
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.
#1 Best Overall
- 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.
sudo apt updatesudo apt full-upgrade -ymkdir -p ~/pi-project && cd ~/pi-projectpython3 -m venv .venvsource .venv/bin/activatepython --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:
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
- 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.
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
- 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.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteJava, 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
- 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.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteRuby, 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:
- High-level maintained library: GPIO Zero is a practical Python choice for LEDs, buttons and simple devices.
- Linux interfaces: use GPIO character devices,
spidev, I2C device files, serial devices and camera interfaces such as V4L2/libcamera where appropriate. - Language bindings: C, Rust, Go, Java or JavaScript libraries can call those interfaces.
- 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.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Best Value
- 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³
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.
Recommended Free Tools
Common failures and their fixes
“pip” is blocked or a Python package will not install
- Create and activate a virtual environment:
python3 -m venv .venvthensource .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 withsudo 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
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.




