物联网需要什么样的应用开发语言?

目前来说,是没有一套专门面向物联网应用开发的语言的,这不利于推动物联网的大发展,因此,必须要选择一种适合物联网特点的开发语言。下面我们结合物联网本身的特征,分析物联网对应用开发语言的要求。然后感觉这些要求,对现有的编程语言进行分析,选择出最适合物联网应用开发的编程语言。

一. 物联网应用开发对编程语言的要求

1. 开发语言必须是跨硬件平台的

所谓跨硬件平台,指的是编写的物联网应用程序,能够在多种不同的目标硬件设备上运行,而不用重新编译甚至修改应用程序。这里的不同的目标硬件,主要是指CPU指令集,内存大小,外设的接口类型,外设的访问方式等等硬件层面的东西。如果开发语言不是跨硬件平台的,那么针对一种硬件平台开发的应用程序,就只能运行在这一种硬件设备上。因为硬件平台的具体细节情况,都体现在目标程序中。最典型的例子是采用C语言开发的应用程序,必须根据不同的目标CPU指令集,编译成匹配目标指令集的二进制代码,才能运行。这样如果切换到另外一种指令集的CPU,则必须重新编译,甚至要重新修改应用程序。这在硬件标准化程度非常高的个人计算机领域,问题不大,因为通用的CPU类型就那么几种(Intel,ARM等),而且硬件配置都非常标准,硬盘等存储设备,显示器,键盘/鼠标等输入设备,USB接口,网络接口等等,都是标配。因此针对不同硬件平台的软件移植工作量并不大。但到了物联网时代,这显然无法满足物联网硬件碎片化特征的需要。在物联网环境中,目标设备CPU的种类是PC时代的数十倍,同时硬件配置也各不相同,大部分物联网设备的配置都千差万别,因此,如果仍然采用传统的不能跨硬件的开发语言来编写物联网应用程序,那么对同一种功能的应用程序来说,就需要针对不同的CPU类型,不同的硬件配置,分别进行开发和部署。这显然是无法逾越的困难。

而采用跨平台的编程语言,则可以解决这个问题。比如针对智能摄像头而言,A厂商的摄像头个的配置,可能是ARM的CPU,USB接口,分辨率是1024*768等,而B厂商的摄像头可能是基于x86的CPU,SPI接口。基于摄像头编写一个人脸识别程序,如果采用跨平台的编程语言,则针对A厂商设备编写的应用程序,可以直接在B厂家的设备上使用。但是如果编程语言不是跨硬件平台的,比如C/C++语言,则针对A厂家的摄像头编写的应用程序,必须经过重新编译(甚至还需要大量的修改)之后,才能在B厂家的摄像头上运行。物联网设备的碎片化特征,决定了开发语言必须是跨硬件平台的。

采用跨硬件平台开发语言的另外一个好处,就是限制错误范围,不会因为应用程序层面的错误,而导致整个系统崩溃。由于物联网设备硬件配置的巨大差异,由硬件与软件不匹配导致的错误会大大增加。比如,还是上面的智能摄像头的例子,如果应用程序通过人脸识别,发现可疑人员进入某个特定的范围,则会引发报警。报警的方式有很多种,比如会给智能摄像头的后台发送告警信息,调用本地的扬声器发出警报,甚至在智能摄像头的屏幕上输出告警文字等。很可能有的摄像头没有配置本地扬声装置,而有的摄像头则没有配置本地显示器。这时候上述应用程序的告警代码,就会因为无法找到硬件而出现错误。如果这种错误不被有效隔离或者限制范围,那么可能会导致整个系统的崩溃。

一般的采用跨平台编程语言开发的应用程序,都是运行在一个虚拟机或者解释引擎之上的。虚拟机或者解释引擎进一步运行在物联网设备的操作系统上。应用程序层面的错误,会被虚拟机或者解释引擎捕获,并进行特定的处理,比如终止应用程序的运行,而不会把应用层面的错误传播到系统层面。但是传统的非跨硬件平台的编程语言,则无法限制错误范围。比如,采用C语言开发的应用程序,如果因为堆栈溢出或者指针错误而导致内存紊乱,则会导致整个系统崩溃,尤其是在内存管理单元(MMU)功能缺失的情况下,而这在物联网应用中是非常普遍的。

跨硬件平台编程语言的一个不足,就是其运行效率会比传统的编译型语言(C/C++等)要低一些。这是因为大多数跨硬件平台的语言,都需要一个虚拟机(VM)或解释引擎的支持才能正常运行。虚拟机或者解释引擎本身是一个运行在物联网操作系统之上的一个应用程序,它会读取应用程序的可执行文件或者源代码,然后分析解释,转换为目标CPU的指令并启动运行。而传统的编译型语言,则直接把源代码编译为目标计算机的指令集,可以直接被CPU执行。显然,这个中间转换的过程,会降低应用程序的执行效率。但是执行效率降低的程度,与虚拟机或者解释引擎的实现强相关。有的虚拟机或者解释引擎,采用一些优化算法,并运用诸如“一次解释,多次运行”等机制,可以使得这种效率上的损失降到最低。比如Google推出的V8引擎,可以使得JavaScript语言编写的应用程序,能够基本达到C/C++程序的水平。因此,与跨硬件平台编程语言配合的VM或者解释器,也是至关重要的。

但无论如何优化,JavaScript等跨硬件平台语言始终无法真正赶上或者超于C/C++等编译型语言的效率。因此在一些对实时性和执行效率要求及其严格的场合,比如飞行控制,比如核电监控等等应用领域,在应用之前必须经过细致详尽的评估测试。如果跨平台语言无法满足目标场景的应用,那么建议还是采用传统语言来进行应用程序的开发。毕竟,采用跨平台语言的初衷,是为了更好的扩大物联网应用程序的运行范围,能够降低开发效率和开发难度,快速的形成物联网生态圈。而这类要求极高的场景

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值