物联网世界的普通话,编程语言一览

  Python对编程团队来说非常优秀的原因是其对代码可读性的强调。该语言的设计规范强调了可读性和紧凑的、优雅的语法的重要性。任何从事过优化别人的C语言代码工作的人都会对优良的可读性心存感激。

  在众多的语言中,Python成为嵌入式开发语言的可能取决于嵌入式平台是否有足够的功率。对于任何需要收集数据的应用而言,都需要以某种数据库格式将其所收集到信息转变为控制信息,Python则是一个有力的竞争者。

  6、Go

  首先要说明的是Go语言和Go!语言并不一样。这是两种十分不同的语言,其使用的目的也十分不同。Go语言是由谷歌领衔推出的一款程序开发语言,可广泛地应用在多种处理器和平台上。尽管其和许多编程语言一样,Go也在C中吸取了很多灵感,但Go在很多方面有C无法媲美的优点。

  Go增加了一个明确的哈希表的类型,这种类型对于从传感器收集数据和发送数据到传感器和执行器都非常有用。对传感器和设备网络的进一步支持是Go语言的关键之一,尽管其引入了一些风险。

  Go支持多个信道上并发的输入、输出和处理。如果得到正确的使用,将使得整个传感器和执行器系统完全协调地运作。但其风险是不同线程之间不一定知道彼此。如果程序员不小心,因为其中缺乏了协调,系统可能会以某个完全无法预料的方式运行。

  7、Rust

  Rust是Mozilla开发的注重安全、性能和并发性的编程语言。创建这个新语言的目的是为了解决一个很顽疾的问题:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。

  正如Mozilla的其它软件一样,Rust也是一个开源的项目,而且现在这门语言也正在飞速的进化着。Rust具有很多和Go类似的性质,而且其还解决了Go语言的一个主要的大问题。

  因为Go语言并不自动在不同的“信道”数据结构之间共享信息,程序可能会出现资源竞争(race condition)的状况,这是多线程编程中比较头疼的问题。因为不同的进程同时访问相同的共享数据而造成数据的不一致性会最终导致系统失控。Rust包括了消除资源竞争的功能,使得其在高度并行的程序方案中比Go语言的风险更低。

  这门语言还需要一些发展的动力,但如果你的团队需要打造一款需要并法计算的应用程序,你应该在Rust和Go之间做出合适的选择,到底哪一个更适合你。

  8、Parasail

  如果你在你的物联网应用中需要考虑并行处理的要求,Parasail就是你所需要的语言。在Go和Rust语言中,我们已经提到了并发。但如果你还不知道并行和并发之间区别(并行是指在同一时刻,有多条指令在多个处理器上同时执行。并发是指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。)所以不要着急你确定你所需要的编程语言,先对它们有足够的了解才是万全之策。

  Parasail是一种编译性的、面向对象的语言,其已经得到了改进,所以这款语言可以通过使用Java、Python、C#甚至Ada的语法进行编程。另外帮我一个忙。如果你正在进行一个物联网项目,而且你认为Ada是可以用于物联网设备的开发的,不妨留下评论。Parasail的并行处理能力非常好,如果你真的需要并行计算,这是不可错过的。

  9、B#

  前面提到的所有语言都是大型的开发语言,在应用到嵌入式平台时都需要经过适当的精简,而B#则一开始就是作为一种小型的高效的嵌入式控制语言而设计的。嵌入式虚拟机(EVM)允许B#运行在不同的平台上,所需的内存仅为24K,比其它开发语言所需要的内存要小得多。

  B#看起来有一点类似于C#,但其并不包含许多C#中对嵌入式项目没有价值的特性,同时还增加了对实时控制的支持。

  10、汇编语言

  如果你真的对老古董感兴趣,或是你的项目对紧凑度的要求非常非常高,那么汇编语言将是你的不二选择(在这里请不要说机器语言,那不是人能够读懂的,好吗?!)。汇编语言是一种用来封装和得到纯净的机器码的方式,而机器码就是处理器最终执行的代码。汇编代码的编辑不需要太大的开销,而且相关专家还可以用汇编代码来实现其它更高级的语言所不能实现的功能。

  然而坏消息是汇编编程没有真正可用的工具来阻止你犯愚蠢的错误。而且更糟糕的是汇编代码的移植性非常差,甚至你为一款处理器而学习的汇编技巧也无法应用到另一款处理器上。