C与C++从起步阶段的设计初衷就一直在于对其运行所在的硬件平台进行直接控制。这种特性在需要对硬件进行细化程度极高的监测及控制时确实优势明显,但这同时也意味着我们所编写的代码需要从非常具体的角度考量硬件状况。而用编程圈里的行话来说,就是代码不太适合进行移植。
Java的设计思路则被打造成一款面向对象语言,因此具备非常出色的可移植性:编译器当中几乎不存在任何硬件依赖性。而要对特定硬件进行特殊而准确的控制,Java需要借助硬件所支持的库并从中调用通用代码。
这一切都让Java拥有极具吸引力的经济性定位:对Java代码开发进行一次性投入,企业将能够获得足以运行在多种不同平台之上的开发成果。Java同时也是当前人气最高的主流编程语言之一,其被应用于成千上万计算机科学与电子工程技术项目当中。因此我们能够从人才市场上轻松找到能够胜任相关工作的应聘者。但从另一方面讲,选择Java的问题在于我们必须确保自己所选定的平台能够支持Java(目前只有极少数强大的平台会提供Java支持能力),同时又要保证这些硬件能够支持我们为了实现特定控制功能所需要使用的库。
JavaScript
从表面上看,大家很容易误以为JavaScript属于Java语言的某种衍生版本。完全可以理解,不过完全错误。这两种语言确实在某种程度上存在类似或者说交集(例如某些库可以同时与二者相兼容),但二者的开发过程完全独立而且并不共享任何语法或者语义。
顾名思义,JavaScript是一种脚本语言,被广泛应用于构建Web前端应用。如果大家打算在Raspberry Pi硬件平台上使用Apache服务器,旨在从由Arduino传感器构建的网络当中提取数据,那么JavaScript绝对是个很好的起步选项。
自从被网景公司开发出来之时,JavaScript就一直在快速发展演进并已经成为一款功能齐备的语言。不过大家千万别把它当成是什么轻量化嵌入式控制器——它所采用的解释结构意味着我们需要承担其运行成本。换言之,至少也得是Raspberry Pi这样的系统才能承担JavaScript所带来的性能损失。
Python
这款在假期闲暇时间开发而成并借用著名喜剧团体命名的编程语言从表面上看似乎不太可能成为严肃开发项目的备选方案。然而事实证明,Python如今已经成为Web开发领域最具活力的语言选项之一,而且其应用范围已经扩散到了嵌入式控制以及物联网领域。Python在很多方面拥有极为出色的灵活性表现。举例来说,它作为一种解释语言能够被提交至单一运行时编译器当中,或者通过其中内置的预编译器实现代码运行,从而对其紧凑的可执行代码进行分发。
而最让编程团队心动的是,Python语言拥有自己的一大专注重点,即高度强调代码内容的可读性。这款语言的设计规范提到了代码可读性以及紧凑优雅语法的重要意义。任何一位曾经试图解读他人C语言代码并希望对其进行优化的朋友,应该都能深刻感受到代码可读性在实际工作中的关键作用。
与本篇文章提到的其它语言一样,Python充当嵌入式语言的前提在于其运行所处的嵌入式平台需要具备一定的计算能力。如果大家希望开发的是一款能够获取数据、将其以某种数据库格式加以整理,而后汇总成表以实现信息控制的应用方案,那么Python绝对是位颇具竞争力的候选编程语言选手。
Go
首先必须强调一点:这里说的是“Go”,而不是“Go!”二者属于完全不同的两种语言,而且拥有完全不同的功能定位。Go由谷歌公司负责开发并广泛适用于各类处理器及平台。虽然它只是众多源自C设计理念的编程语言当中的一种,但却在面向特定嵌入式编程类型时拥有大量远胜C语言的功能特性。
Go语言增加了一种显式散列表类型,这些类型在从各种传感器及执行器处收集数据并向其发送数据方面具备相当突出的实用性。Go语言还深入支持使用传感器以及设备网络的能力——当然,这同时也增加了潜在风险。