Какой язык программирования следует использовать для Raspberry Pi?

Языки программирования Raspberry Pi Титульное изображение

Если вы новичок в Raspberry Pi, вы можете оказаться на распутье перед выбором языка программирования для изучения.

Существует огромное количество языков, и то, что вы решите изучить, окажет глубокое влияние на ваши возможности. Итак, давайте рассмотрим языки, которые вы можете использовать с Raspberry Pi.

Содержание скрыть

Предварительно загруженные языки на Raspberry Pi

Возможно, самый большой совет, который вы можете получить от Raspberry Pi, - это языки, предварительно загруженные в ОС Raspberry Pi.

При каждой установке у вас будут предустановлены Python, Scratch и C или C++.

Поэтому давайте сначала рассмотрим эти три языка.

Python: отличный язык общего назначения для Raspberry Pi

пи дхт22
Код Python, написанный на языке Thonny

Плюсы:

  • Легкость в освоении
  • Множество библиотек для компонентов
  • Множество отличных уроков, которые помогут вам войти в курс дела.
  • Может использоваться на микрокомпьютерах Raspberry Pi и серии Pico

Конс:

  • Не подходит для разработки веб-сайтов (в частности, фронт-энда)
  • Медленнее, чем C или C++

Если вы начинаете с нуля, то Python, вероятно, самый быстрый и эффективный способ начать работу.

Во-первых, Python - один из самых простых языков для освоения.

Другая причина заключается в том, что существует множество библиотек, написанных на Python для различных датчиков и компонентов. В результате, большое количество скриптов для учебников и проектов будет написано на Python.

Если бы вы использовали другой язык, например, JavaScript (через NodeJS), вы могли бы оказаться в затруднительном положении без библиотеки для обычного датчика.

Наконец, изучение языка Python поможет вам взаимодействовать со всеми платами линейки Raspberry Pi. Вы сможете создавать проекты как для Raspberry Pi 4, так и для Raspberry Pi Pico.

Создатели Raspberry Pi также упрощают создание проектов на Python. Например, все микрокомпьютеры Raspberry Pi (например, Pi 4) поставляются с Thonny, которая является Python IDE, а все Raspberry Pi Picos по умолчанию читают MicroPython.

Thonny упрощает работу с Python на Raspberry Pi

Raspberry Pi OS также поставляется с предустановленным Thonny, который позволяет очень легко запускать сценарии Python.

Thonny упрощает программирование на Python, поскольку вы можете легко запускать и останавливать скрипты, нажимая кнопку "RUN" или "STOP" в IDE.

Если же вы используете другой редактор, то для запуска скрипта вам, скорее всего, придется ввести его в Терминал.

MicroPython для Raspberry Pi Pico

Python особенно полезно изучать, если вы хотите использовать Raspberry Pi Pico.

В отличие от микрокомпьютеров Raspberry Pi, Raspberry Pi Pico по умолчанию принимает только три языка: C или C++ и MicroPython.

Это означает, что если вы изучали Python, вы сможете перейти к написанию MicroPython, поскольку синтаксис одинаковый.

Основное различие между Python и MicroPython заключается в том, что последний имеет меньшую стандартную библиотеку.

CircuitPython

Помимо MicroPython, CircuitPython - это еще одна производная Python, которая используется в Raspberry Pi Pico. CircuitPython создан компанией Adafruit.

Является ли Python хорошим языком для пользователей Raspberry Pi?

ДА. Абсолютно.

Вам обязательно понадобится знание языка Python, если вы хотите создавать проекты для Raspberry Pi.

Я начал свой путь программиста с JavaScript. За пределами сферы Raspberry Pi JavaScript является очень эффективным языком, поскольку на нем можно создавать программы и веб-сайты.

Четырехразрядные часы
Четырехразрядный семисегментный дисплей

Однако однажды мне потребовалось создать программу для семисегментного дисплея, и не было способа сделать это на JavaScript.

Я нашел скрипт в Интернете, но он был на языке Python, и это направило меня на путь изучения Python.

Если вам нужен самый эффективный, быстрый и простой способ создания проектов Raspberry Pi, то изучение Python - это то, что вам нужно.

Где изучать Python для программирования на Raspberry Pi

Путь обучения - На этих ресурсах собраны ссылки, по которым вы можете изучить конкретные разделы Python. Это общие пути обучения, а не специфические для Raspberry Pi.

Learney

Карта дорог

Harvard OpenCourseWare, CS50 "Введение в программирование на Python

YouTube видео

Плейлист учебников по Python для начинающих от Кори Шафера

Курсы, посвященные Raspberry Pi - Эти курсы предназначены для начинающих

Фонд Raspberry Pi - Этот курс даст вам общее представление о программировании на Python и погрузит в программирование игр и взаимодействие с датчиками и компонентами.

Настоящий Python, Создание физических проектов с помощью Python на Raspberry Pi - это отличное руководство для тех, у кого есть набор датчиков и компонентов и кто хочет погрузиться в код, взаимодействующий с GPIO. В отличие от общих руководств по Python, здесь вы узнаете, как подключить простые датчики и как взаимодействовать с ними с помощью Raspberry Pi 4.

Scratch для Raspberry Pi

Один из моих друзей показывал мне свой светодиодный светофор, который он сделал с помощью Raspberry Pi 4.

Он - старший разработчик с большими знаниями в программировании на Java и JavaScript, поэтому я ожидал, что он напишет ее на каком-нибудь языке программирования.

Но нет...

Он использовал Scratch.

Что?

Почему старший специалист по программному обеспечению использовал Scratch?

Scratch описывает себя как "крупнейшее в мире сообщество кодирования для детей и язык кодирования с простым визуальным интерфейсом, который позволяет молодым людям создавать цифровые истории, игры и анимацию".

Мой друг определенно не был ребенком.

Когда я спросил его, почему, он дал мне ответ, который был так же полезен, как сообщение о фиксации в Git: "Ну, его просто программировать".

Царапина в магазине raspberry pi

Если честно, когда я посетил магазин Raspberry Pi Store в Кембридже, Великобритания, у них также был Pi под управлением Scratch.

Значит, он должен быть чем-то полезен!

Является ли Scratch хорошим языком программирования для пользователей Raspberry Pi?

Я полагаю, что это хорошо для того, чтобы поцарапать поверхность программирования.

Суть Scratch заключается в том, чтобы сделать программирование простым для детей и подростков. Вместо того чтобы писать абстрактный код, Scratch позволяет создавать программы, соединяя блоки вместе.

Для того чтобы мигать светодиодом с помощью Scratch, нужно собрать эти блоки:

Царапина
Последовательность Scratch для мигания светодиода. Фото с YouTube Аарона Маурера.

Теперь сравните это со сценарием Python для мигания светодиода,

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) 

Возможно, это та же причина, по которой некоторые люди предпочитают использовать графический интерфейс вместо командной строки. Вместо того чтобы изменять значение переменной с помощью нескольких пробелов, стрелок и других нажатий клавиш, вы можете просто щелкнуть и выбрать.

Для простых проектов, обучения и преподавания Scratch - отличный выбор.

Недостатки Scratch для Raspberry Pi

Если вы пропустили каламбур в предыдущем разделе, вот он снова: Царапина только царапает поверхность.

Неизбежно, когда ваш проект станет больше, вы захотите использовать более распространенный язык, такой как Python или C или C++, потому что вы сможете получить доступ к огромному количеству кода, библиотек и скриптов, доступных в Интернете.

Изучайте Scratch

Если вам интересно, как работает Scratch, вы можете быстро получить представление о том, как работает его метод "строительных блоков" в своей онлайновой среде.

Scratch IDE

C или C++ для Raspberry Pi

Самые совершенные языки программирования, которые дают вам максимальный контроль, также являются одними из самых трудных для изучения и освоения.

В чем разница между C и C++?

C++ - это в некотором роде расширенная версия языка C, которая включает в себя множество функций, таких как встроенная поддержка объектно-ориентированного программирования. Символ ++ - это каламбур на способ увеличения операторов в C и самом C++. Например, если у вас есть переменная cats, и вы хотите добавить к ней единицу, вы можете просто написать cats++;

C++ особенно очень динамичен и постоянно обновляется. Это сложный язык для изучения. Для новичков более подходящим языком может быть C.

В чем основное отличие от других языков, используемых для Pi?

Эти языки компилируются - то есть вы пишете код, а затем с помощью специального приложения, называемого компилятором, создаете машинный байт-код, который процессор вашей целевой архитектуры понимает как родной. Другими словами, если вы хотите запустить приложение и на Pico W, и на Raspberry Pi, и на своем настольном компьютере (на базе x86), вам нужно будет запустить специальный компилятор для каждого из них.

Другим примером компилируемого языка является язык Rust, который имеет ряд больших преимуществ. Понимаете, C и C++ требуют от вас заботы о некоторых вещах, таких как сборка мусора - если вы этого не сделаете, ваше приложение может выйти из строя. Или весь компьютер может выйти из строя, если вы пишете драйверы устройств. В Rust есть дополнительные средства защиты для разработчика.

Другой популярный компилируемый язык, разработанный компанией Google, называется Go. Вы можете время от времени встречать ссылки на них.

Я предлагаю вам начать работу, если вы никогда раньше не кодировали, с интерпретируемых языков. Они не требуют компиляции, а считываются приложением, которое затем выполняет нужную команду. Хорошим языком для начала работы является Python (или MicroPython).

Однако если вы когда-нибудь захотите создать умопомрачительные проекты, например, игра Doom на Raspberry Pi Pico то вам потребуется знание языка C или C++.

C или C++, как правило, являются одним из трех языков, наиболее широко используемых на Raspberry Pi, второй - Python. Поэтому значительная часть этого раздела будет посвящена преимуществам и недостаткам этих двух языков.

Для начала давайте сравним эти три варианта:

C и C++MicroPython
СкоростьБыстрееМедленнее
Кривая обученияHarderПроще
Управление памятьюРуководствоАвтоматически (сборка мусора)
Компилированный? Интерпретированный?СоставленоПереведено
Использование по сообществуШирокое применение, особенно в передовых проектах, где необходим мельчайший контрольШироко используется как начинающими, так и опытными пользователями.
Библиотеки для компонентовОбщедоступноОбщедоступно

Должен ли начинающий изучать C или C++?

Ничто не мешает вам пройти через испытание огнем.

Потому что то, что тебя не убивает, делает тебя сильнее.

Большинство проектов можно реализовать с помощью Python, а также C или C++. Доступность библиотек для этих трех языков также широко распространена, и вы вряд ли столкнетесь с проблемой отсутствия библиотеки.

Насколько вы упорны?

C или C++ могут быть немного менее интересными для начинающего программиста, потому что здесь есть много аспектов, о которых вам придется думать, но которые вы не будете думать в Python.

Например, в языках C и C++ вам придется управлять памятью. Вам также придется думать о том, какой тип данных присвоить переменной. Это может стать утомительным занятием, если вы не знаете о последствиях плюсов и минусов выбора типа.

Например, если вы хотите присвоить целое число в C и C++, вам придется решить, хотите ли вы:

  • int
  • char
  • беззнаковый символ
  • подписанный символ
  • беззнаковый инт
  • короткий
  • беззнаковое сокращение
  • длинный
  • беззнаковая длина

Выбор одного из них повлияет на скорость работы вашей программы и использование памяти.

И хотя Python менее эффективен, вам потребуется сделать это только для того, чтобы объявить целое число:

integer = 999999999999999

Но нет боли - нет выгоды, верно?

Как только вы узнаете, как работают языки C или C++, вы начнете пользоваться их преимуществами. Поскольку Raspberry Pi - не очень мощный компьютер по сегодняшним меркам, умение писать эффективный код поможет вам получить максимальную производительность от его ограниченного аппаратного обеспечения.

Настройка C и C++ занимает больше времени

Когда появились платы Raspberry Pi Pico, мне пришлось написать о настройке Pico для Python, C и C++.

Python - это очень просто. Загрузите Thonny. Подключите Pico. Прошиваем MicroPython. Готово.

C и C++ были намного сложнее и утомительнее. Это очевидно - Raspberry Pi публикует PDF-файл, посвященный настройке C/C++. Скажем так, для его настройки вам пришлось взаимодействовать с командной строкой.

Ты всегда будешь светить

C составляет около 40 лет и используется до сих пор.

Что это говорит о нем?

Это один из самых динамичных языков, который можно изучать и который можно использовать для создания программного обеспечения и манипулирования оборудованием.

Поэтому, если вы хотите изучать язык, который является чрезвычайно полезным и мощным, C может стать лучшим первым языком для изучения.

Пссс... C и C++ можно использовать на других платах

Я пишу это в 2022 году, когда акции Raspberry Pi являются большой проблемой.

Один из главных вопросов, который задают люди: "Какие существуют альтернативные платы? Я не могу создавать проекты с несуществующей Raspberry Pi".

Существует множество альтернативных плат, и вы можете ознакомиться с ними здесь.

Если вы изучали C или C++, вы сможете сразу приступить к работе с платой Arduino, ESP32 или ESP8266, программы которых почти полностью написаны на C или C++.

Эти платы могут не принимать Python, поэтому, если причина вашего увлечения Raspberry Pi заключается в создании проектов с микроконтроллерами, вам может подойти язык C или C++.

Изучение языка C или C++ для Raspberry Pi

MagPi бесплатно публикует журнал для начинающих.

MagPi также публикует список мест, где можно изучать язык C (не специфический для Raspberry Pi)

Raspberry Pi публикует PDF, который научит вас использовать C/C++ с Raspberry Pi Pico

Вот драконы

В разделе выше мы рассказали о языках программирования, которые вам следует изучить.

В следующем разделе рассказывается о потенциальных языках, которые также можно использовать с Raspberry Pi, но случаи использования и сообщество не так велико, как при использовании Python, C, C++ и Scratch.

JavaScript (включая NodeJS)

Программа на JavaScript, которая регистрирует данные с датчика температуры/влажности DHT22 на Raspberry Pi (и обслуживает веб-страницу, отображающую данные)

JavaScript - один из самых полезных языков для программиста-любителя, поскольку с его помощью можно создавать приложения, веб-сайты (с HTML и CSS) и бэкенды.

Одно из самых больших достижений в области JavaScript называется NodeJS. Раньше JavaScript был в основном браузерным, но с NodeJS вы можете запускать бэкэнд и создавать приложения для Raspberry Pi и других компьютеров.

В частности, для Raspberry Pi существуют библиотеки, позволяющие манипулировать контактами GPIO Raspberry Pi. Таким образом, если вы хотите создать простой проект, у вас не будет проблем с запуском программы на JavaScript.

Однако самым большим узким местом в вашем проекте является отсутствие сообщества, в котором пересекаются Raspberry Pi и JavaScript.

Это становится очевидным, когда вы заходите на чей-нибудь Github и неизбежно обнаруживаете, что его проект написан на Python или C, C++. Очень немногие программисты используют JavaScript для Raspberry Pi.

Итак, можно ли списать JavaScript?

Нет, не совсем.

Он все еще имеет свое применение.

Один из вариантов использования, когда простое изучение JavaScript может помочь вам достичь ваших целей, - это использование Raspberry Pi в качестве веб-сервера. Вы можете написать бэкенд на ExpressJS (фреймворк для бэкенда) и фронтенд на React/Angular/Vue (фреймворки для фронтенда), а затем использовать PM2 (менеджер процессов) для доставки бэкенда и фронтенда. В этом сценарии вы можете сделать это полностью на JavaScript.

Raspberry Pi Pico W нуждается в JavaScript

Некоторое время назад на встрече React кто-то дразнил меня за то, что я пишу на ванильном JavaScript. Он дразнил: "Какой сейчас год? 2000-е?"

Если у вас есть Raspberry Pi Pico W, то со временем вам понадобится знать, как написать ванильный JavaScript.

Посмотрите, кто теперь смеется?

Хотя мир веб-разработки перешел к использованию фронтенд-фреймворков, таких как React, Angular или Vue, обслуживание веб-сайтов на Raspberry Pi Pico обычно требует от вас умения писать на ванильном JavaScript. Если вы посмотрите наши учебники в разделе Pico W мега статья, вы увидите.

Ползунок в правом верхнем углу управляет сервоприводом с помощью JavaScript

Одним из самых больших преимуществ Pico W является то, что он позволяет вам обслуживать веб-страницу, которую вы, вероятно, будете использовать для управления чем-либо. Например, Pico W может обслуживать веб-страницу с ползунком, который управляет сервоприводом. Для того чтобы передать значение ползунка на Pico W, вам потребуется знание JavaScript.

Изучайте JavaScript

Я могу порекомендовать только одну веб-страницу, которая оказалась для меня лучшим ресурсом для изучения JavaScript:

https://javascript.info/

Этот ресурс ОЧЕНЬ полезен для пользователей Pico W, потому что он обучает вас всем аспектам ванильного JavaScript, а также событиям браузера. Вам понадобится знание последних, чтобы эффективно управлять Pico W и UX веб-страницы, которую вы будете обслуживать.

HTML + CSS

HTML и CSS на самом деле не являются языками программирования, но они тесно связаны с разделом JavaScript. Они полезны, если:

  • Вы планируете сделать что-то на основе веб-технологий
  • Вы планируете обслуживать веб-страницу с помощью Pico W

Этот сайт очень помог мне: Интернет - это сложно

Она немного устарела. Например, в ней нет информации о CSS Grid или соотношении сторон.

Но в программе Interneting is Hard есть эффективный метод обучения, и вы можете научиться достаточному для создания веб-страницы для Pico W.

Рекомендации, если вы хотите...

Получайте результаты быстро: Python или Scratch

Научите детей программированию: Царапина

Получите максимальный контроль над своим оборудованием: C или C++

Создавайте проекты аппаратного обеспечения: Python или C или C++, не беспокойтесь ни о чем другом.

Хостинг веб-сервера и создание веб-сайтов: HTML, CSS, JavaScript

Создайте проект IoT с помощью Pico W: Python, HTML, CSS, JavaScript

Стать богоподобным (с неблагородными затратами времени): C или (особенно) C++

4 комментариев

  1. Doug Январь 29, 2023 в 5:07 пп

    Пожалуйста, не называйте "C/C++" одним языком. Это только запутает новичков. Это ДВА совершенно разных языка с разными кривыми обучения и разными возможностями.

    • raspi berry Февраль 4, 2023 в 11:46 дп

      Спасибо за отзыв - я внес поправки в статью и немного расширил разницу между языками.

    • NADEEM INAMDAR Июль 4, 2024 в 9:48 дп

      Я не согласен с утверждением "Это ДВА совершенно разных языка". C является подмножеством C++. Конечно, C++ гораздо сложнее для изучения, чем C.

  2. Pedro Апрель 9, 2023 в 3:20 пп

    Gracias por éste artículo

Комментировать