您应该为 Raspberry Pi 使用哪种编程语言?

树莓派编程语言 标题图片

如果你是Raspberry Pi的新手,你可能会发现自己处于选择学习编程语言的十字路口。

有这么多的语言,你决定学习什么将对你能做什么产生深远的影响。因此,让我们来看看你可以在Raspberry Pi上使用哪些语言。

在Raspberry Pi上预装语言

也许你能从Raspberry Pi身上得到的最大提示是预装在Raspberry Pi操作系统上的语言。

在每次安装时,你都会预装Python、Scratch和C或C++。

因此,让我们先来看看这三种语言。

Python:用于树莓派的伟大通用语言

pi dht22
用Thonny编写的Python代码

优点。

  • 易于学习
  • 大量的组件库
  • 有很多很好的教程可以让你快速上手
  • 可以在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操作系统还预装了Thonny,它使运行Python脚本变得非常容易。

Thonny使Python编程变得简单,因为你可以通过按IDE中的 "RUN "或 "STOP "按钮轻松启动和停止脚本。

而如果你使用另一个编辑器,你可能要把脚本输入到终端才能运行它。

用于树莓派Pico的MicroPython

如果你想使用Raspberry Pi Pico,学习Python特别有用。

与Raspberry Pi微型计算机不同,Raspberry Pi Pico默认只接受三种语言。C或C++和MicroPython。

这意味着,如果你已经学会了Python,你将能够过渡到编写MicroPython,因为语法是一样的。

Python和MicroPython的主要区别是后者有一个较小的标准库。

循环器(CircuitPython

除了MicroPython之外,CircuitPython是另一种Python衍生物,在Raspberry Pi Pico中使用。CircuitPython是由Adafruit创建的。

对于Raspberry Pi用户来说,Python是一种好的语言吗?

是的。绝对的。

如果你想为Raspberry Pi建立项目,你肯定需要了解Python。

我是用JavaScript开始我的编程之旅的。在Raspberry Pi领域之外,JavaScript是一种非常有效的语言,因为你可以创建程序和网站。

一个四位数时钟
一个四位数的七段式显示器

然而,有一天,我必须为一个七段式显示器创建一个程序,而在JavaScript中却没有办法做到这一点。

我在网上找到一个脚本,但它是用Python编写的,这使我走上了学习Python的道路。

如果你想用最有效、最快速和最简单的方式来构建Raspberry Pi项目,那么学习Python就是最好的办法。

哪里可以学习Python用于Raspberry Pi编程

学习途径 - 这些资源汇编了你可以学习Python特定部分的链接。它们是一般的学习途径,而不是专门针对Raspberry Pi的。

李尔尼

路线图

哈佛大学开放课程(Harvard OpenCourseWare)。 CS50的Python编程入门

录像带 视频

Corey Schafer的Python初学教程播放列表

树莓派专用课程 - 这些课程是为初学者准备的

树莓派基金会 - 本课程将给你一个关于Python编程的总体概述,它深入到游戏编程以及与传感器和组件的互动。

真正的Python, 在树莓派上用Python构建物理项目 - 这是一个很好的指南,适合那些拥有传感器和组件套件并想深入学习与GPIO互动的代码的人。与一般的Python教程不同,这些教程将教你如何连接简单的传感器,以及如何用Raspberry Pi 4与它们互动。

用于树莓派的Scratch

我的一个朋友向我展示了他用Raspberry Pi 4做的LED交通灯。

他是一个高级开发人员,在Java和JavaScript编程方面有很多知识,所以我期待他能用某种编程语言来写。

但是没有...

他使用了Scratch。

什么?

为什么一个资深软件人要用Scratch?

Scratch将自己描述为 "世界上最大的儿童编码社区和一种具有简单视觉界面的编码语言,使年轻人能够创造数字故事、游戏和动画"。

我的朋友绝对不是一个孩子。

当我问他为什么时,他给了我一个像Git提交信息一样有用的答案:"嗯,它的编程很简单"。

树莓派商店的划痕

公平地说,当我访问英国剑桥的Raspberry Pi商店时,他们也有一台运行Scratch的Pi。

所以,它一定是有好处的!

对于Raspberry Pi用户来说,Scratch是一种好的编程语言吗?

我想,这对抓紧时间学习编程是有好处的。

Scratch的整个前提是使儿童和青少年的编程变得简单。斯克雷奇允许你通过连接块来创建程序,而不是编写抽象的代码。

为了用Scratch闪烁一个LED,你要组装这些块。

擦伤
挠痒痒的顺序来闪烁LED。照片来自Aaron Maurer的YouTube。

现在,将其与Python脚本中的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) 

也许这也是为什么有些人喜欢使用GUI而不是命令行的原因。与其用几个回车键、方向键和其他按键来改变一个变量的值,不如直接点击并选择。

对于简单的项目,学习和教学,Scratch是一个很好的选择。

Scratch for Raspberry Pi的缺点

如果你错过了上一节中的双关语,这里再来一次。划痕只划出了表面。

不可避免的是,一旦你的项目变得更大,你会想使用一种更主流的语言,如Python或C或C++,因为你将能够访问网上的大量代码、库和脚本。

学习Scratch

如果你对Scratch的工作方式感到好奇,你可以很快感受到它的 "积木 "方法是如何工作的 对其在线环境。

Scratch IDE

用于Raspberry Pi的C或C++语言

给予你终极控制的终极编程语言也是最难学习和掌握的语言之一。

C和C++的区别是什么?

C++在某种程度上是C语言的扩展版本,它包括很多特性,如原生设计的面向对象编程支持。++是对C和C++本身中运算符可以递增的方式的双关语。例如,如果你有一个变量cats,并想给它增加一个,你可以简单地写cats++。

特别是C++是非常动态的,不断得到更新。它是一种需要学习的复杂语言。对于初学者来说,C语言可能是一种更合适的选择。

与其他用于Pi的语言的主要区别是什么?

这些语言是经过编译的--也就是说,你写了代码,然后使用一个叫做编译器的特殊应用程序,生成你的目标架构的处理器能够原生理解的机器字节码。换句话说,如果你想在Pico W和Raspberry Pi以及你的台式电脑(基于X86)上运行一个应用程序,你将需要为它们中的每一个运行特定的编译器。

编译语言的另一个例子是Rust,它有一些很大的优势。你看,C和C++需要你处理某些事情,比如垃圾收集--如果你不这么做,你的应用程序可能会崩溃。如果你写设备驱动,整个计算机可能会崩溃。在Rust中,开发者有额外的安全防护措施。

另一种由谷歌开发的流行编译语言被称为Go。你可能会时不时地注意到对它们的引用。

如果你以前从未编过代码,我的建议是解释型语言,以便于你开始学习。它们不需要编译步骤,而是由一个应用程序读入,然后执行正确的命令。一个好的入门语言是Python(或MicroPython)。

然而,如果你想创建 在Raspberry Pi Pico上玩Doom等令人心动的项目 那么你就需要知道C或C++。

C或C++通常是在Raspberry Pi上使用最广泛的三种语言之一,另一种是Python。因此,本节的很大一部分内容将谈论这两种语言的优点和缺点。

让我们先来比较一下这三者。

C和C++微蟒
速度更快较慢
学习曲线更加努力更加容易
内存管理手册自动(垃圾收集)。
编译?解释的?汇编口译的
社区的使用情况用途广泛,特别是用于需要细微控制的高级项目中从初学者到高级用户都广泛使用。
组件的库房一般情况下可以使用一般情况下可以使用

初学者应该学习C语言还是C++?

没有什么能阻止你经历火的考验。

因为杀不死你的东西使你更强大。

大多数项目都可以用Python以及C或C++实现。这三种语言的库的可用性也很广泛,你不太可能因为缺少一个库而陷入瓶颈。

你有多顽强?

对于初级程序员来说,C或C++可能有点不那么有趣,因为有很多方面你必须要考虑,而在Python中你不会考虑。

例如,在C和C++中,你必须管理你的内存。你还需要考虑给一个变量分配什么样的数据类型。如果你不知道选择一个类型的利弊影响,这可能会变得很繁琐。

例如,如果你想在C和C++中分配一个整数,你将不得不决定你是否想要。

  • 䵮䵮
  • 无符号字符
  • 签名字符
  • 无符号单位
  • 短期
  • 无符号短
  • 无符号长

选择其中之一将对你的程序的速度和内存使用产生影响。

虽然Python的效率较低,但你只需要为了声明一个整数而这样做。

integer = 999999999999999

但没有痛苦就没有收获,对吗?

一旦你熟悉了C或C++的工作方式,你就会开始收获好处。因为按照今天的标准,Raspberry Pi并不是一台非常强大的计算机,能够编写高效的代码将帮助你从其有限的硬件中获得最佳性能。

设置C和C++需要更多时间

当Raspberry Pi Pico板出现时,我不得不写关于为Python和C、C++设置Pico的文章。

Python是超级简单的。下载Thonny。插上Pico。Flash MicroPython。完成了。

C和C++的难度更大,也更繁琐。这很明显--- Raspberry Pi发布了一个关于C/C++设置主题的PDF文件.这么说吧,你不得不与命令行互动,以便进行设置。

你将永远是光

C约有40年历史,至今仍在使用。

这说明了什么呢?

它是你能学到的最动态的语言之一,可用于创建软件和操纵硬件。

因此,如果你热衷于学习一门极其有用和强大的语言,C语言可能是最好的第一门学习语言。

Psst...C和C++可以在其他板块上使用

我是在2022年写的这篇文章,那里的树莓派股票是个大问题。

人们问的最大问题之一是:"有什么替代板?我不能用不存在的Raspberry Pi来建立项目"。

有许多替代性的板子,而且 你可以在这里查看它们。

如果你学会了C或C++,你将能够直接进入使用Arduino或ESP32或ESP8266板,其程序几乎全部是用C或C++编写的。

这些板子可能不接受Python,所以如果你进入Raspberry Pi的原因是为了用微控制器创建项目,你可能会发现C或C++是一种更容易转移的语言。

为树莓派学习C或C++

MagPi为初学者免费出版了一本杂志。

MagPi还发布了一份学习C语言的地方清单(不是专门针对Raspberry Pi)。

Raspberry Pi发布了一份PDF文件,教你如何在Raspberry Pi Pico上使用C/C++。

这里有龙

在上面的部分,我们已经谈到了你应该考虑学习的编程语言。

下面的部分谈到了也可以与Raspberry Pi一起使用的潜在语言,但使用案例和社区并不像使用Python、C、C++和Scratch时那样大。

JavaScript(包括NodeJS)

一个记录Raspberry Pi上DHT22温度/湿度传感器数据的JavaScript程序(并提供一个显示数据的网页)。

对于爱好编程的人来说,JavaScript是最有用的语言之一,因为你可以用它来创建应用程序、网站(用HTML和CSS)和后端。

在JavaScript领域,最大的进步之一被称为NodeJS。以前,JavaScript主要是基于浏览器的,但有了NodeJS,你可以运行一个后端,并为你的Raspberry Pi和其他计算机创建应用程序。

具体到Raspberry Pi,有一些库允许你操作Raspberry Pi的GPIO引脚。因此,如果你想建立一个简单的项目,运行一个JavaScript程序就不会有问题。

然而,你的项目最大的瓶颈是缺乏Raspberry Pi和JavaScript交汇的社区。

当你访问某人的Github时,这一点变得很明显,不可避免地,他们的项目是用Python或C,C++写的。很少有程序员使用树莓派的JavaScript。

那么,JavaScript是否可以注销?

不,不是真的。

它仍然有其用途。

仅仅学习JavaScript就能帮助你实现目标的一个用例是,如果你想把Raspberry Pi作为一个网络服务器。你可以用ExpressJS(一个后端框架)编写后端,用React/Angular/Vue(前端框架)编写前端,然后你会用PM2(一个进程管理器)来交付后端和前端。在这种情况下,你可以完全用JavaScript来做。

Raspberry Pi Pico W需要JavaScript

不久前在一个React聚会上,有人嘲笑我写的是vanilla JavaScript。他调侃道:"现在是什么年代?2000年代吗?"

如果你有一个Raspberry Pi Pico W,你最终会需要知道如何编写 vanilla 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和你将提供的网页的用户体验。

HTML + CSS

HTML和CSS并不是真正的编程语言,但它们与JavaScript部分密切相关。它们在以下情况下是很有用的:

  • 你计划做一些基于网络的事情
  • 你计划用Pico W来提供一个网页。

这一个网站对我帮助很大。 上网很困难

它有点过时了。例如,它不包括CSS网格或长宽比。

但 "上网难 "有一套有效的教学方法,可以教你为Pico W建立一个网页。

建议如果你想...

快速获得结果:Python或Scratch

教孩子们如何编程。 擦伤

获得对你的硬件的终极控制。 C或C++

建立硬件项目:Python或C或C++,其他都不用管了

托管网络服务器和建立网站:HTML, CSS, JavaScript

用Pico W建立一个物联网项目。 Python, HTML, CSS, JavaScript

成为神一样的人(投入不菲的时间)。:C或(特别是)C++

4评论

  1. Doug 在1 月 29, 2023在5:07 下午

    请不要把 "C/C++"说成是一种语言。这只会让初学者感到困惑。它们是两种非常不同的语言,有着不同的学习曲线和不同的能力。

    • raspi berry 在2 月 4, 2023在11:46 上午

      谢谢你的反馈--我已经修改了文章,并对语言之间的差异做了一些扩展。

    • NADEEM INAMDAR 在7 月 4, 2024在9:48 上午

      我不同意 "它们是两种截然不同的语言 "这一说法。C 是 C++ 的子集。当然,C++ 比 C 语言更难学习。

  2. Pedro 在4 月 9, 2023在3:20 下午

    感谢你的文章

发表评论