Jakiego języka programowania powinieneś używać dla Raspberry Pi?
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
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.
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.
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".
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:
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.
- Raspberry Pi ma kilka kursów Scratcha, w tym takie, które dotyczą budowy sprzętu komputerowego.
- Aaron Maurer ma tutorial na YouTube aby pokazać, jak używać Scratcha 3 i mrugać diodą LED.
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ść | Szybciej | Wolniejsze |
Krzywa uczenia się | Harder | Łatwiejsze |
Zarządzanie pamięcią | Ręcznie | Automatyczny (garbage collection) |
Skompilowane? Interpretowany? | Skompilowane | Interpretowane |
Wykorzystanie przez społeczność | Szerokie zastosowanie, szczególnie wykorzystywane w zaawansowanych projektach, gdzie konieczna jest kontrola minutowa | Szeroko stosowany przez początkujących do zaawansowanych użytkowników. |
Biblioteki dla komponentów | Ogólnie dostępne | Ogó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)
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.
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:
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++
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.
Dziękuję za informację zwrotną - poprawiłem artykuł i rozszerzyłem nieco różnice między językami.
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.
Gracias por éste artículo