你会用什么程序语言写固件?

2016-03-14 10:58:00
全芯编辑
转贴:
电子工程专辑
1325

        几年前的4月,编译程序软件供应商Keil Software (现在已是ARM的一部分)在某嵌入式系统技术杂志上刊登了一则广告,宣传他们为8051架构开发的新COBOL语言编译程序;但内行人一看就知道那是个愚人节的玩笑。

        8051 架构/嵌入式系统用的COBOL语言真的是非常荒谬而好笑的点子,我还特地打电话给该公司的总裁,恭喜他想出这么幽默的笑话,而他告诉我真的有人想要订购那样的产品!这反映了我们目前仍然会看到的、为嵌入式系统开发案选择编程语言的某些心态,理想抱负似乎总胜过现实。

        8051架构专用的COBOL语言?不要怀疑,那真的是愚人节的玩笑!

        你要是常去Slashdot或其他类似的嵌入式开发网站,都会看到关于编程语言的讨论;D语言是最新的热门编程语言吗?还是Swift?我一天到晚收到人们想要以C#语言编写固件之相关信息的电子邮件;而也常会听到有人说现在整个世界的潮流是Java,如果不跟上就落伍了。

        整个世界?事实上在嵌入式领域,大致上只有使用两种语言:C与C++;根据Embedded.com (EE Time姊妹网站)曾做过的统计,读者们主要使用的语言如下图(X轴的单位是百分比):

        Embedded.com统计读者最常用的嵌入式编程语言

        而显然令人惊讶的是,就连C++的市占率都没有赢过C。在选择编程语言时,必须要考虑到软件开发者的普遍性,不然如果你请不到精通某种特定语言的工程师,恐怕就得花费很长的时间以及高昂的训练成本,否则就会失败。

        我曾经被请去帮忙一个在瑞典的、面临失败的开发案,就是用C++语言写的;我想该语言是与该应用程序自然契合,但他们是为何会做这样的选择?那家公司的副总裁告诉我,他曾在《商业周刊(Business Week)》读到一篇文章,说C++可让任何东西立即可重复使用,所以他才决定使用该种语言。

        那个开发案有40个工程师参与,但只有一个新来的毕业生,有过面向对象(object-oriented)的经验,另外39个人则试着从工作中学习。这会是一场灾难,他们需要实践、抛弃式的项目来取得经验,一个因为不会出货、所以就算犯错也没关系的项目。

        C语言已经在这个领域存在30年,而且没有退出的迹象;现在有很多更好的选择,我希望能转移到Ada语言、甚至至更好的SPARK,但除非有更多经过训练的工程师,这恐怕不会发生。身为嵌入式设计工程师的你用的是哪一种语言?C与C++仍然健在吗?

发表评论
评论通过审核之后才会显示。
updated: 2020-12-02 08:28:47