脚本语言适合物联网开发吗

简介: 物联网在今天已经不是一个新词汇,尤其是“物”这么接地气的东西,在互联网深入到各行各业时,自然而然会结合在一起,形成物联网。

序言

物联网在今天已经不是一个新词汇,尤其是“物”这么接地气的东西,在互联网深入到各行各业时,自然而然会结合在一起,形成物联网。

这个“物”,就是千奇百怪、多种多样的嵌入式硬件、边缘硬件,以及通用的计算机终端的集合。
image.png
(图片来源于互联网)

而关键也就是这个所谓的“物”,尤其是嵌入式硬件,把业内各路神仙高手都给折腾得不轻,多少年了,这个“物”的开发,竟然和二十年前没什么本质差异,这能忍?

今天就聊一聊,物联网的开发到底还有没有质的提升空间,脚本语言到底合不合适物联网开发?

物联网的开发语言

先别急聊物联网的开发语言,先看看互联网是怎么一步一步过来的,编程语言又是怎么个演化过程。

互联网简史

说是简史,那就一定得简单。

整个互联网的历史,就是人类疯狂建造信息高速的历史。
数字世界中的数据通信,和物理世界中的物品流通,尤其是和建造高速、高铁、飞机等交通基础设施以后,开辟的物流链路,并无二致。
编程语言的种类

编程的方法论可以是类似的,但用于不同目的的编程的实际操作方式,当然是会不同的。
如果针对不同目的、不同维度的编程方式是相同的,那一定意味着分工还不够精细和优化,效率还不够高。

于是对编程语言有如下粗略的分类:

低级语言

机器语言:01010110011110
汇编语言:把常用的机器指令序列简化为一些助记词
高级语言

面向过程编程语言:并非聚焦于数据,而是聚焦于过程,典型如 Basic, Fortran, C, Pascal
面向对象编程语言:出于理想化地解决现实世界的问题而生,一切皆对象,如 Java, Python, C++, C#, JavaScript, and PHP.
函数式编程语言:为处理运算而生,聚焦于函数,Haskell, Scala, Erlang等
脚本语言:用于执行自动化任务或重复任务,运行时解释,无需编译,如Bash, JavaScript, Shell, Python, and Perl.
什么时候该选用何种语言

离硬件最近的部分,需要用低级语言来处理,或是把高级语言翻译成低级语言处理。
接近底层的基础设施,应该用高级语言,首先肯定是C,其次按需要混编其他语言。
基础设施之上的应用框架部分,适合选用为解决现实世界的问题而生的语言,比如面向对象的语言。
最后应用的部分,根据目标应用需求,选用不同语言,大多也是面向对象或脚本等高级语言。
所有软件都封装好以后,仅仅是组装、定制、自动化、个性化,那么脚本语言是不二之选。

物联网设备应用开发的现状

互联网和物联网开发的区别

好了,绕了一圈,回到文章开头提出的问题。
可为什么物联网中“物”的开发,会很多年没有质的提升呢?

本质上来说,互联网开发中所用的服务器(硬件),和物联网的嵌入式硬件,也是没有区别的。
都是沙子做的高集成度芯片,加上外围电路形成核心板、主板,再接上一堆的外设,完成各自需要做的任务。
那区别究竟在哪里?

还是拿造高速来形容。
服务器相当于高速路网体系中的关键交通枢纽,要打造一个网络,必然投入重金先建设枢纽进行计算调度和数据流转分配,是首先标准化的。
而物联网嵌入式硬件,相当于末端的站点,可能是一个十八线小乡村,是不是要连入高速路网都不一定,更不用说要让它承担重要的战略任务了。而且每一个十八线小乡村站,都因为各个地方的地理情况不同,千差万别,有的是建在树林里的,有建在山上的,还有建在河边甚至悬崖边的。

所以碎片化 和 场景广是物联网开发和物联网开发最大的区别。

机遇和挑战

好了,现在产能富余了,交通枢纽该建也都建差不多了,大家觉得十八线小乡村站,是不是也可以考虑并入高速路网?

这时候机会就来了,首先是扩建,让小乡村站有更大的容量和吞吐量,可以安排更多工作人员并行进行协调调度,小乡村站的承建方是开心得眉飞色舞了,因为他们的方案可以大麦,大麦!
但是问题也随之而来了。

每一个小乡村的站长,都有各自的管理和建设模式,可能还是用笔和纸在记账呢!这放以前也够用啊,而且是最优性价比方案,作为站长,只需要管理自己一个人就行了,足以让小乡村站运转得井井有条。
但现在呢,让并入高速路网,说会有很多交通流量经过,也给安排了一个大团队来管理,那只用纸和笔还搞得定吗?

是不是得请一个专家来出谋划策指定方案和框架标准,至少也得向关键交通枢纽(服务器)学习呀!

更好的方案:HaaS轻应用

好了,既然这么多十八线小乡村站都需要并如高速路网,那么我们由交通枢纽委员会来出一个标准化方案吧。

小乡村扩建以后,可以把枢纽上的一些标准范式的框架套用过来,可以裁剪适配,具体的站点怎么设计,还是得站长自己来个性化定制了。

于是,HaaS轻应用应运而生。
HaaS轻应用借鉴了互联网开发的经验,将“无所不能”的前端技术,迁移到嵌入式设备。使得在物联网的硬件开发中,也有机会打开创造力的匣子,百花齐放。

首先,它是一套框架,支撑嵌入式硬件上轻应用的运行。
其次,它以面向对象的方式封装硬件资源,使得底层基础设施的能力都能提供到位。
最后,它用脚本语言JavaScript/Python进行编程,无需编译,即可快速按需定制和自动化完成既定任务。
用来驱动硬件的脚本,大概长什么样呢?


var deviceAddr = 1;
var device = modbus(
  { id: 'UART2' },
  { id: 'D13', polarity: 1 },
  deviceAddr
);

var events = require('events');
var event = new events();
var status = 0x01;
setInterval(function () {
  device.write('c1-8', status).then(function (data) {
    console.log('write c1 data ' + data);
  });
  /* read back */
}, 2000);

event.on('write', function () {
  device.read('c1').then(function (data) {
    console.log('read c1 data ' + data);
  });
})

// ...

这是一段modbus读写硬件外设的代码。

我们可以看到,实际的硬件相关操作其实是没有体现细节的,都是调用封装好的API,代码里都是一些简单逻辑。
所谓的轻应用,也可以理解为:业务脚本逻辑 + 一堆API调用。

当这些原子的功能组件API抽象得足够完善时,就可以干很多活了,比如
image.png
当然,这只是一些典型场景,适合在脚本语言做物联网开发的早期阶段,快速占领市场。
待到生态愈发成熟,可以有更多的应用场景从中受益。
image.png
(图片来源于互联网)

他山之石

为什么是脚本语言?而不是其他编译性语言呢?
一句话:因为硬件性能提升了,所以可以牺牲部分运行效率,换取开发效率。

他山之石,可以攻玉。
我们来看看其他领域的应用开发的典型语言。

游戏

最成功的游戏之一,魔兽世界,使用Lua脚本开发插件,使得玩家可以轻松按自己需要个性化定制,各类玩法和插件生态得以发展得异常多姿多彩。
工业

PLC是工业控制最常见的器件,采用梯形图编程,而梯形图的逻辑解算过程,其实就是脚本语言的解释过程,只不过梯形图更像是图形化的脚本语言而已。
区块链

Solidity是一种用于编写智能合约的类脚本语言,随着Ethereum的发展而被广泛采用。
sCrypt也是一款用于开发智能合约的脚本语言,在BitcoinSV上运行。
结语:对未来的思考

越接近于解决末端实际问题的应用,越是可能使用脚本来解决。
原因是越是末端,越难以抽象和标准化,越多的定制和个性化,因此脚本是一大利器。

可以大胆猜测,脚本语言不仅适合物联网开发,而且极度适合物联网末端碎片化解决方案的全栈开发,包括嵌入式硬件、服务以及前端。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
4月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
53 0
|
4月前
|
存储 物联网 大数据
助力工业物联网,工业大数据之脚本开发【五】
助力工业物联网,工业大数据之脚本开发【五】
40 0
|
7月前
|
消息中间件 传感器 监控
IoT企业物联网平台,数据服务开发实战
IoT企业物联网平台开发实战
312 0
|
3月前
|
存储 安全 数据管理
构建智慧家庭的未来:物联网平台与智能家居系统的开发
在数字化时代,物联网平台和智能家居系统的开发日益受到关注。本文将探讨物联网平台和智能家居系统的定义、优势以及开发过程中的挑战与解决方案。通过对智能家居系统的构建和物联网平台的应用,我们可以实现更加智能、高效和安全的生活环境。
|
5月前
|
边缘计算 供应链 安全
|
7月前
|
传感器 安全 物联网
一个非常优秀的跨平台物联网开发常用的网络请求库libcurl
一个非常优秀的跨平台物联网开发常用的网络请求库libcurl
176 1
|
7月前
|
JSON 物联网 API
嵌入式物联网开发之使用Json获取北京时间校准接口API
嵌入式物联网开发之使用Json获取北京时间校准接口API
263 1
|
8月前
|
传感器 IDE 物联网
物联网操作系统与开发:连接智能世界的编程之旅
本篇深入研究了物联网中的操作系统选择与比较,嵌入式软件开发环境,以及物联网应用程序的开发与调试。我们比较了常见的物联网操作系统,并通过Zephyr操作系统的示例代码展示了如何控制LED灯。读者将了解嵌入式开发环境的设置,包括交叉编译器和IDE的配置,以及如何开发物联网应用程序,从传感器数据采集到与云平台通信。通过本篇内容,读者将更加了解物联网操作系统与应用开发的关键知识,为连接智能世界的编程之旅奠定了基础。
132 0
|
9月前
|
搜索推荐 JavaScript 数据可视化
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
383 0
|
12月前
|
IDE 物联网 开发工具
ESP8266-NodeMCU物联网开发之Arduino环境搭建
ESP8266-NodeMCU物联网开发之Arduino环境搭建
409 0

相关产品

  • 物联网平台