Quale linguaggio di programmazione utilizzare per un Raspberry Pi?
Se siete alle prime armi con il Raspberry Pi, potreste trovarvi di fronte al bivio di scegliere un linguaggio di programmazione da imparare.
Esistono tantissimi linguaggi e quello che decidete di imparare avrà un effetto profondo su ciò che potete fare. Diamo quindi un'occhiata ai linguaggi che si possono utilizzare con il Raspberry Pi.
Lingue precaricate su Raspberry Pi
Forse il più grande suggerimento che si può trarre da Raspberry Pi è rappresentato dalle lingue precaricate nel sistema operativo di Raspberry Pi.
In ogni installazione sono preinstallati Python, Scratch e C o C++.
Diamo quindi un'occhiata a queste tre lingue.
Python: un ottimo linguaggio generico per Raspberry Pi
Pro:
- Facile da imparare
- Molte librerie per i componenti
- Un sacco di ottimi tutorial per essere al passo con i tempi
- Utilizzabile sui microcomputer Raspberry Pi e sulla serie Pico
Contro:
- Non è adatto allo sviluppo di siti web (front-end, in particolare).
- Più lento di C o C++
Se si parte da zero, Python è probabilmente il modo più rapido ed efficiente per iniziare.
Innanzitutto, Python è uno dei linguaggi più facili da imparare.
Un altro motivo è che esistono molte librerie scritte in Python per vari sensori e componenti. Di conseguenza, una buona parte degli script per le esercitazioni e i progetti sarà scritta in Python.
Se si utilizzasse un altro linguaggio, ad esempio JavaScript (tramite NodeJS), ci si potrebbe trovare bloccati senza una libreria per un sensore comune.
Infine, imparare Python vi aiuterà a interagire con tutte le schede della gamma Raspberry Pi. È possibile creare progetti per il Raspberry Pi 4 e per il Raspberry Pi Pico.
I produttori del Raspberry Pi facilitano anche la creazione di progetti in Python. Ad esempio, tutti i microcomputer Raspberry Pi (ad esempio il Pi 4) sono dotati di Thonny, un IDE Python, e tutti i Raspberry Pi Picos leggono MicroPython per impostazione predefinita.
Thonny rende Python facile su Raspberry Pi
Il sistema operativo Raspberry Pi è inoltre dotato di Thonny, che rende molto semplice l'esecuzione di script Python.
Thonny semplifica la programmazione in Python, perché è possibile avviare e interrompere facilmente gli script premendo il pulsante "RUN" o "STOP" nell'IDE.
Se invece utilizzate un altro editor, dovrete probabilmente digitare lo script nel Terminale per poterlo eseguire.
MicroPython per Raspberry Pi Pico
Python è particolarmente utile da imparare se si vuole utilizzare Raspberry Pi Pico.
A differenza dei microcomputer Raspberry Pi, Raspberry Pi Pico accetta di default solo tre linguaggi: C o C++ e MicroPython.
Ciò significa che se avete imparato Python, sarete in grado di passare alla scrittura di MicroPython, poiché la sintassi è la stessa.
La differenza principale tra Python e MicroPython è che quest'ultimo ha una libreria standard più piccola.
CircuitPython
Oltre a MicroPython, CircuitPython è un altro derivato di Python utilizzato nel Raspberry Pi Pico. CircuitPython è stato creato da Adafruit.
Python è un buon linguaggio per gli utenti di Raspberry Pi?
SÌ. Assolutamente sì.
È sicuramente necessario conoscere Python se si vogliono realizzare progetti per Raspberry Pi.
Ho iniziato il mio viaggio nella programmazione con JavaScript. Al di fuori dell'ambito Raspberry Pi, JavaScript è un linguaggio molto efficiente perché permette di creare programmi e siti web.
Tuttavia, un giorno ho dovuto creare un programma per un display a sette segmenti e non c'era modo di farlo in JavaScript.
Ho trovato uno script online, ma era in Python e questo mi ha spinto a imparare Python.
Se volete il modo più efficiente, rapido e semplice per costruire progetti Raspberry Pi, allora imparare Python è la strada da percorrere.
Dove imparare Python per la programmazione di Raspberry Pi
Percorso di apprendimento - queste risorse raccolgono i link dove è possibile imparare parti specifiche di Python. Si tratta di percorsi di apprendimento generali e non specifici per Raspberry Pi.
Harvard OpenCourseWare, Introduzione alla programmazione con Python di CS50
YouTube video
La playlist di tutorial di Python per principianti di Corey Schafer
Corsi specifici per Raspberry Pi - Questi corsi sono destinati ai principianti
Fondazione Raspberry Pi - Questo corso fornisce una panoramica generale sulla programmazione in Python e si addentra nella programmazione di giochi e nell'interazione con sensori e componenti.
Il vero pitone, Costruire progetti fisici con Python su Raspberry Pi - questa è un'ottima guida per chi ha un kit di sensori e componenti e vuole immergersi nel codice che interagisce con il GPIO. A differenza delle esercitazioni generali su Python, queste vi insegneranno a collegare semplici sensori e a interagire con essi con un Raspberry Pi 4.
Scratch per Raspberry Pi
Uno dei miei amici mi stava mostrando il suo semaforo a LED realizzato con il suo Raspberry Pi 4.
È uno sviluppatore senior con molte conoscenze di programmazione in Java e JavaScript, quindi mi aspettavo che l'avesse scritto in qualche linguaggio di programmazione.
Ma no...
Ha usato Scratch.
Cosa?
Perché un esperto di software ha usato Scratch?
Scratch si descrive come "la più grande comunità di coding al mondo per bambini e un linguaggio di codifica con una semplice interfaccia visiva che permette ai giovani di creare storie, giochi e animazioni digitali".
Il mio amico non era certo un bambino.
Quando gli ho chiesto perché, mi ha dato una risposta utile quanto un messaggio di commit di Git: "È semplice da programmare".
A dire il vero, quando ho visitato il Raspberry Pi Store di Cambridge, nel Regno Unito, c'era anche un Pi con Scratch.
Quindi, deve servire a qualcosa!
Scratch è un buon linguaggio di programmazione per gli utenti di Raspberry Pi?
Suppongo che sia utile per grattare la superficie della programmazione.
La premessa di Scratch è quella di rendere la programmazione facile per bambini e ragazzi. Invece di scrivere codice astratto, Scratch permette di creare programmi unendo blocchi tra loro.
Per far lampeggiare un LED con Scratch, si devono assemblare questi blocchi:
Ora, confrontate questo con uno script Python per far lampeggiare il LED,
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)
Forse è lo stesso motivo per cui alcune persone preferiscono usare una GUI invece di una riga di comando. Invece di modificare il valore di una variabile con diversi spazi indietro, tasti freccia e altri tasti premuti, è sufficiente fare clic e scegliere.
Per progetti semplici, per l'apprendimento e l'insegnamento, Scratch è un'ottima scelta.
Aspetti negativi di Scratch per Raspberry Pi
Se vi siete persi il gioco di parole nella sezione precedente, eccolo di nuovo: Il graffio gratta solo la superficie.
Inevitabilmente, quando il vostro progetto diventerà più grande, vorrete utilizzare un linguaggio più tradizionale come Python o C o C++, perché potrete accedere alla ricchezza di codice, librerie e script disponibili online.
Imparare Scratch
Se siete curiosi di sapere come funziona Scratch, potete farvi un'idea di come funziona il suo metodo dei "blocchi di costruzione". sul suo ambiente online.
- Raspberry Pi ha alcuni corsi di Scratchanche quelli che prevedono la costruzione di hardware.
- Aaron Maurer ha un tutorial su YouTube per mostrare come usare Scratch 3 e far lampeggiare un LED.
C o C++ per Raspberry Pi
Gli ultimi linguaggi di programmazione che danno il massimo controllo sono anche tra i più difficili da imparare e padroneggiare.
Qual è la differenza tra C e C++?
Il C++ è in un certo senso una versione estesa del C, che include molte caratteristiche come il supporto nativo alla programmazione orientata agli oggetti. Il ++ è un gioco di parole sul modo in cui gli operatori possono essere incrementati nel C e nel C++ stesso. Ad esempio, se si dispone di una variabile gatti e si desidera aggiungerne una, si può semplicemente scrivere gatti++;
Soprattutto il C++ è molto dinamico e viene costantemente aggiornato. È un linguaggio complesso da imparare. Per i principianti, il C potrebbe essere un linguaggio più appropriato da scegliere.
Qual è la principale differenza rispetto alle altre lingue utilizzate per il Pi?
Questi linguaggi sono compilati, cioè si scrive il codice e poi si utilizza un'applicazione speciale chiamata compilatore per produrre il codice byte macchina che il processore dell'architettura di destinazione comprende in modo nativo. In altre parole, se volete eseguire un'applicazione sia su Pico W e Raspberry Pi che sul vostro computer desktop (basato su x86), dovrete eseguire un compilatore specifico per ciascuno di essi.
Un altro esempio di linguaggio compilato è Rust, che presenta alcuni grandi vantaggi. C e C++ richiedono che ci si occupi di alcune cose, come la garbage collection: se non lo si fa, l'applicazione potrebbe bloccarsi. O l'intero computer potrebbe bloccarsi se si scrivono i driver dei dispositivi. Con Rust ci sono ulteriori protezioni per lo sviluppatore.
Un altro popolare linguaggio compilato sviluppato da Google si chiama Go. Di tanto in tanto si possono notare dei riferimenti a questo linguaggio.
Il mio suggerimento per iniziare, se non avete mai codificato prima, sono i linguaggi interpretati. Non necessitano di una fase di compilazione, ma vengono letti da un'applicazione che poi esegue il comando giusto. Un buon linguaggio per iniziare è Python (o MicroPython).
Tuttavia, se si desidera creare progetti strabilianti come giocare a Doom su un Raspberry Pi Pico allora è necessario conoscere il C o il C++.
C o C++ sono generalmente uno dei tre linguaggi più utilizzati su Raspberry Pi, l'altro è Python. Pertanto, una buona parte di questa sezione parlerà dei vantaggi e degli svantaggi dei due linguaggi.
Cominciamo con un confronto tra i tre:
C e C++ | MicroPython | |
Velocità | Più veloce | Più lento |
Curva di apprendimento | Più duro | Più facile |
Gestione della memoria | Manuale | Automatico (garbage collection) |
Compilato? Interpretato? | Compilato | Interpretato |
Utilizzo da parte della comunità | Ampio utilizzo, soprattutto in progetti avanzati dove è necessario un controllo minuzioso | Ampiamente utilizzato da principianti e utenti avanzati. |
Librerie per i componenti | Generalmente disponibile | Generalmente disponibile |
Un principiante dovrebbe imparare il C o il C++?
Non c'è nulla che vi impedisca di affrontare una prova del fuoco.
Perché ciò che non ti uccide ti rende più forte.
La maggior parte dei progetti può essere realizzata sia con Python che con C o C++. Inoltre, la disponibilità di librerie per i tre linguaggi è molto diffusa ed è improbabile che si venga bloccati dalla mancanza di una libreria.
Quanto siete tenaci?
Il C o il C++ possono essere un po' meno divertenti per un programmatore principiante, perché ci sono molti aspetti a cui bisogna pensare che in Python non ci sono.
Ad esempio, in C e C++, dovrete gestire la memoria. Dovrete anche pensare a quale tipo di dati assegnare a una variabile. Può diventare noioso se non si conoscono le implicazioni dei pro e dei contro della scelta di un tipo.
Ad esempio, se si vuole assegnare un intero in C e C++, si dovrà decidere se si vuole:
- int
- carbone
- carattere senza segno
- char firmato
- int senza segno
- breve
- breve senza segno
- lungo
- lungo senza segno
La scelta di uno di questi ha implicazioni sulla velocità del programma e sull'utilizzo della memoria.
Anche se Python è meno efficiente, è necessario farlo solo per dichiarare un intero:
integer = 999999999999999
Ma non c'è dolore, non c'è guadagno, giusto?
Una volta acquisita una certa dimestichezza con il funzionamento di C o C++, inizierete a trarne vantaggio. Poiché il Raspberry Pi non è un computer molto potente per gli standard odierni, essere in grado di scrivere codice efficiente vi aiuterà a ottenere le migliori prestazioni dal suo hardware limitato.
La configurazione di C e C++ richiede più tempo
Quando sono uscite le schede Raspberry Pi Pico, ho dovuto scrivere di come configurare il Pico per Python, C e C++.
Python è stato facilissimo. Scaricare Thonny. Collegare Pico. Flashare MicroPython. Fatto.
C e C++ erano molto più difficili e noiosi. È evidente... Raspberry Pi pubblica un PDF proprio sul tema della configurazione di C/C++. Diciamo che per configurarlo è stato necessario interagire con la riga di comando.
La luce sarà sempre la luce
C ha circa 40 anni e viene utilizzato ancora oggi.
Che cosa dice questo?
È uno dei linguaggi più dinamici che si possano imparare e che può essere utilizzato per creare software e manipolare hardware.
Quindi, se desiderate imparare un linguaggio estremamente utile e potente, il C potrebbe essere il miglior primo linguaggio da imparare.
Psst... C e C++ possono essere utilizzati su altre schede
Sto scrivendo questo articolo nel 2022, dove le scorte di Raspberry Pi sono un grosso problema.
Una delle domande più frequenti è: "Quali schede alternative esistono? Non posso costruire progetti con un Raspberry Pi inesistente".
Esistono molte schede alternative e è possibile consultarli qui.
Se avete imparato il C o il C++, potrete immergervi subito nell'uso di una scheda Arduino o ESP32 o ESP8266, i cui programmi sono scritti quasi esclusivamente in C o C++.
Queste schede potrebbero non accettare Python, quindi se il motivo per cui si è interessati al Raspberry Pi è creare progetti con i microcontrollori, si potrebbe trovare il C o il C++ come un linguaggio più trasferibile.
Imparare C o C++ per Raspberry Pi
MagPi pubblica gratuitamente una rivista per principianti.
MagPi pubblica anche un elenco di luoghi per imparare il C (non specifico per Raspberry Pi)
Raspberry Pi pubblica un PDF che insegna come utilizzare C/C++ con Raspberry Pi Pico
Ecco i draghi
Nella sezione precedente abbiamo parlato dei linguaggi di programmazione che dovreste imparare.
La sezione seguente parla di potenziali linguaggi che possono essere utilizzati con il Raspberry Pi, ma i casi d'uso e la comunità non sono così ampi come nel caso di Python, C, C++ e Scratch.
JavaScript (compreso NodeJS)
JavaScript è uno dei linguaggi più utili per i programmatori hobbisti, perché con esso è possibile creare applicazioni, siti web (con HTML e CSS) e backend.
Uno dei maggiori progressi nell'ambito di JavaScript si chiama NodeJS. In precedenza, JavaScript era basato principalmente sui browser, ma con NodeJS è possibile eseguire un backend e creare applicazioni per il Raspberry Pi e altri computer.
Per quanto riguarda il Raspberry Pi, esistono librerie che consentono di manipolare i pin GPIO del Raspberry Pi. Quindi, se volete costruire un progetto semplice, non avrete problemi a eseguire un programma JavaScript.
Tuttavia, il più grande collo di bottiglia del vostro progetto è la mancanza di una comunità in cui Raspberry Pi e JavaScript si intersecano.
Ciò diventa evidente quando si visita il sito Github di qualcuno e inevitabilmente il suo progetto è scritto in Python o C, C++. Pochissimi programmatori utilizzano JavaScript con il Raspberry Pi.
Quindi, JavaScript è una cancellazione?
No, non proprio.
Ha ancora la sua utilità.
Un caso d'uso in cui il solo apprendimento di JavaScript può aiutarvi a raggiungere i vostri obiettivi è se volete usare il vostro Raspberry Pi come server web. Potete scrivere il backend in ExpressJS (un framework per il backend) e il frontend in React/Angular/Vue (framework per il frontend), quindi utilizzare PM2 (un gestore di processi) per distribuire il backend e il frontend. In questo scenario, si può fare tutto in JavaScript.
Raspberry Pi Pico W ha bisogno di JavaScript
Qualche tempo fa, durante un incontro su React, qualcuno mi ha preso in giro perché scrivevo JavaScript vanilla. Mi ha chiesto: "In che anno siamo? Gli anni 2000?"
Se si possiede un Raspberry Pi Pico W, alla fine sarà necessario sapere come scrivere JavaScript vaniglia.
Guarda chi sta ridendo adesso?
Mentre il mondo dello sviluppo web è passato all'utilizzo di un framework di frontend come React, Angular o Vue, per servire i siti web su Raspberry Pi Pico è generalmente necessario saper scrivere del semplice JavaScript. Se guardate le nostre esercitazioni nella sezione Pico W mega articolo, vedrete.
Uno dei maggiori vantaggi di Pico W è che consente di servire una pagina Web che probabilmente verrà utilizzata per controllare qualcosa. Ad esempio, il Pico W può servire una pagina web con un cursore che controlla un servo. Per comunicare il valore del cursore al Pico W, è necessario conoscere JavaScript.
Imparare JavaScript
Posso solo raccomandare una pagina web che si è rivelata la migliore risorsa per me per imparare JavaScript:
Questa risorsa è MOLTO utile per gli utenti di Pico W perché insegna ogni aspetto di JavaScript vanilla e anche gli eventi del browser. È necessario conoscere questi ultimi per poter controllare efficacemente Pico W e l'UX della pagina web che si andrà a servire.
HTML + CSS
HTML e CSS non sono veri e propri linguaggi di programmazione, ma sono strettamente legati alla sezione JavaScript. Sono utili se:
- Avete intenzione di fare qualcosa di basato sul web
- Si intende servire una pagina web utilizzando il Pico W
Questo sito mi ha aiutato molto: Internet è difficile
È un po' datato. Ad esempio, non copre la griglia CSS o l'aspect-ratio.
Ma Interneting is Hard ha un metodo di insegnamento efficace e può insegnare abbastanza per costruire una pagina web per il Pico W.
Raccomandazioni se volete...
Ottenere risultati velocemente: Python o Scratch
Insegnare ai bambini a programmare: Graffio
Ottenete il massimo controllo dell'hardware: C o C++
Costruire progetti hardware: Python o C o C++, non preoccupatevi di nient'altro.
Ospitare un server web e creare siti web: HTML, CSS, JavaScript
Realizzate un progetto IoT con il Pico W: Python, HTML, CSS, JavaScript
Diventare simili a Dio (con un empio investimento di tempo): C o (soprattutto) C++
Non riferitevi a "C/C++" come a un unico linguaggio. Questo confonde solo i principianti. Sono DUE linguaggi molto diversi, con curve di apprendimento e capacità diverse.
Grazie per il feedback - ho modificato l'articolo e ho spiegato meglio le differenze tra le lingue.
Non sono d'accordo con l'affermazione "Sono DUE linguaggi molto diversi". Il C è un sottoinsieme del C++. Naturalmente il C++ è molto più difficile da imparare rispetto al C.
Grazie per questo articolo