明天的嵌入式系统编程语言仍然是C语言吗?

时间:2017-07-27 12:51

明天的嵌入式系统编程语言仍然是C语言吗?

摘要:本文介绍了嵌入式系统编程语言的发展,并将C语言和时下其他较为流行的编程语言比较,分析了各自的优缺点和未来发展趋势。

本文引用地址:

  您在下一项目编程时所使用的最佳语言是什么? 如果您是一名嵌入式系统设计人员,可能认为这一问题实在可笑。您会使用C语言,如果希望加强管理,则会使用C衍生的C++。可能会有一些关键代码片段是以汇编语言编写的,但是,据Barr集团最近的一项研究表明,目前95%的嵌入式系统代码是采用C或者C++编写的。

  然而,世界是在变化的。新的程序员、新挑战以及新体系结构让C松开了在嵌入式软件上的“抓手”。据最近的一项研究表明,嵌入式计算语言发展最快的是Python,当然还有很多其他参与竞争的语言,只是这些语言仍然占少数。但是逐渐地,一直坚持使用C/C++的程序员像20年前汇编语言专家那样开始冒险——采用更快、更紧凑和更可靠的程序。 图1提出了新语言能够提高嵌入式计算机领域的效能。

C语言在嵌入式领域中的地位受到冲击

  嵌入式算法变革的一个主要推动力量是其他工作环境的程序员进入了嵌入式领域。这方面最明显的是刚毕业的学生进入职场。以前,刚毕业的学生在C课程中学会了编程,会用C或者C++完成他们的大部分项目。而现在,已经不再如此了。Intel软件工程经理David Stewart注意到,“现在,大部分计算机科学课程使用Python作为他们的入门语言。”计算机科学专业毕业的学生很有可能在Python、Ruby以及几种脚本语言上有丰富的经验,但是他们可能从未认真地使用过C语言。同时,其他影响也越来越多。使用Android作为平台进行相关的或者用户友好的嵌入式设计,为Android的自然语言——Java,带来了机会。在这一复杂景象的另一端,机器人、无人机或者相似的小项目业余爱好开发人员通常都有Arduino或者Raspberry-Pi背景。他们的经验会体现在非常紧凑和简单的程序发生器或者B#等小型语言环境里。

明天的嵌入式系统编程语言仍然是C语言吗?

  这一现象对物联网(IoT)的广泛研究也产生了影响,网络开发人员也参与到讨论中。他们认为,如果嵌入式系统的外部接口是RESTful Web,编程语言应该是JavaScript或者其服务器侧相关的Node.js。热衷于使用C语言进行开发的人员应该观察一下node.js——贝宝和沃尔玛等公司在企业规模的开发中大量使用了这一可扩展平台,据跟踪调查网站modulecounts.com,在任何编程语言中,该平台的辅助支持系统增长是最快的。

  选择Node.js的动机部分是源自文化,但是也有体系结构方面的因素。IoT会在客户侧、互联网以及服务器侧之间分配其嵌入式系统任务。其中,客户侧连接实际环境,通常要求尽可能少地采用硬件。客户侧很自然地采用硬件专用库支持的Web应用程序,而服务器侧则是服务器应用程序。这样,对于Web程序员,在IoT系统编程中很显然会使用JavaScript和Node.js。

  日益复杂的嵌入式算法是变革的另一推动力量。简单的控制环路被卡尔曼滤波器、神经网络以及基于模型的控制功能所替代,高性能计算语言——Python,开放计算语言(例如OpenCL™)以及MATLAB等基于模型的环境逐渐发展起来。

强烈的动机

  那么这些新人们为什么不静下心来学习C语言呢? Stewart说:“真正的原因在于开发人员的效能。”反对C语言的人一直认为这种语言编写慢,容易出错,会带来意想不到的硬件相关问题,并且除了最初的程序员,其他人很难读懂它。这些因素会对提高设计效能产生不利影响。而很多最近出现的语言逐步转向快速学习和高效的代码重用。虽然目前几乎所有语言都受益于C语言高度简洁的语法,但现在的重点已经转回可读性,而不是最少字符数。不但在现代语言中鼓励实现协调一致的文档,而且结构化约定也通常会这样定义文档。C程序员一直把这类文档看成是自由表述的例子,因为作者自己不会牵连其中。例如,这些约定使得实用工具程序能够从Python组件的结构化注释中生成用户手册。

明天的嵌入式系统编程语言仍然是C语言吗?

  现代语言还采用了高级数据结构,可以在C++环境中建立任何对象,并重用它。基于指针,Python还提供自然List和Dictionary数据类型。而Ruby等其他语言,基本上是面向对象的,支持结构和重用,这使其可以融入到程序员的习惯中。

  • A+
所属分类:C/C++