17611538698
webmaster@21cto.com

IoT 项目的 6 种顶级编程语言

物联网 0 1143 2023-12-02 03:53:44

每天,各地都有更多的设备连接到互联网,耐心地等待我们的命令。我们怎样才能对它们进行排序呢?他们说的是哪一种编程语言?

简单的答案是,“智能”设备使用许多与台式机相同的语言,部分原因是它们与台式计算机的相似性不断增加。“Raspberry Pi 现在是一台真正的计算机,”  Eclipse 基金会营销副总裁 Ian Skerrett 说。

毫不奇怪,他所说的“真正的计算机”使用许多相同的语言。在 2016 年 4 月对物联网 (IoT) 代码编写开发人员进行的一项调查中,Eclipse 基金会发现 Java、C、JavaScript 和 Python 是“构建物联网解决方案”开发人员的四大选择。

这与用于编写旧桌面应用程序和服务器的编程语言没有太大区别。但是,虽然简单的答案是智能设备与台式机和服务器没有太大区别,但复杂的答案是构成物联网的所有设备之间都存在重要差异。

当我们说“物联网设备”时,我们的意思是什么

Skerrett 将物联网架构环境分为三个主要部分:创建数据的传感器、组织数据的集线器或本地网关,以及收集数据的地理位置遥远的集中式服务器。

“如果您正在为裸机上的传感器编写代码,那么您可能会使用 C,”Skerrett 说。直接使用内存 RAM 的能力使 C 语言成为硬件开发人员的首选之一。

不过,从开发人员的角度来看,链中的其余机器与台式计算机一样熟悉。因此,开发人员能够使用他们熟悉的语言。

集线器可能是智能手机或小型控制台,但它们只是内部的通用机器。它们通常运行标准操作系统,通常感觉与大型机器没有什么不同,至少在通过命令行进行通信时是这样。

选择物联网语言

他们没有理由不能像桌面项目一样选择语言。如果 Raspberry Pi 运行的是 Linux,那么它的行为与桌面应用没有什么不同。 

当关于语言的争论传到服务器上时,那里也没有什么区别了。它们与中枢和传感器通信(通常使用某种微服务架构),然后将数据推送到标准数据库中。

虽然流行语言的常见嫌疑人已经在物联网领域占据主导地位,但 Eclipse 调查发现至少有 14 种不同的语言被 5% 或更多的开发人员提到。

“我们在 Eclipse 上的物联网工作是多语言的,”Skerrett 说。“这不是一种语言。”

Eclipse项目的 IoT 开源工作一直在扩大,现在有 20 多个不同的项目,涵盖数百万行代码。很多是用 Java 编写的,但也有很多是用 Python、JavaScript、C 和其他重要框架编写的。

以下是一些用于构建下一代互联网连接基础的最佳选择。

Java

Eclipse 调查和embedded-computing 的另一项调查中的首选是Java,对于这种仍然以“一次编写,随处运行”而闻名的编程语言来说,这一结果并不奇怪。最初的项目针对机顶盒,这是非桌面计算的首批领域之一。

Java的优点是众所周知的。开发人员可以在桌面上创建和调试代码,然后使用 Java 虚拟机将其移动到任何芯片。这意味着代码不仅可以在 JVM 常见的地方(服务器和智能手机)运行,还可以在最小的机器上运行。

自 2000 年该规范获得批准以来,Java ME(或微型版本)已在小型手机和其他嵌入式设备上使用。它通过非常有限的类库和其他工具集合节省了空间。如今,大多数关注点都集中在 Java SE Embedded上,它的功能更接近标准版。开发人员可以使用 Java 8 平台的最新功能,然后将其代码转移到更小的嵌入式设备上。

Java SE Embedded 节省的大部分计算资源来自于当机器可以配置为无头运行、没有监视器或键盘时,剥离了显示信息所需的类。所有的通信都通过网络进行。

有多个开源项目,例如 Pi4J和BlueJ,展示了 Java 的嵌入式版本如何运行良好,即使在看起来有限的芯片上也是如此。

C

它的语法中充满了标点符号,并且可能会犯上百万种不同的小错误,但是对于许多为最底层(最接近硬件)软件编写的程序员来说,该语言仍然是首选。该语言不会对您隐藏任何内容,这意味着您可以修改代码的每个部分,以从功能不足的设备中获得最佳性能。每一位都可以翻转。堆栈上的每个值都可用。只是不要犯错误,因为安全网很少。

Victor Berrios 是 ZigBee 联盟的首席技术官,该联盟支持连接小型设备的 ZigBee 标准。“从我们在市场上看到的情况来看,C 仍然是受限设备的首选语言,”他说。“这些通常不包括‘商业’级操作系统,而是同样用 C 语言编码的基本任务调度程序类型的资源管理。”

他补充说,具有完整操作系统的更先进或更大的设备仍然使用大量 C 代码,但他表示 Java 等其他语言也开始同样频繁地使用。当苹果推出智能手机时,大部分编程仍然是用 Objective C 完成的,但这可能会逐渐被 Swift 取代(见下文)。

Python

它最初是一种将真实代码粘合在一起的脚本语言,但它越来越多地用作许多开发人员的主要语言。当小型设备有足够的内存和计算能力时,开发人员可以自由选择让他们的生活更轻松的语言,而这种语言越来越多地成为Python。

微控制器开发人员 Kinman Covey 表示,Python 不仅易于学习,而且得到了一个大型、乐于助人的社区的支持。语法干净简单,吸引了更多的程序员。例如,该语言通常是社会科学家和生物学家的首选。当他们在实验室中需要智能设备时,他们很乐意使用他们熟悉的语言:Python。

“Python 是市场上最受欢迎的微控制器之一Raspberry Pi的首选语言,”Covey 说。许多培训文献都是用 Python 编写的,许多学校使用该平台来教授计算机编程。如果项目相对简单并且没有很大的计算需求,则可以从小学使用的相同板和库构建有效的工具。

还有设计得更小的版本。MicroPython板和软件包是一款小型微控制器,经过优化,可以在只有几平方英寸的小板上运行 Python 

JavaScript

虽然许多人仍然认为 JavaScript 是一种在网页上弹出警报框的编程语言,但该语言在服务器上相对较新的流行使其成为物联网应用程序的令人惊讶的流行性选择。在 Eclipse 调查中,41.8% 的开发人员选择了 JavaScript,31.5% 表示他们在项目中使用 Node.js。

这项工作的大部分集中在收集信息然后存储信息的服务器和网关或集线器上。运行 Linux 的小型智能集线器和传感器通常可以运行 Node.js。

但即使大多数 Node.js 代码在较大的机器上运行,也有一些努力旨在将其带到较小的机器上。Espruino和Tessel是从一开始就运行 JavaScript 的微控制器的两个示例。例如,Tessel 是围绕 Node.js 构建的,使 Web 开发人员无需学习新语言即可轻松进入物联网。

Swift

虽然 Swift 仍然主要用于为 Apple 的 iOS 和 macOS 设备构建应用程序,但这些机器的优势意味着它通常是物联网堆栈的一部分。如果您希望您的东西与 iPhone 或 iPad 交互,您可能会希望使用 Swift(或者可能是它的前身 Objective C)构建应用程序。

在这个领域工作还有其他充分的理由。苹果希望使其 iOS 设备成为家庭传感器网络的中心,因此它一直在创建处理大部分工作的库和基础设施。这些库是其HomeKit平台的基础 ,该平台为集成来自兼容设备网络的数据源提供支持。这意味着您可以专注于任务的细节,并将大部分集成开销留给 HomeKit。 

PHP

这种语言可能是博客主和网站原型设计者的首选,但它在物联网中也出奇地受欢迎。在 Eclipse 调查中,继大型语言及其近亲(例如 C#)之后,PHP 是开发人员最常提到的一种语言;11.2% 的人表示他们将 PHP 代码包含在他们的技术堆栈中。

虽然代码在服务器上处理微服务的作用是一个显而易见的应用,但它也在最低级别找到了一些吸引力。许多 Raspberry Pi 开发人员正在讨论启动一个完整的 LAMP 堆栈,其中包含在 Linux 之上运行的 Apache、MySQL 和 PHP。他们有效地颠覆了范式,将互联网上最低级的东西变成了完整的网络服务器。

如果 Raspberry Pi 有足够的空闲周期(而且经常如此),那么在芯片上放置 LAMP 堆栈会使开发变得更简单。过去 20 年开发的所有服务器端代码都可以在小型传感器中找到归属。与强大的指针杂技 C 语言相比,它看起来像是一个玩具,但如果它能快速完成工作并使老板高兴,为什么不使用它呢?

作者:万能的大雄

评论