Jakiego języka programowania powinieneś używać dla Raspberry Pi?

Języki programowania Raspberry Pi Obraz tytułowy

Jeśli jesteś nowym użytkownikiem Raspberry Pi, możesz znaleźć się na rozdrożu wyboru języka programowania do nauki.

Istnieje tak wiele języków tam i co zdecydujesz się nauczyć będzie miał głęboki wpływ na to, co można zrobić. Więc spójrzmy na języki, które można wykorzystać z Raspberry Pi.

Wstępnie załadowane języki na Raspberry Pi

Być może największą wskazówką, którą można wziąć z Raspberry Pi jest języki, które są preinstalowane na Raspberry Pi OS.

Na każdej instalacji będziesz miał preinstalowany Python, Scratch i C lub C++.

Przyjrzyjmy się więc najpierw tym trzem językom.

Python: świetny język ogólnego przeznaczenia dla Raspberry Pi

pi dht22
Kod Pythona napisany w Thonny

Pros:

  • Łatwa do nauczenia się
  • Wiele bibliotek dla komponentów
  • Mnóstwo świetnych tutoriali, które pozwolą Ci się rozpędzić.
  • Może być używany na mikrokomputerach Raspberry Pi i serii Pico

Cons:

  • Nie nadaje się do tworzenia stron internetowych (szczególnie front-end)
  • Wolniejsze niż C lub C++

Jeśli zaczynasz od zera, to Python jest prawdopodobnie najszybszym i najbardziej efektywnym sposobem, abyś mógł zacząć.

Po pierwsze, Python jest jednym z łatwiejszych języków do podniesienia.

Innym powodem jest to, że istnieje wiele bibliotek napisanych w Pythonie dla różnych czujników i komponentów. W rezultacie spora część skryptów do tutoriali i projektów będzie napisana w Pythonie.

Jeśli miałbyś użyć innego języka, na przykład JavaScript (przez NodeJS), możesz utknąć bez biblioteki dla wspólnego czujnika.

Wreszcie, nauka Pythona pomoże Ci w interakcji ze wszystkimi płytkami w linii Raspberry Pi. Możesz tworzyć projekty zarówno dla Raspberry Pi 4, jak i Raspberry Pi Pico.

Twórcy Raspberry Pi ułatwiają również tworzenie projektów w Pythonie. Na przykład wszystkie mikrokomputery Raspberry Pi (np. Pi 4) są dostarczane z Thonny, który jest IDE Pythona, a wszystkie Raspberry Pi Picos będą domyślnie czytać MicroPython.

Thonny ułatwia korzystanie z Pythona na Raspberry Pi

Raspberry Pi OS jest również fabrycznie wyposażony w Thonny, dzięki któremu uruchamianie skryptów Pythona jest naprawdę proste.

Thonny ułatwia programowanie w Pythonie, ponieważ można łatwo uruchamiać i zatrzymywać skrypty, naciskając przycisk "RUN" lub "STOP" w IDE.

Natomiast jeśli używasz innego edytora, prawdopodobnie będziesz musiał wpisać skrypt do Terminala, aby go uruchomić.

MicroPython dla Raspberry Pi Pico

Python jest szczególnie przydatny do nauki, jeśli chcesz używać Raspberry Pi Pico.

W przeciwieństwie do mikrokomputerów Raspberry Pi, Raspberry Pi Pico domyślnie przyjmie tylko trzy języki: C lub C++ oraz MicroPython.

Oznacza to, że jeśli nauczyłeś się Pythona, będziesz mógł przejść do pisania MicroPythona, ponieważ składnia jest taka sama.

Główną różnicą między Pythonem a MicroPythonem jest to, że ten ostatni ma mniejszą bibliotekę standardową.

CircuitPython

Oprócz MicroPythona, CircuitPython jest kolejną pochodną Pythona, która jest używana w Raspberry Pi Pico. CircuitPython jest tworzony przez firmę Adafruit.

Czy Python jest dobrym językiem dla użytkowników Raspberry Pi?

TAK. Absolutnie.

Z pewnością przyda Ci się znajomość Pythona, jeśli chcesz budować projekty dla Raspberry Pi.

Swoją podróż programistyczną rozpocząłem od JavaScript. Poza sferą Raspberry Pi, JavaScript jest bardzo wydajnym językiem, ponieważ można tworzyć programy i strony internetowe.

Czterocyfrowy zegar
Czterocyfrowy wyświetlacz siedmiosegmentowy

Jednak pewnego dnia musiałem stworzyć program dla wyświetlacza siedmiosegmentowego i nie było sposobu, aby zrobić to w JavaScript.

Znalazłem skrypt online, ale był w Pythonie i to wysłało mnie w dół ścieżki uczenia się Pythona.

Jeśli chcesz najbardziej wydajny, najszybszy i najłatwiejszy sposób budowania projektów Raspberry Pi, to nauka Pythona jest drogą do celu.

Gdzie nauczyć się Pythona do programowania na Raspberry Pi

Ścieżka edukacyjna - Te zasoby kompilują linki, gdzie można nauczyć się konkretnych części Pythona. Są to ogólne ścieżki edukacyjne, a nie specyficzne dla Raspberry Pi.

Learney

Mapa drogowa

Harvard OpenCourseWare, Wprowadzenie do programowania w języku Python w CS50

YouTube filmy

Playlista Coreya Schafera z samouczkiem Pythona dla początkujących

Kursy związane z Raspberry Pi - Są to kursy przeznaczone dla początkujących.

Fundacja Raspberry Pi - Ten kurs da ci ogólny przegląd programowania w Pythonie i nurkuje w programowanie gier i interakcji z czujnikami i komponentami.

Prawdziwy Python, Buduj projekty fizyczne z Pythonem na Raspberry Pi - jest to świetny przewodnik dla osób, które posiadają zestaw czujników i komponentów i chcą zagłębić się w kod, który współdziała z GPIO. W przeciwieństwie do ogólnych tutoriali Pythona, te nauczą Cię jak podłączyć proste czujniki i jak z nimi współdziałać z Raspberry Pi 4.

Scratch dla Raspberry Pi

Jeden z moich przyjaciół pokazywał mi do jego światła LED ruchu, że zrobił z jego Raspberry Pi 4.

Jest starszym programistą z dużą wiedzą w zakresie programowania w Javie i JavaScript, więc spodziewałem się, że napisał to w jakimś języku programowania.

Ale nie...

Używał Scratcha.

Co?

Dlaczego starszy programista używał Scratcha?

Scratch opisuje siebie jako "największą na świecie społeczność koderów dla dzieci i język kodowania z prostym interfejsem wizualnym, który pozwala młodym ludziom tworzyć cyfrowe historie, gry i animacje."

Mój przyjaciel zdecydowanie nie był dzieckiem.

Kiedy zapytałem go, dlaczego, dał mi odpowiedź, która była tak przydatna, jak wiadomość Git commit, "dobrze, że jest prosty w programowaniu".

scratch w sklepie raspberry pi

Aby być uczciwym, kiedy odwiedziłem Raspberry Pi Store w Cambridge, UK, mieli również Pi działające w Scratch.

Więc musi być na coś dobry!

Czy Scratch to dobry język programowania dla użytkowników Raspberry Pi?

Przypuszczam, że jest to dobre do zarysowania powierzchni programowania.

Całym założeniem Scratcha jest ułatwienie programowania dzieciom i młodzieży. Zamiast pisać abstrakcyjny kod, Scratch pozwala tworzyć programy poprzez łączenie ze sobą bloków.

Aby mrugać diodą LED w Scratchu, należy złożyć te klocki:

Scratch
Sekwencja w programie Scratch do mrugania diodą LED. Zdjęcie z YouTube'a Aarona Maurera.

Teraz porównaj to ze skryptem Pythona, który ma mrugać diodą 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) 

Być może jest to ten sam powód, dla którego niektórzy ludzie wolą używać GUI zamiast linii poleceń. Zamiast zmieniać wartość zmiennej za pomocą kilku backspaces, klawiszy strzałek i innych naciśnięć klawiszy, zamiast tego po prostu kliknij i wybierz.

Dla prostych projektów, uczenia się i nauczania, Scratch jest świetnym wyborem.

Wady programu Scratch dla Raspberry Pi

Jeśli przegapiliście kalambury w poprzedniej części, oto one ponownie: Scratch tylko zarysowuje powierzchnię.

Nieuchronnie, gdy twój projekt stanie się większy, będziesz chciał użyć bardziej mainstreamowego języka, takiego jak Python lub C lub C++, ponieważ będziesz miał dostęp do bogactwa kodu, bibliotek i skryptów dostępnych online.

Naucz się Scratcha

Jeśli jesteś ciekawy, jak działa Scratch, możesz szybko zorientować się, jak działa jego metoda "klocków" na jego środowisko internetowe.

Scratch IDE

C lub C++ dla Raspberry Pi

Ostateczne języki programowania, które dają ci ostateczną kontrolę, są również jednymi z najtrudniejszych do nauczenia się i opanowania.

Jaka jest różnica między C a C++?

C++ jest w pewnym sensie rozszerzoną wersją C, która zawiera wiele cech, takich jak natywna, zaprojektowana obsługa programowania obiektowego. ++ jest kalamburem na sposób, w jaki operatory mogą być inkrementowane w C i samym C++. Na przykład, jeśli masz zmienną cats i chcesz dodać do niej jeden, możesz po prostu napisać cats++;

Szczególnie C++ jest bardzo dynamiczny i ciągle dostaje aktualizacje. Jest to skomplikowany język do nauki. Dla początkujących, C może być bardziej odpowiednim językiem do wyboru.

Jaka jest główna różnica w stosunku do innych języków używanych w Pi?

Języki te są kompilowane - to znaczy, że piszesz kod, a następnie używasz specjalnej aplikacji zwanej kompilatorem do produkcji maszynowego kodu bajtowego, który procesor docelowej architektury rozumie natywnie. Innymi słowy, jeśli chcesz uruchomić aplikację zarówno na Pico W i Raspberry Pi, jak i na komputerze stacjonarnym (opartym na architekturze x86), będziesz musiał uruchomić specjalny kompilator dla każdego z nich.

Innym przykładem skompilowanego języka jest Rust, który ma kilka dużych zalet. Widzisz, C i C ++ wymagają, abyś zadbał o pewne rzeczy, takie jak zbieranie śmieci - jeśli tego nie zrobisz, twoja aplikacja może się rozbić. Albo cały komputer może się zawiesić, jeśli napiszesz sterowniki urządzeń. W przypadku Rust istnieją dodatkowe zabezpieczenia dla dewelopera.

Inny popularny skompilowany język opracowany przez Google nazywa się Go. Możesz zauważyć odniesienia do nich od czasu do czasu.

Moja sugestia dla ciebie, aby zacząć, jeśli nigdy wcześniej nie kodowałeś, to języki interpretowane. Nie wymagają one kroku kompilacji, ale są odczytywane przez aplikację, która następnie wykonuje odpowiednie polecenie. Dobrym językiem do rozpoczęcia pracy jest Python (lub MicroPython).

Jednakże, jeśli kiedykolwiek będziesz chciał stworzyć niesamowite projekty, takie jak gra w Dooma na Raspberry Pi Pico to będziesz musiał znać C, lub C++.

C lub C++ są generalnie jednym z trzech języków najczęściej używanych na Raspberry Pi, drugim jest Python. Dlatego też spora część tej sekcji będzie mówić o zaletach i wadach tych dwóch.

Zacznijmy od porównania tej trójki:

C i C++MicroPython
PrędkośćSzybciejWolniejsze
Krzywa uczenia sięHarderŁatwiejsze
Zarządzanie pamięciąRęcznieAutomatyczny (garbage collection)
Skompilowane? Interpretowany?SkompilowaneInterpretowane
Wykorzystanie przez społecznośćSzerokie zastosowanie, szczególnie wykorzystywane w zaawansowanych projektach, gdzie konieczna jest kontrola minutowaSzeroko stosowany przez początkujących do zaawansowanych użytkowników.
Biblioteki dla komponentówOgólnie dostępneOgólnie dostępne

Czy początkujący powinien uczyć się C czy C++?

Nic nie stoi na przeszkodzie, by przejść przez próbę ognia.

Bo co cię nie zabije, to cię wzmocni.

Większość projektów można zrealizować za pomocą Pythona, jak również C lub C++. Dostępność bibliotek dla tych trzech języków jest również powszechna i jest mało prawdopodobne, abyś dostał wąskie gardło z powodu braku biblioteki.

Jak bardzo jesteś wytrwały?

C lub C++ mogą być nieco mniej przyjemne dla początkującego programisty, ponieważ istnieje wiele aspektów, o których musiałbyś myśleć, a których nie byłoby w Pythonie.

Na przykład w C i C++ będziesz musiał zarządzać pamięcią. Będziesz też musiał zastanowić się, jaki typ danych przypisać zmiennej. To może stać się uciążliwe, jeśli nie jesteś świadomy konsekwencji plusów i minusów wyboru typu.

Na przykład, jeśli chcesz przypisać liczbę całkowitą w C i C ++, będziesz musiał zdecydować, czy chcesz:

  • int
  • char
  • unsigned char
  • sygnowany znak
  • unsigned int
  • krótki
  • niepodpisana krótka
  • długi
  • unsigned long

Wybór jednego z nich będzie miał wpływ na szybkość działania twojego programu i wykorzystanie pamięci.

I chociaż Python jest mniej wydajny, będziesz musiał to zrobić tylko w celu zadeklarowania liczby całkowitej:

integer = 999999999999999

Ale bez bólu nie ma zysku, prawda?

Po zapoznaniu się z działaniem języka C lub C++ zaczniesz czerpać z tego korzyści. Ponieważ Raspberry Pi nie jest bardzo potężnym komputerem jak na dzisiejsze standardy, umiejętność pisania wydajnego kodu pomoże Ci uzyskać najlepszą wydajność z jego ograniczonego sprzętu.

Konfiguracja C i C++ zajmuje więcej czasu

Kiedy pojawiły się płytki Raspberry Pi Pico, musiałem napisać o skonfigurowaniu Pico dla Pythona oraz C i C++.

Python był super łatwy. Pobierz Thonny. Podłącz Pico. Flash MicroPython. Gotowe.

C i C++ były dużo trudniejsze i bardziej żmudne. Jest to oczywiste -. Raspberry Pi publikuje PDF właśnie na temat konfiguracji C/C++. Powiedzmy, że musiałeś wejść w interakcję z linią poleceń, aby ją skonfigurować.

You'll always C the light

C ma około 40 lat i jest używany do dziś.

Co to o niej mówi?

Jest to jeden z najbardziej dynamicznych języków, jakich można się nauczyć, który może być używany do tworzenia oprogramowania i manipulowania sprzętem.

Tak więc, jeśli jesteś chętny do nauki języka, który jest niezwykle użyteczny i potężny, C może być najlepszym pierwszym językiem do nauki.

Psst... C i C++ mogą być używane na innych tablicach

Piszę to w 2022 roku, gdzie zapas Raspberry Pi jest sporym problemem.

Jedną z największych rzeczy, o które pytają ludzie jest "Jakie są alternatywne deski? Nie mogę budować projektów z nieistniejącym Raspberry Pi".

Istnieje wiele alternatywnych tablic, a możesz je sprawdzić tutaj.

Jeśli nauczyłeś się C lub C++, będziesz mógł zanurkować prosto do używania płytki Arduino lub ESP32 lub ESP8266, których programy są prawie wyłącznie napisane w C lub C++.

Te płyty mogą nie przyjmować Pythona, więc jeśli powodem, dla którego jesteś w Raspberry Pi jest tworzenie projektów z mikrokontrolerami, możesz znaleźć C lub C++ jako bardziej uniwersalny język.

Nauka C lub C++ dla Raspberry Pi

MagPi wydaje za darmo magazyn dla początkujących.

MagPi publikuje również listę miejsc do nauki C (nie dotyczy to konkretnie Raspberry Pi)

Raspberry Pi publikuje PDF, który uczy jak używać C/C++ z Raspberry Pi Pico

Tu są smoki

W powyższym rozdziale mówiliśmy o językach programowania, których naukę powinieneś rozważyć.

Poniższa sekcja mówi o potencjalnych językach, które również mogą być używane z Raspberry Pi, ale przypadki użycia i społeczność nie są tak duże jak w przypadku używania Pythona, C, C++ i Scratcha.

JavaScript (w tym NodeJS)

Program JavaScript, który loguje dane z czujnika temperatury/wilgotności DHT22 na Raspberry Pi (i serwuje stronę internetową pokazującą te dane)

JavaScript jest jednym z najbardziej przydatnych języków dla programistów hobbystów, ponieważ można w nim tworzyć aplikacje, strony internetowe (z HTML i CSS) i backendy.

Jeden z największych postępów w sferze JavaScript nazywa się NodeJS. Wcześniej JavaScript był głównie oparty na przeglądarce, ale dzięki NodeJS można uruchomić backend i tworzyć aplikacje dla Raspberry Pi i innych komputerów.

Konkretnie do Raspberry Pi, istnieją biblioteki, które pozwalają manipulować pinami GPIO w Raspberry Pi. Jeśli więc chcesz zbudować proste projekty, nie będziesz miał problemu z uruchomieniem programu w języku JavaScript.

Jednak największym wąskim gardłem w Twoim projekcie jest brak społeczności, w której krzyżują się Raspberry Pi i JavaScript.

Staje się to oczywiste, gdy odwiedzasz czyjegoś Githuba i nieuchronnie jego projekt jest napisany w Pythonie lub C, C++. Bardzo niewielu programistów używa JavaScript z Raspberry Pi.

Czy zatem JavaScript jest do wypisania?

Nie, nie bardzo.

Nadal ma swoje zastosowania.

Jednym z przypadków użycia, w których samo uczenie się JavaScript może pomóc w osiągnięciu celów, jest to, że chcesz użyć swojego Raspberry Pi jako serwera internetowego. Można napisać backend w ExpressJS (backend framework) i frontend w React/Angular/Vue (frontend frameworki), a następnie użyć PM2 (menedżer procesów), aby dostarczyć back i frontend. W tym scenariuszu możesz to zrobić całkowicie w JavaScript.

Raspberry Pi Pico W potrzebuje JavaScript

Jakiś czas temu na meetupie React, ktoś dokuczał mi za pisanie vanilla JavaScript. Przekomarzał się, że "jaki to rok? 2000?"

Jeśli masz Raspberry Pi Pico W, będziesz musiał wiedzieć, jak napisać wanilia JavaScript.

Zobacz, kto się teraz śmieje?

Podczas gdy świat web developerów przeszedł na używanie frameworków frontendowych, takich jak React, Angular czy Vue, obsługa stron internetowych na Raspberry Pi Pico wymaga zazwyczaj znajomości pisania vanilla JavaScript. Jeśli spojrzysz na nasze tutoriale w Pico W mega artykuł, zobaczysz.

Suwak na górze po prawej stronie steruje serwomechanizmem za pomocą JavaScript

Jedną z największych zalet Pico W jest to, że pozwala na serwowanie strony internetowej, którą prawdopodobnie wykorzystasz do sterowania czymś. Na przykład, Pico W może obsługiwać stronę internetową z suwakiem, który steruje serwomechanizmem. Aby przekazać wartość suwaka do Pico W, będziesz musiał znać JavaScript.

Naucz się JavaScript

Mogę polecić tylko jedną stronę internetową, która okazała się dla mnie najlepszym zasobem do nauki JavaScript:

https://javascript.info/

Ten zasób jest BARDZO dobry dla użytkowników Pico W, ponieważ uczy cię każdego aspektu vanilla JavaScript, a także zdarzeń przeglądarki. Będziesz musiał znać te ostatnie, aby skutecznie kontrolować Pico W i UX strony internetowej, którą będziesz serwować.

HTML + CSS

HTML i CSS nie są tak naprawdę językami programowania, ale są ściśle powiązane z sekcją JavaScript. Są przydatne, jeśli:

  • Planujesz zrobić coś opartego na sieci
  • Planujesz serwować stronę internetową za pomocą Pico W

Ta jedna strona bardzo mi pomogła: Internetyzacja jest trudna

Jest trochę przestarzały. Na przykład, nie obejmuje CSS Grid lub aspect-ratio.

Ale Interneting is Hard ma skuteczną metodę nauczania i może nauczyć cię wystarczająco dużo, aby zbudować stronę internetową dla Pico W.

Zalecenia, jeśli chcesz...

Szybko osiągaj wyniki: Python lub Scratch

Naucz dzieci jak programować: Scratch

Uzyskaj pełną kontrolę nad swoim sprzętem: C lub C++

Tworzenie projektów sprzętowych: Python lub C lub C++, nie zawracaj sobie głowy niczym innym

Hosting serwera WWW i tworzenie stron internetowych: HTML, CSS, JavaScript

Zbuduj projekt IoT za pomocą Pico W: Python, HTML, CSS, JavaScript

Stać się boskim (z bezbożną inwestycją czasu): C lub (zwłaszcza) C++

Komentarzy: 4

  1. Doug styczeń 29, 2023 o 5:07 pm

    Proszę nie określać "C/C++" jako 1 język. To tylko dezorientuje początkujących. Są to DWA bardzo różne języki z różnymi krzywymi uczenia się i różnymi możliwościami.

    • raspi berry luty 4, 2023 o 11:46 am

      Dziękuję za informację zwrotną - poprawiłem artykuł i rozszerzyłem nieco różnice między językami.

    • NADEEM INAMDAR lipiec 4, 2024 o 9:48 am

      Nie zgadzam się ze stwierdzeniem "To są DWA bardzo różne języki". C jest podzbiorem C++. Oczywiście C++ jest znacznie trudniejszy do nauczenia niż C.

  2. Pedro kwiecień 9, 2023 o 3:20 pm

    Gracias por éste artículo

Pozostaw komentarz