Welke programmeertaal moet je gebruiken voor een Raspberry Pi?

Raspberry Pi programmeertalen Titelafbeelding

Als je nieuw bent met de Raspberry Pi, sta je misschien voor de keuze van een programmeertaal om te leren.

Er zijn zoveel talen en wat je besluit te leren zal een diepgaand effect hebben op wat je kunt doen. Laten we eens kijken naar de talen die je kunt gebruiken met de Raspberry Pi.

Vooraf geladen talen op de Raspberry Pi

De grootste hint die je uit de Raspberry Pi kunt halen zijn misschien wel de talen die vooraf op het Raspberry Pi OS zijn geïnstalleerd.

Bij elke installatie zijn Python, Scratch en C of C++ voorgeïnstalleerd.

Laten we dus eerst deze drie talen bekijken.

Python: geweldige universele taal voor Raspberry Pi

pi dht22
Python-code geschreven in Thonny

Voordelen:

  • Gemakkelijk te leren
  • Veel bibliotheken voor componenten
  • Veel goede tutorials om je op weg te helpen
  • Kan worden gebruikt op de Raspberry Pi microcomputers en Pico series

Minpunten:

  • Niet geschikt voor website ontwikkeling (front end, specifiek)
  • Langzamer dan C of C++

Als u vanaf nul begint, is Python waarschijnlijk de snelste en meest efficiënte manier om aan de slag te gaan.

Ten eerste is Python een van de gemakkelijkste talen om te leren.

Een andere reden is dat er veel bibliotheken in Python zijn geschreven voor diverse sensoren en componenten. Daardoor zal een groot deel van de scripts voor tutorials en projecten in Python geschreven zijn.

Als u een andere taal zou gebruiken, bijvoorbeeld JavaScript (via NodeJS), zou u vast kunnen komen te zitten zonder een bibliotheek voor een veelgebruikte sensor.

Ten slotte zal het leren van Python u helpen bij de interactie met alle boards in het Raspberry Pi-assortiment. U kunt projecten maken voor zowel de Raspberry Pi 4 als de Raspberry Pi Pico.

De makers van de Raspberry Pi maken het u ook gemakkelijk om projecten in Python te bouwen. Zo worden alle Raspberry Pi microcomputers (bijvoorbeeld Pi 4) geleverd met Thonny, een Python IDE, en alle Raspberry Pi Pico's lezen standaard MicroPython.

Thonny maakt Python gemakkelijk op de Raspberry Pi

Raspberry Pi OS komt ook voorgeladen met Thonny, wat het heel gemakkelijk maakt om Python-scripts te draaien.

Thonny maakt programmeren in Python gemakkelijk, omdat u eenvoudig scripts kunt starten en stoppen door in de IDE op de knop "RUN" of "STOP" te drukken.

Als u een andere editor gebruikt, zult u waarschijnlijk het script in de Terminal moeten typen om het uit te voeren.

MicroPython voor Raspberry Pi Pico

Python is bijzonder nuttig om te leren als je de Raspberry Pi Pico wilt gebruiken.

In tegenstelling tot de Raspberry Pi microcomputers kan de Raspberry Pi Pico standaard slechts drie talen aan: C of C++ en MicroPython.

Dit betekent dat als u Python hebt geleerd, u kunt overstappen op het schrijven van MicroPython, aangezien de syntaxis hetzelfde is.

Het belangrijkste verschil tussen Python en MicroPython is dat de laatste een kleinere standaardbibliotheek heeft.

CircuitPython

Naast MicroPython is CircuitPython een andere afgeleide van Python die wordt gebruikt in de Raspberry Pi Pico. CircuitPython is gemaakt door Adafruit.

Is Python een goede taal voor Raspberry Pi-gebruikers?

JA. Absoluut.

Je zult zeker Python moeten kennen als je projecten voor de Raspberry Pi wilt bouwen.

Ik ben mijn programmeerreis begonnen met JavaScript. Buiten de Raspberry Pi-sfeer is JavaScript een zeer efficiënte taal omdat je er programma's en websites mee kunt maken.

Een klok met vier cijfers
Een viercijferig zeven-segment display

Maar op een dag moest ik een programma maken voor een zeven-segmenten display en er was geen manier om dat in JavaScript te doen.

Ik vond een script online, maar het was in Python en dat stuurde me het pad op om Python te leren.

Als u de meest efficiënte, snelste en gemakkelijkste manier wilt om Raspberry Pi-projecten te bouwen, dan is het leren van Python de manier om te gaan.

Waar leer je Python voor Raspberry Pi programmeren?

Leertraject - Deze bronnen bundelen links waar u specifieke onderdelen van Python kunt leren. Het zijn algemene leerpaden en niet specifiek voor de Raspberry Pi.

Learney

Wegenkaart

Harvard OpenCourseWare, CS50's Inleiding tot programmeren met Python

YouTube video's

Corey Schafer's Python tutorial afspeellijst voor beginners

Raspberry Pi-specifieke cursussen - Dit zijn cursussen voor beginners

Stichting Raspberry Pi - deze cursus geeft je een algemeen overzicht van programmeren in Python en duikt in spelprogrammering en interactie met sensoren en componenten.

Echte Python, Fysieke projecten bouwen met Python op de Raspberry Pi - dit is een geweldige gids voor mensen die een sensor en component kit hebben en in code willen duiken die interageert met de GPIO. In tegenstelling tot algemene Python-tutorials leert u hier hoe u eenvoudige sensoren kunt aansluiten en hoe u ermee kunt communiceren met een Raspberry Pi 4.

Scratch voor Raspberry Pi

Een van mijn vrienden liet me zijn LED-verkeerslicht zien dat hij met zijn Raspberry Pi 4 had gemaakt.

Hij is een senior ontwikkelaar met veel kennis van programmeren in Java en JavaScript, dus ik verwachtte dat hij het in een of andere programmeertaal had geschreven.

Maar nee...

Hij gebruikte Scratch.

Wat?

Waarom gebruikte een senior software man Scratch?

Scratch beschrijft zichzelf als "'s werelds grootste codeergemeenschap voor kinderen en een codeertaal met een eenvoudige visuele interface waarmee jongeren digitale verhalen, spelletjes en animaties kunnen maken".

Mijn vriend was zeker geen kind.

Toen ik hem vroeg waarom, gaf hij me een antwoord dat even nuttig was als een Git commit bericht, "wel, het is eenvoudig te programmeren".

krassen bij raspberry pi winkel

Om eerlijk te zijn, toen ik de Raspberry Pi Store bezocht in Cambridge, UK, hadden ze ook een Pi met Scratch.

Dus, het moet ergens goed voor zijn!

Is Scratch een goede programmeertaal voor Raspberry Pi-gebruikers?

Ik veronderstel dat het goed is om de oppervlakte van de programmering te verkennen.

Het uitgangspunt van Scratch is om programmeren gemakkelijk te maken voor kinderen en tieners. In plaats van abstracte code te schrijven, kun je met Scratch programma's maken door blokken samen te voegen.

Om een LED te laten knipperen met Scratch, zet je deze blokken in elkaar:

Scratch
Scratch-sequentie om LED te laten knipperen. Foto van Aaron Maurer's YouTube.

Vergelijk dit nu met een Python script om de LED te laten knipperen,

import RPi.GPIO as GPIO 
from time import sleep 

GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT, initial=GPIO.LOW) 

while True: 
 GPIO.output(8, GPIO.HIGH) 
 sleep(1) 
 GPIO.output(8, GPIO.LOW)
 sleep(1) 

Misschien is het dezelfde reden waarom sommige mensen liever een GUI gebruiken dan een opdrachtregel. In plaats van de waarde van een variabele te veranderen met verschillende backspaces, pijltjestoetsen en andere toetsaanslagen, hoef je alleen maar te klikken en te kiezen.

Voor eenvoudige projecten, leren en onderwijzen is Scratch een prima keuze.

Nadelen van Scratch voor Raspberry Pi

Als je de woordspeling in het vorige deel hebt gemist, hier is hij weer: Kras alleen het oppervlak.

Zodra uw project groter wordt, zult u onvermijdelijk een meer gangbare taal als Python of C of C++ willen gebruiken, omdat u dan toegang hebt tot de schat aan code, bibliotheken en scripts die online beschikbaar zijn.

Leer Scratch

Als je benieuwd bent hoe Scratch werkt, kun je snel een gevoel krijgen van hoe de "bouwstenen"-methode werkt op haar online omgeving.

Scratch IDE

C of C++ voor Raspberry Pi

De ultieme programmeertalen die je ultieme controle geven zijn ook een van de moeilijkste om te leren en onder de knie te krijgen.

Wat is het verschil tussen C en C++?

C++ is in zekere zin een uitgebreide versie van C, met veel functies zoals native ontworpen ondersteuning voor objectgeoriënteerd programmeren. De ++ is een woordspeling op de manier waarop operatoren in C en C++ zelf kunnen worden opgehoogd. Als u bijvoorbeeld een variabele cats hebt, en u wilt er een toevoegen, dan kunt u gewoon cats++ schrijven;

Vooral C++ is zeer dynamisch en wordt voortdurend bijgewerkt. Het is een complexe taal om te leren. Voor beginners is C misschien een geschiktere taal om te kiezen.

Wat is het belangrijkste verschil met andere talen die voor de Pi worden gebruikt?

Deze talen worden gecompileerd - dat wil zeggen dat u code schrijft, en dan een speciale toepassing, een compiler genaamd, gebruikt om machine-byte-code te produceren die de processor van uw doelarchitectuur van nature begrijpt. Met andere woorden, als u een toepassing wilt draaien op zowel de Pico W en de Raspberry Pi, als op uw desktopcomputer (x86 gebaseerd), moet u voor elk van beide een specifieke compiler draaien.

Een ander voorbeeld van een gecompileerde taal is Rust, dat enkele grote voordelen heeft. Zie je, C en C++ vereisen dat je zorgt voor bepaalde dingen zoals garbage collection - als je dat niet doet, kan je applicatie crashen. Of de hele computer kan crashen als je apparaatstuurprogramma's schrijft. Met Rust zijn er extra beveiligingen voor de ontwikkelaar.

Een andere populaire gecompileerde taal ontwikkeld door Google heet Go. U zult er af en toe verwijzingen naar zien.

Mijn suggestie om te beginnen als je nog nooit hebt gecodeerd zijn geïnterpreteerde talen. Die hebben geen compilatiestap nodig, maar worden ingelezen door een applicatie die vervolgens het juiste commando uitvoert. Een goede taal om mee te beginnen is Python (of MicroPython).

Maar als u ooit verbazingwekkende projecten zoals het spelen van Doom op een Raspberry Pi Pico dan moet je C of C++ kennen.

C of C++ zijn over het algemeen één van de drie talen die het meest gebruikt worden op de Raspberry Pi, de andere is Python. Daarom zal een groot deel van deze sectie gaan over de voor- en nadelen van de twee.

Laten we beginnen met de drie te vergelijken:

C en C++MicroPython
SnelheidSnellerLangzamer
LeercurveHarderGemakkelijker
GeheugenbeheerHandmatigAutomatisch (vuilnisophaling)
Gecompileerd? Geïnterpreteerd?SamengesteldGetolkt
Gebruik per gemeenschapBreed gebruik, vooral gebruikt in geavanceerde projecten waar minutieuze controle noodzakelijk isVeel gebruikt door beginners tot gevorderden.
Bibliotheken voor componentenAlgemeen beschikbaarAlgemeen beschikbaar

Moet een beginner C of C++ leren?

Niets houdt je tegen om een vuurproef te doorstaan.

Want wat je niet doodt, maakt je sterker.

De meeste projecten kunnen zowel met Python als met C of C++ worden uitgevoerd. De beschikbaarheid van bibliotheken voor de drie talen is ook wijdverbreid en het is onwaarschijnlijk dat u in de knel komt door het ontbreken van een bibliotheek.

Hoe vasthoudend ben je?

C of C++ kan wat minder leuk zijn voor de beginnende programmeur, omdat er veel aspecten zijn waarover je moet nadenken die je in Python niet hebt.

In C en C++ moet u bijvoorbeeld uw geheugen beheren. U zult ook moeten nadenken over het soort gegevenstype dat u aan een variabele moet toekennen. Het kan vervelend worden als u zich niet bewust bent van de implicaties van de voor- en nadelen van het kiezen van een type.

Als u bijvoorbeeld in C en C++ een geheel getal wilt toewijzen, moet u beslissen of u:

  • int
  • char
  • unsigned char
  • getekende char
  • unsigned int
  • korte
  • unsigned short
  • lang
  • unsigned long

De keuze van een van deze heeft gevolgen voor de snelheid en het geheugengebruik van uw programma.

En hoewel Python minder efficiënt is, hoeft u dit alleen te doen om een geheel getal te declareren:

integer = 999999999999999

Maar geen pijn, geen winst, toch?

Als u eenmaal weet hoe C of C++ werkt, zult u er de vruchten van plukken. Aangezien de Raspberry Pi naar hedendaagse maatstaven geen erg krachtige computer is, zal het kunnen schrijven van efficiënte code u helpen de beste prestaties uit zijn beperkte hardware te halen.

Het opzetten van C en C++ kost meer tijd

Toen de Raspberry Pi Pico boards uitkwamen, moest ik schrijven over het instellen van de Pico voor Python en C en C++.

Python was super eenvoudig. Download Thonny. Plug Pico in. Flash MicroPython. Klaar.

C en C++ waren veel moeilijker en vervelender. Het is duidelijk - Raspberry Pi publiceert een PDF over het opzetten van C/C++.. Laten we zeggen dat je de opdrachtregel moest gebruiken om het in te stellen.

Je zult altijd C het licht

C is ongeveer 40 jaar oud en wordt nog steeds gebruikt.

Wat zegt dat erover?

Het is een van de meest dynamische talen die je kunt leren, waarmee je software kunt maken en hardware kunt manipuleren.

Dus, als je graag een taal wilt leren die uiterst nuttig en krachtig is, kan C de beste eerste taal zijn om te leren.

Psst... C en C++ kunnen op andere borden worden gebruikt.

Ik schrijf dit in 2022 waar Raspberry Pi-voorraad een groot probleem is.

Een van de grootste vragen die mensen stellen is: "Welke alternatieve boards zijn er? Ik kan geen projecten bouwen met een niet bestaande Raspberry Pi."

Er zijn veel alternatieve borden, en kun je ze hier bekijken.

Als je C of C++ hebt geleerd, kun je meteen aan de slag met een Arduino of ESP32 of ESP8266 bord, waarvan de programma's bijna uitsluitend in C of C++ zijn geschreven.

Die borden zijn misschien niet geschikt voor Python, dus als de reden waarom je de Raspberry Pi gebruikt is om projecten met microcontrollers te maken, vind je C of C++ misschien een beter overdraagbare taal.

C of C++ leren voor Raspberry Pi

MagPi publiceert gratis een tijdschrift voor beginners.

MagPi publiceert ook een lijst van plaatsen om C te leren (niet specifiek voor Raspberry Pi)

Raspberry Pi publiceert een PDF die je leert hoe je C/C++ kunt gebruiken met de Raspberry Pi Pico

Hier zijn draken

In het gedeelte hierboven hebben we het gehad over de programmeertalen die je zou moeten overwegen te leren.

In de volgende paragraaf worden potentiële talen besproken die ook met de Raspberry Pi kunnen worden gebruikt, maar de gebruikssituaties en de gemeenschap zijn niet zo groot als bij het gebruik van Python, C, C++ en Scratch.

JavaScript (inclusief NodeJS)

Een JavaScript-programma dat gegevens logt van een DHT22 temp/vochtigheidssensor op de Raspberry Pi (en een webpagina met de gegevens serveert).

JavaScript is een van de nuttigste talen voor de hobby-programmeur omdat je er apps, websites (met HTML en CSS) en backends mee kunt maken.

Een van de grootste ontwikkelingen op het gebied van JavaScript is NodeJS. Vroeger was JavaScript vooral gebaseerd op de browser, maar met NodeJS kun je een backend draaien en apps maken voor je Raspberry Pi en andere computers.

Specifiek voor de Raspberry Pi zijn er bibliotheken waarmee je de GPIO-pinnen van de Raspberry Pi kunt manipuleren. Dus, als je een eenvoudig project wilt bouwen, zul je geen probleem hebben met het uitvoeren van een JavaScript-programma.

Het grootste knelpunt in uw project is echter het ontbreken van een gemeenschap waar Raspberry Pi en JavaScript elkaar kruisen.

Dit wordt duidelijk wanneer je iemands Github bezoekt en onvermijdelijk is hun project geschreven in Python of C, C++. Zeer weinig programmeurs gebruiken JavaScript met de Raspberry Pi.

Dus, is JavaScript een afschrijving?

Nee, niet echt.

Het heeft nog steeds zijn nut.

Een geval waarin het leren van JavaScript u kan helpen uw doelen te bereiken is als u uw Raspberry Pi wilt gebruiken als webserver. Je kunt de backend schrijven in ExpressJS (een backend framework) en de frontend in React/Angular/Vue (frontend frameworks), dan gebruik je PM2 (een procesmanager) om de back- en frontend te leveren. In dit scenario kun je het volledig in JavaScript doen.

Raspberry Pi Pico W heeft JavaScript nodig

Een tijdje geleden op een React meetup plaagde iemand me omdat ik vanilla JavaScript schreef. Hij plaagde, "welk jaar is het? De jaren 2000?"

Als je een Raspberry Pi Pico W hebt, zul je uiteindelijk moeten weten hoe je het volgende moet schrijven vanille JavaScript.

Kijk eens wie er nu lacht?

Terwijl de webontwikkelingswereld is overgestapt op het gebruik van een frontend framework zoals React, Angular of Vue, vereist het bedienen van websites op de Raspberry Pi Pico over het algemeen dat je weet hoe je vanilla JavaScript schrijft. Als u onze tutorials bekijkt in onze Pico W mega artikel, zul je zien.

De schuifbalk rechtsboven regelt de servo met behulp van JavaScript.

Een van de grootste voordelen van de Pico W is dat u er een webpagina mee kunt serveren, die u waarschijnlijk zult gebruiken om iets te besturen. U kunt de Pico W bijvoorbeeld een webpagina laten weergeven met een schuifregelaar die een servo aanstuurt. Om de waarde van de schuifregelaar aan de Pico W door te geven, moet u JavaScript kennen.

Leer JavaScript

Ik kan slechts één webpagina aanbevelen die voor mij de beste bron is gebleken om JavaScript te leren:

https://javascript.info/

Deze bron is ZEER goed voor Pico W gebruikers omdat het u elk aspect van vanilla JavaScript en ook browser events leert. Die laatste moet u kennen om de Pico W en de UX van de webpagina die u serveert effectief te kunnen besturen.

HTML + CSS

HTML en CSS zijn niet echt programmeertalen, maar ze zijn nauw verwant aan het JavaScript-gedeelte. Ze zijn nuttig als:

  • U bent van plan iets op het web te doen
  • U bent van plan een webpagina te serveren met behulp van de Pico W

Deze ene site heeft me veel geholpen: Internetten is moeilijk

Het is een beetje verouderd. Het behandelt bijvoorbeeld niet CSS Grid of aspect-ratio.

Maar Internetten is moeilijk heeft een effectieve lesmethode en kan je genoeg leren om een webpagina te bouwen voor de Pico W.

Aanbevelingen als je...

Snel resultaten boeken: Python of Scratch

Leer kinderen programmeren: Scratch

Krijg ultieme controle over uw hardware: C of C++

Bouw hardware projecten: Python of C of C++, doe geen moeite met iets anders.

Een webserver hosten en websites bouwen: HTML, CSS, JavaScript

Bouw een IoT-project met de Pico W: Python, HTML, CSS, JavaScript

goddelijk worden (met een goddeloze investering van tijd): C of (vooral) C++

3 Opmerkingen

  1. Doug op januari 29, 2023 op 5:07 pm

    Verwijs alstublieft niet naar "C/C++" als 1 taal. Dat brengt beginners in verwarring. Het zijn TWEE heel verschillende talen met verschillende leercurves en verschillende mogelijkheden.

    • raspi berry op februari 4, 2023 op 11:46 am

      Bedankt voor de feedback - ik heb het artikel aangepast en het verschil tussen de talen wat uitgebreid.

  2. Pedro op april 9, 2023 op 3:20 pm

    Bedankt voor dit artikel

Laat een reactie achter