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

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

序言

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

这个“物”,就是千奇百怪、多种多样的嵌入式硬件、边缘硬件,以及通用的计算机终端的集合。
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
相关文章
|
7月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
151 0
|
7月前
|
存储 物联网 大数据
助力工业物联网,工业大数据之脚本开发【五】
助力工业物联网,工业大数据之脚本开发【五】
87 0
|
消息中间件 传感器 监控
IoT企业物联网平台,数据服务开发实战
IoT企业物联网平台开发实战
438 0
|
4月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
26天前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
21天前
|
传感器 存储 物联网
在物联网(IoT)快速发展的今天,C语言作为物联网开发中的关键工具,以其高效、灵活、可移植的特点
在物联网(IoT)快速发展的今天,C语言作为物联网开发中的关键工具,以其高效、灵活、可移植的特点,广泛应用于嵌入式系统开发、通信协议实现及后端服务构建等领域,成为推动物联网技术进步的重要力量。
30 1
|
26天前
|
存储 网络协议 物联网
C 语言物联网开发之网络通信与数据传输难题
本文探讨了C语言在物联网开发中遇到的网络通信与数据传输挑战,分析了常见问题并提出了优化策略,旨在提高数据传输效率和系统稳定性。
|
3月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
3月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
7月前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
54 2

热门文章

最新文章

相关产品

  • 物联网平台
  • 下一篇
    DataWorks