近日,Toit 编程语言团队宣布将项目开源。但其实很多开发者对 Toit 并不熟悉,Toit 究竟是什么?
Toit 是由 Google Chrome V8 团队开发的,创立于 2018 年,旨在为物联网设备构建一个通用固件,以取代传统的开发流程。它们提供了一套全新的功能,甚至是一种专为物联网开发的类似 Python 的新编程语言。
Toit 是一种用于物联网(IoT,Internet of Things)的面向对象的编程语言,这也是它与其他用于嵌入式系统的编程语言最大的不同之处。它集成了语法高亮、goto-definitions 和自动补全等先进的编辑器功能。根据官方文档显示,Toit 在 IoT 设备上能够实现数秒级别的快速代码部署。
借助 Toit 这个专门用于物联网的语言,可以实现更好的电源管理,这对物联网这类采用电池供电的设备十分重要。Toit 还具有一个自动内存管理系统,有助于优化内存使用,使设备能长期稳定运行避免崩溃。新语言还带有垃圾收集器,同样有助于内存管理系统。像上述这样的功能在传统的编程语言中通常是不具备的。
对于开源 Toit 编程语言的初心,Toit 团队表示,几年前,一群软件工程师对物联网 (IoT) 的状态感到非常沮丧。物联网能够将我们周围的所有设备变得更加智能:我们的家用电器、工业机器和建筑物将被连接起来,并且能够像普通计算机一样交互、共享数据和拥有复杂的逻辑。
但这个未来还没有到来,因为为物联网编写软件真的很难。
虽然现代软件开发是由持续交付、迭代和实验驱动的,但物联网却像是一个“怪物”,与上述法则格格不入。
物联网之所以“难搞”,主要有以下四个原因:
-
首先,由于功耗过大,典型的物联网芯片资源过于有限,无法运行 Linux。因此,人们要么直接在设备(所谓的裸机)上编写代码,要么在非常有限的任务调度程序上编写代码,这两者都没有为开发者提供出能够在其他平台上获得的抽象机制或支持。 -
其次,软件是特定于芯片的,你将与第一批芯片设备制造商捆绑在一起。 -
第三,一旦你有了硬件并编写了软件,你会发现更新设备真的很困难:唯一的方法就是全部刷新,这意味着你要删除设备上的所有软件,重新安装它,然后祈祷它能重新上线。一旦失败,例如你的代码中某处存在错误,那么你的设备也就跟着“完蛋”了。 -
最后,管理多个设备很复杂:在现代软件开发中,一个常见的策略是逐渐向越来越多的用户推出新版本。物联网设备无法做到这一点。
凭借在 Google 为 Flutter 构建 V8 JavaScript 引擎和 Dart语言的丰富经验,Toit 团队着手开发最佳平台,为连接到互联网的嵌入式设备构建、部署和维护软件。
在开发 Toit 时,也并非一帆风顺。据研发团队称:
当我们开始构建平台时,我们很快意识到我们需要一种高效的高级编程语言,专门为满足物联网的需求而设计。但是它不存在。于是我们研究了 Python 和 JavaScript,但在微控制器上,这两种语言的编写速度不够快,我们不愿意受到性能不佳的阻碍。
我们不得不解决一些棘手的技术问题,但在 2021 年初,我们有了一个工作平台,我们开始让开发人员能够为他们的微控制器构建高质量的功能。如今,我们有世界各地的客户在 Toit 平台 上构建他们的产品。
据该团队介绍,Toit 在 ESP32 上执行代码的速度比 MicroPython 快 30 倍以上,它与 Python 非常相似,Python 开发人员可以在几个小时内学会该门语言。
之所以开源这门语言,Toit 研发团队表示:
我们从一开始就知道 Toit 语言在某个时候必须是开源的。所有主要的编程语言都是开源的,你可以从开源中获得充满活力的生态系统,才能大规模采用一种语言。
经过多次迭代和在实际环境中使用 Toit 的大量经验,我们现在知道 Toit 语言是为微控制器编写强大软件时非常有用的工具,我们希望更多的开发人员能够从中受益。我们等待这一天已经有一段时间了,但我们很高兴地分享我们已经开源了 Toit 语言和我们的实现,并 通过 GitHub 提供 了它。