Какой язык программирования следует использовать для Raspberry Pi?
Если вы новичок в Raspberry Pi, вы можете оказаться на распутье перед выбором языка программирования для изучения.
Существует огромное количество языков, и то, что вы решите изучить, окажет глубокое влияние на ваши возможности. Итак, давайте рассмотрим языки, которые вы можете использовать с Raspberry Pi.
Предварительно загруженные языки на Raspberry Pi
Возможно, самый большой совет, который вы можете получить от Raspberry Pi, - это языки, предварительно загруженные в ОС Raspberry Pi.
При каждой установке у вас будут предустановлены Python, Scratch и C или C++.
Поэтому давайте сначала рассмотрим эти три языка.
Python: отличный язык общего назначения для Raspberry Pi
Плюсы:
- Легкость в освоении
- Множество библиотек для компонентов
- Множество отличных уроков, которые помогут вам войти в курс дела.
- Может использоваться на микрокомпьютерах 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.
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 Store в Кембридже, Великобритания, у них также был Pi под управлением Scratch.
Значит, он должен быть чем-то полезен!
Является ли Scratch хорошим языком программирования для пользователей Raspberry Pi?
Я полагаю, что это хорошо для того, чтобы поцарапать поверхность программирования.
Суть Scratch заключается в том, чтобы сделать программирование простым для детей и подростков. Вместо того чтобы писать абстрактный код, Scratch позволяет создавать программы, соединяя блоки вместе.
Для того чтобы мигать светодиодом с помощью Scratch, нужно собрать эти блоки:
Теперь сравните это со сценарием 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, вы можете быстро получить представление о том, как работает его метод "строительных блоков" в своей онлайновой среде.
- Raspberry Pi имеет несколько курсов по Scratchв том числе и те, которые связаны с созданием аппаратуры.
- Аарон Маурер выпустил учебник на YouTube чтобы показать вам, как использовать Scratch 3 и мигать светодиодом.
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 - один из самых полезных языков для программиста-любителя, поскольку с его помощью можно создавать приложения, веб-сайты (с 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 мега статья, вы увидите.
Одним из самых больших преимуществ Pico W является то, что он позволяет вам обслуживать веб-страницу, которую вы, вероятно, будете использовать для управления чем-либо. Например, Pico W может обслуживать веб-страницу с ползунком, который управляет сервоприводом. Для того чтобы передать значение ползунка на Pico W, вам потребуется знание JavaScript.
Изучайте JavaScript
Я могу порекомендовать только одну веб-страницу, которая оказалась для меня лучшим ресурсом для изучения JavaScript:
Этот ресурс ОЧЕНЬ полезен для пользователей 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++
Пожалуйста, не называйте "C/C++" одним языком. Это только запутает новичков. Это ДВА совершенно разных языка с разными кривыми обучения и разными возможностями.
Спасибо за отзыв - я внес поправки в статью и немного расширил разницу между языками.
Я не согласен с утверждением "Это ДВА совершенно разных языка". C является подмножеством C++. Конечно, C++ гораздо сложнее для изучения, чем C.
Gracias por éste artículo