Vilket programmeringsspråk ska man använda för en Raspberry Pi?

Raspberry Pi Programmeringsspråk Titelbild

Om du är ny på Raspberry Pi kanske du står vid ett vägskäl när du ska välja ett programmeringsspråk att lära dig.

Det finns så många språk och det du väljer att lära dig kommer att ha en stor betydelse för vad du kan göra. Så låt oss ta en titt på de språk du kan använda med Raspberry Pi.

Förinstallerade språk på Raspberry Pi

Den kanske största tipset du kan ta med dig från Raspberry Pi är de språk som finns förinstallerade i Raspberry Pi OS.

Vid varje installation har du Python, Scratch och C eller C++ förinstallerade.

Låt oss därför först titta på dessa tre språk.

Python: ett bra språk för allmänna ändamål för Raspberry Pi

pi dht22
Python-kod skriven i Thonny

Fördelar:

  • Lätt att lära sig
  • Många bibliotek för komponenter
  • Massor av bra handledningar för att få dig att komma igång
  • Kan användas på Raspberry Pi-mikrodatorer och Pico-serien

Cons:

  • Inte lämplig för utveckling av webbplatser (särskilt front-end)
  • Långsammare än C eller C++

Om du börjar från noll är Python förmodligen det snabbaste och mest effektiva sättet att komma igång.

För det första är Python ett av de enklare språken att lära sig.

Ett annat skäl är att det finns många bibliotek skrivna i Python för olika sensorer och komponenter. Därför kommer en stor mängd skript för handledning och projekt att skrivas i Python.

Om du skulle använda ett annat språk, till exempel JavaScript (via NodeJS), kan det hända att du saknar ett bibliotek för en vanlig sensor.

Om du lär dig Python kan du interagera med alla styrkort i Raspberry Pis sortiment. Du kan skapa projekt för Raspberry Pi 4 och Raspberry Pi Pico.

Skaparna av Raspberry Pi har också gjort det enkelt för dig att bygga projekt i Python. Alla Raspberry Pi-mikrodatorer (t.ex. Pi 4) levereras med Thonny, som är ett IDE för Python, och alla Raspberry Pi Picos läser MicroPython som standard.

Thonny gör Python enkelt på Raspberry Pi

Raspberry Pi OS levereras också med Thonny, som gör det mycket enkelt att köra Python-skript.

Thonny gör det enkelt att programmera i Python eftersom du enkelt kan starta och stoppa skript genom att trycka på knappen "RUN" eller "STOP" i IDE.

Om du däremot använder en annan editor måste du förmodligen skriva in skriptet i terminalen för att köra det.

MicroPython för Raspberry Pi Pico

Python är särskilt bra att lära sig om du vill använda Raspberry Pi Pico.

Till skillnad från Raspberry Pi-mikrodatorerna kan Raspberry Pi Pico som standard endast hantera tre språk: C eller C++ och MicroPython.

Det betyder att om du har lärt dig Python kan du övergå till att skriva MicroPython, eftersom syntaxen är densamma.

Den största skillnaden mellan Python och MicroPython är att den senare har ett mindre standardbibliotek.

CircuitPython

Förutom MicroPython är CircuitPython ett annat Python-derivat som används i Raspberry Pi Pico. CircuitPython har skapats av Adafruit.

Är Python ett bra språk för Raspberry Pi-användare?

JA. Absolut.

Du behöver definitivt kunna Python om du vill bygga projekt för Raspberry Pi.

Jag började min programmeringsresa med JavaScript. Utanför Raspberry Pi-sfären är JavaScript ett mycket effektivt språk eftersom man kan skapa program och webbplatser.

En fyrsiffrig klocka
En fyrsiffrig sjusegmentsdisplay.

En dag var jag dock tvungen att skapa ett program för en sjusegmentsdisplay och det fanns inget sätt att göra det i JavaScript.

Jag hittade ett skript på nätet, men det var i Python och det ledde till att jag började lära mig Python.

Om du vill ha det mest effektiva, snabbaste och enklaste sättet att bygga Raspberry Pi-projekt är det bäst att lära dig Python.

Var kan du lära dig Python för programmering av Raspberry Pi?

Lärandebana - Dessa resurser innehåller länkar där du kan lära dig specifika delar av Python. De är allmänna inlärningsvägar och inte specifika för Raspberry Pi.

Learney

Vägkarta

Harvard OpenCourseWare, CS50:s Introduktion till programmering med Python

YouTube videor

Corey Schafer's spellista med Python-övningar för nybörjare

Raspberry Pi-specifika kurser - Dessa kurser är avsedda för nybörjare.

Raspberry Pi-stiftelsen - Den här kursen ger dig en allmän översikt över programmering i Python och fördjupar dig i spelprogrammering och interaktion med sensorer och komponenter.

Riktig python, Bygg fysiska projekt med Python på Raspberry Pi - Det här är en bra guide för personer som har en sensor och ett komponentkit och vill dyka ner i kod som interagerar med GPIO. Till skillnad från allmänna Python-handledningar lär du dig här hur du kopplar upp enkla sensorer och hur du interagerar med dem med en Raspberry Pi 4.

Scratch för Raspberry Pi

En av mina vänner visade mig sitt LED-trafikljus som han gjort med sin Raspberry Pi 4.

Han är en senior utvecklare med stor kunskap om programmering i Java och JavaScript, så jag förväntade mig att han skulle ha skrivit det i något programmeringsspråk.

Men nej...

Han använde Scratch.

Vad?

Varför använde en erfaren programvarukille Scratch?

Scratch beskrivs som "världens största kodningscommunity för barn och ett kodningsspråk med ett enkelt visuellt gränssnitt som gör det möjligt för unga människor att skapa digitala berättelser, spel och animationer".

Min vän var definitivt inget barn.

När jag frågade honom varför gav han mig ett svar som var lika användbart som ett Git commit-meddelande: "Det är enkelt att programmera".

Skrapa i raspberry pi butik

För att vara rättvis, när jag besökte Raspberry Pi Store i Cambridge, Storbritannien, hade de också en Pi som körde Scratch.

Så det måste vara bra för något!

Är Scratch ett bra programmeringsspråk för Raspberry Pi-användare?

Jag antar att det är bra för att skrapa på ytan av programmering.

Scratch är tänkt att göra programmering enkelt för barn och tonåringar. Istället för att skriva abstrakt kod kan du med Scratch skapa program genom att sätta ihop block med varandra.

För att blinka en lysdiod med Scratch måste du sätta ihop dessa block:

Skrapa
Scratch-sekvens för att få lysdioden att blinka. Foto från Aaron Maurers YouTube.

Jämför detta med ett Python-skript för att blinka på lysdioden,

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) 

Kanske är det av samma anledning som vissa människor föredrar att använda ett grafiskt gränssnitt i stället för en kommandorad. Istället för att ändra värdet på en variabel med flera backspaces, piltangenter och andra tangenttryckningar kan du i stället bara klicka och välja.

Scratch är ett utmärkt val för enkla projekt, inlärning och undervisning.

Nackdelar med Scratch för Raspberry Pi

Om du missade ordvitsen i det föregående avsnittet är den här igen: Scratch skrapar bara på ytan.

När ditt projekt blir större kommer du oundvikligen att vilja använda ett mer vanligt språk som Python, C eller C++, eftersom du då kan få tillgång till den stora mängd kod, bibliotek och skript som finns tillgängliga på nätet.

Lär dig Scratch

Om du är nyfiken på hur Scratch fungerar kan du snabbt få en känsla för hur dess metod med "byggblock" fungerar. på sin online-miljö.

IDE för Scratch

C eller C++ för Raspberry Pi

De ultimata programmeringsspråken som ger dig ultimat kontroll är också bland de svåraste att lära sig och behärska.

Vad är skillnaden mellan C och C++?

C++ är på sätt och vis en utökad version av C, som innehåller många funktioner, t.ex. inbyggt stöd för objektorienterad programmering. ++ är en ordlek om hur operatorer kan ökas i C och C++. Om du till exempel har en variabel cats och vill lägga till en till den kan du helt enkelt skriva cats++;

Särskilt C++ är mycket dynamiskt och uppdateras ständigt. Det är ett komplicerat språk att lära sig. För nybörjare kan C vara ett lämpligare språk att välja.

Vad är den största skillnaden jämfört med andra språk som används för Pi?

Dessa språk kompileras - det vill säga du skriver kod och använder sedan ett särskilt program som kallas kompilator för att producera maskinell bytekod som processorn på din målarkitektur förstår naturligt. Med andra ord, om du vill köra ett program på både Pico W och Raspberry Pi och din stationära dator (x86-baserad) måste du köra en särskild kompilator för var och en av dem.

Ett annat exempel på ett kompilerat språk är Rust, som har några stora fördelar. Du förstår, C och C++ kräver att du tar hand om vissa saker som skräpplockning - om du inte gör det kan ditt program krascha. Eller hela datorn kan krascha om du skriver enhetsdrivrutiner. Med Rust finns det ytterligare säkerhetsåtgärder för utvecklaren.

Ett annat populärt kompilerat språk som utvecklats av Google heter Go. Du kanske ser referenser till dem då och då.

Om du aldrig har kodat förut föreslår jag att du börjar med tolkade språk. De behöver inte kompileras, utan läses in av ett program som sedan utför rätt kommando. Ett bra språk att börja med är Python (eller MicroPython).

Men om du någonsin vill skapa Fantastiska projekt som att spela Doom på en Raspberry Pi Pico. måste du kunna C eller C++.

C eller C++ är i allmänhet ett av de tre språk som används mest på Raspberry Pi, det andra är Python. Därför kommer en stor del av det här avsnittet att handla om fördelarna och nackdelarna med de två.

Låt oss börja med att jämföra de tre:

C och C++MicroPython
HastighetSnabbareLångsammare
InlärningskurvaHårdareLättare
Hantering av minnenManuellAutomatiskt (sophämtning)
Sammanställd? Tolkas?SammanställdTolkad
Användning i samhälletBred användning, särskilt i avancerade projekt där det krävs noggrann kontroll.Används av både nybörjare och avancerade användare.
Bibliotek för komponenterAllmänt tillgängligAllmänt tillgänglig

Bör en nybörjare lära sig C eller C++?

Det finns inget som hindrar dig från att gå igenom en eldprovsprocess.

För det som inte dödar dig gör dig starkare.

De flesta projekt kan genomföras med Python samt C eller C++. Tillgången till bibliotek för de tre språken är också utbredd och det är osannolikt att du blir flaskhalsad av att det saknas ett bibliotek.

Hur ihärdig är du?

C eller C++ kan vara lite mindre roligt för nybörjarprogrammerare eftersom det finns många aspekter som du måste tänka på som du inte behöver tänka på i Python.

I C och C++ måste du till exempel hantera ditt minne. Du måste också tänka på vilken typ av datatyp du ska tilldela en variabel. Det kan bli tråkigt om du inte är medveten om konsekvenserna av för- och nackdelarna med att välja en typ.

Om du till exempel vill tilldela ett heltal i C och C++ måste du bestämma om du vill:

  • int
  • char
  • oavsignad char
  • signerat tecken
  • int utan förtecken
  • kort
  • kort utan signatur
  • lång
  • osignerad lång

Valet av en av dessa har betydelse för programmets hastighet och minnesanvändning.

Även om Python är mindre effektivt behöver du bara göra detta för att deklarera ett heltal:

integer = 999999999999999

Men ingen smärta, ingen vinst, eller hur?

När du väl är bekant med hur C eller C++ fungerar kan du börja dra nytta av fördelarna. Eftersom Raspberry Pi inte är en särskilt kraftfull dator med dagens mått mätt, kan du skriva effektiv kod för att få ut bästa möjliga prestanda ur dess begränsade hårdvara.

Det tar längre tid att installera C och C++

När Raspberry Pi Pico-kortet kom ut var jag tvungen att skriva om hur man ställer in Pico för Python, C och C++.

Python var superenkelt. Ladda ner Thonny. Koppla in Pico. Flash MicroPython. Klart.

C och C++ var mycket svårare och tråkigare. Det är uppenbart - Raspberry Pi publicerar en PDF om hur man sätter upp C/C++. Låt oss säga att du var tvungen att interagera med kommandoraden för att ställa in den.

Du kommer alltid att vara ljuset

C är cirka 40 år gammal och används fortfarande idag.

Vad säger det om den?

Det är ett av de mest dynamiska språken du kan lära dig och kan användas för att skapa programvara och manipulera hårdvara.

Så om du vill lära dig ett språk som är extremt användbart och kraftfullt kan C vara det bästa språket att lära sig.

Psst... C och C++ kan användas på andra forum.

Jag skriver detta i 2022 där Raspberry Pi-lager är en stor fråga.

En av de största frågorna som folk ställer är: "Vilka alternativa styrelser finns det? Jag kan inte bygga projekt med en obefintlig Raspberry Pi."

Det finns många alternativa styrelser, och Du kan kolla in dem här.

Om du har lärt dig C eller C++ kan du direkt börja använda ett Arduino-, ESP32- eller ESP8266-kort, vars program nästan uteslutande är skrivna i C eller C++.

Dessa kort kanske inte kan använda Python, så om anledningen till att du vill skapa projekt med mikrokontroller är Raspberry Pi, kanske du tycker att C eller C++ är ett mer överförbart språk.

Lär dig C eller C++ för Raspberry Pi

MagPi ger ut en gratis tidning för nybörjare.

MagPi publicerar också en lista över platser där man kan lära sig C (inte specifikt för Raspberry Pi).

Raspberry Pi publicerar en PDF som lär dig hur du använder C/C++ med Raspberry Pi Pico.

Här är drakarna

I avsnittet ovan har vi talat om vilka programmeringsspråk du bör överväga att lära dig.

Följande avsnitt handlar om potentiella språk som också kan användas med Raspberry Pi, men användningsområdena och gemenskapen är inte lika stora som när man använder Python, C, C++ och Scratch.

JavaScript (inklusive NodeJS)

Ett JavaScript-program som loggar data från en DHT22-temperatur-/fuktighetssensor på Raspberry Pi (och visar en webbsida med data).

JavaScript är ett av de mest användbara språken för hobbyprogrammerare eftersom det går att skapa appar, webbplatser (med HTML och CSS) och backends med det.

Ett av de största framstegen inom JavaScript kallas NodeJS. Tidigare var JavaScript mest webbläsarbaserat, men med NodeJS kan du köra en backend och skapa appar för din Raspberry Pi och andra datorer.

Specifikt för Raspberry Pi finns det bibliotek som gör det möjligt att manipulera GPIO-stiften på Raspberry Pi. Så om du vill bygga ett enkelt projekt har du inga problem med att köra ett JavaScript-program.

Den största flaskhalsen i ditt projekt är dock bristen på en gemenskap där Raspberry Pi och JavaScript möts.

Detta blir tydligt när du besöker någons Github och oundvikligen ser att deras projekt är skrivet i Python, C eller C++. Mycket få programmerare använder JavaScript med Raspberry Pi.

Är JavaScript en avskrivning?

Nej, inte riktigt.

Den har fortfarande sina användningsområden.

Ett användningsområde där du kan uppnå dina mål genom att lära dig JavaScript är om du vill använda Raspberry Pi som webbserver. Du kan skriva backend i ExpressJS (ett ramverk för backend) och frontend i React/Angular/Vue (ramverk för frontend) och sedan använda PM2 (en processhanterare) för att leverera backend och frontend. I det här scenariot kan du göra det helt och hållet i JavaScript.

Raspberry Pi Pico W behöver JavaScript

För ett tag sedan på ett React-möte retade någon mig för att jag skrev vanilla JavaScript. Han sa: "Vilket år är det? 2000-talet?"

Om du har en Raspberry Pi Pico W behöver du så småningom veta hur man skriver vanilj JavaScript.

Titta vem som skrattar nu?

Även om webbutvecklingsvärlden har gått över till att använda ett ramverk för frontend som React, Angular eller Vue, krävs det i allmänhet att du kan skriva vaniljar JavaScript för att kunna använda webbplatser på Raspberry Pi Pico. Om du tittar på våra handledningar i vår Pico W mega artikel, du kommer att se.

Reglaget uppe till höger styr servot med hjälp av JavaScript.

En av de största fördelarna med Pico W är att du kan visa en webbsida, som du förmodligen kommer att använda för att styra något. Du kan till exempel låta Pico W visa en webbsida med ett reglage som styr en servo. För att kommunicera värdet på reglaget till Pico W måste du kunna JavaScript.

Lär dig JavaScript

Jag kan bara rekommendera en webbsida som har visat sig vara den bästa resursen för mig för att lära mig JavaScript:

https://javascript.info/

Den här resursen är MYCKET bra för Pico W-användare eftersom den lär dig alla aspekter av vanilla JavaScript och webbläsarhändelser. Du måste känna till det sistnämnda för att effektivt kunna styra Pico W och UX på den webbsida som du serverar.

HTML + CSS

HTML och CSS är egentligen inte programmeringsspråk, men de är nära besläktade med JavaScript-avsnittet. De är användbara om:

  • Du planerar att göra något webbaserat
  • Du planerar att visa en webbsida med hjälp av Pico W

Den här webbplatsen har hjälpt mig mycket: Internetanvändning är svårt

Den är lite föråldrad. Den täcker till exempel inte CSS Grid eller aspektförhållandet.

Men Interneting is Hard har en effektiv undervisningsmetod och kan lära dig tillräckligt för att bygga en webbsida för Pico W.

Rekommendationer om du vill...

Få snabba resultat: Python eller Scratch

Lär barnen att programmera: Skrapa

Få ultimat kontroll över din hårdvara: C eller C++

Bygga hårdvaruprojekt: Python eller C eller C++, bryr dig inte om något annat.

Värd för en webbserver och bygga webbplatser: HTML, CSS, JavaScript

Bygg ett IoT-projekt med Pico W: Python, HTML, CSS, JavaScript

Bli gudaliknande (med en orimlig investering av tid): C eller (särskilt) C++

3 Kommentarer

  1. Doug den januari 29, 2023 kl 5:07 e m

    Referera inte till "C/C++" som ett språk. Det förvirrar bara nybörjare. Det är TVÅ mycket olika språk med olika inlärningskurvor och olika förmågor.

    • raspi berry den februari 4, 2023 kl 11:46 f m

      Tack för din feedback - jag har ändrat artikeln och förklarat lite mer om skillnaden mellan språken.

  2. Pedro den april 9, 2023 kl 3:20 e m

    Tack för denna artikel

Lämna en kommentar