分享

嵌入式编程语言的最新发展

 guitarhua 2013-12-19
  当问到嵌入式程序员使用的是哪些工具时,往往将会发现他们有一个共同的思路:即C/C++、一种集成开发环境(IDE)或他们各自喜爱的编辑器/调试器以及一个标准库或类似MICroSOFt .NET那样的平台。这些工具可用于大多数应用,但更赋冒险精神或更有远见的程序员往往会寻找更合适的新工具。
    嵌入式开发工具
    1. 脚本语言
    在嵌入式应用中,程序员常常会忽视脚本语言。一般情况下,它们无法达到C语言的速度并且它们的运行时框架很大。对于具有强大处理能力、大容量内存及硬盘的PC来说,这些问题都不会造成影响。但在嵌入式环境中,上述问题却将有可能产生制约。尽管该环境中的处理能力和存储器容量仍在不断增长,尤其是低成本32位MCU也开始出现。
    对大部分脚本系统来说,基本代码的规模是一个典型问题,因为该类系统通常被赋予丰富的特性。在某些情况下,可以将系统简化为其最小的组件集,这样,开发者就只需为他们所需要的特性承担空间成本。这与开发者如何在C语言应用中去除实时操作系统和运行时间库的状况类似。此外,由于一般在运行时处理繁重任务,因此最终生成的应用程序通常较小。
    脚本语言具有许多优势,例如,更灵活的类型系统和更好的文本处理功能,这些都将使某些应用获益。用它快速编写简单应用的代码也很容易,并且可能比C语言代码更易移植。由于某些语言支持运行时编译,代码也往往更具动态特性。这不仅便于调试,而且还有助于设备实现更大的灵活性或更易定制化。
    此外,脚本语言易于获取且能得到很好的支持。Perl、PHP、Python、Ruby、TCL和Javascript被用于从网络服务到服务器管理等一系列应用中。当然,对嵌入式应用来说,基于Web的解决方案会导致一些有趣的折衷。
    例如,许多嵌入式网络设备可实现一个Web服务器并生成HTML页面,可利用一个运行在高处理性能PC上的Web浏览器来浏览这些页面。如果该PC可用来处理通常由嵌入式设备负责的事务,那么会出现哪些情况呢?
 2. AJAX技术
    这可以通过多种途径来解决。一种正日益通用的方法是采用AJAX(异步JavaScript和XML)技术。在这种情况下,一台嵌入式设备将通过其Web服务器提供信息和可能的Javascript代码。这些代码运行在PC上,然后该PC与采用XML格式消息的嵌入式设备进行交互,以取代让嵌入式设备生成完整HTML页面的方法。
 


    该方法不仅更具动态性,而且由于是采用PC而非嵌入式设备(通常嵌入式设备的处理能力较低)来处理用户间的交互,因此也显着提高了响应性能。与不采用该方法时类似,数据源是嵌入式设备,但Javascript程序可来自任何地方:服务器、网关或PC本身都有可能。对负载进行分配和简化嵌入式设备是个有趣的过程。无需修改嵌入式设备就可以构造一个全新的用户接口。
    考虑是选择脚本语言还是选择AJAX是重要的一步。幸运地是,许多脚本系统是以开放源码的形式提供,从而可方便地实施评估。而诸如Javascript这样的语言,在类似Web浏览器和服务器等应用中已经成为标准语言。
    那些更大胆的开发者也许会考虑采用非主流语言(例如Lisp的变种Scheme语言)。许多Scheme平台(例如Per Bothner公司的Kawa Scheme)可生成Java字节码,从而使它们成为可与Java应用共存的脚本系统。
    嵌入式编程语言的最新动向
    Cremains是目前最流行的嵌入式编程语言,并且数年来一直独占鳌头。尽管如此,程序员的工具包还应该更丰富一些,尤其是在处理诸如最新和改进的互联网以及异构和多核系统的时候。工具包内的选项可能是脚本语言、并行编程及图形编程。
    脚本语言源于PC和服务器,但它们同样可应用于嵌入式系统。对具有处理脚本系统所需存储能力的32位系统来说尤其如此。
    此外,脚本语言通常比C语言更具灵活性,这使其可以更加容易地用于一个应用的各个部分。而像Perl、PHP、 Python和Javascript这样的脚本语言通常可作为C语言的补充,并且它们常常互相影响,所以对两类语言都有所了解是有好处的。
    而且,脚本语言已经被用于大型企业应用的服务器端。这些应用常常被分散在多个服务器中完成,但每个部分往往都相对独立,因此,可将它们随意地分散到各个服务器中。
    为充分利用不断增长的处理器核数量,需要程序员在编写并行算法时发挥更大的作用,以便各个核能相互协作。目前的编程语言可采用类似消息传递接口(MPI)这样的框架,但使用该方法需要占用大量设计时间。该方法可以升级,虽然有时并不是必需的,但当系统设计做得不好的时候,程序员大多希望升级该方法。这也是人们对并行编程语言的兴趣日益增长的原因之一。
    带MPI的高级单线程语言(例如C语言)和并行编程理论之间的主要区别是,并行编程理论通常假设存在隐式并行执行。在工具包中增加这类语言有些为时过早,但跟踪并关注它们何时真正起作用是值得的。
    诸如美国国家仪器(NI)的LabVIEW、MatLab的Simulink以及对象管理组织(Object Management Group)的UML(统一建模语言)等图形编程语言和环境往往会针对新手和专家开发不同的设计。新手可从降低了复杂性的封装中受益,而专家则获得一种以任何人都能明白的方式表述复杂算法的途径。任何使用过IAR SystEMS的visualState的人都了解,与内嵌的C代码相比,采用图形化状态图做开发是多么容易。
    这些面向基于文本的程序员的图形编程环境已取得稳步进展。程序开发者也许仍然会更偏爱文本编程方法或图形编程方法,但将两者严格划分(all-or-nothing)的方法似乎已过时了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多