阿布云

你所需要的,不仅仅是一个好用的代理。

Python与C/C++在嵌入式系统里的运用比较

阿布云 发表于

12.png

长久以来,C/C++一直编译着嵌入式系统编程领域,但二者亦拥有自己的缺陷。相比之下,Python则成为嵌入式系统中的另一大绝佳语言选项。在今天的文章中,我们将共同探讨双方的优劣与Python在嵌入式编程领域的定位。

C/C++属于编译语言,而Python则属于解释语言。C语言最初诞生于1969年,C++则出现在1983年,相比之下1989年才开发完成的Python显然更为年轻。经过数十年的磨砺,如今Python已经成为最具人气的开源编程语言之一。

Python阐述

Python在美国各顶级计算机科学部门中拥有最高人气。根据Barr集团发布的调查结果,十大计算机科学部门中有八个在利用Python教授编码技能。这里抛开优劣不谈,事实证明应届毕业生对于Python的理解要远远超过C/C++。

多数开发爱好者都具备一定程度的Python经验,且其Python水平往往要高于C/C++。然而在嵌入式领域,情况则正好相反——Barr集团在调查中发现95%的嵌入式系统使用C/C++语言。虽然这样的状况对Python非常不利,但其易于上手的特性加上更为广泛的从业者规模,相信其会在未来一步步超越C/C++。

Python在嵌入式计算领域的发展速度很快。虽然目前非C/C++语言在嵌入式系统中的代码占比仅为5%,但Python无疑将在未来几年内快速蚕食C/C++的份额。无人机、机器人或者其它包含Arduino与Raspberry Pi的项目正吸引到众多拥有Python技能背景的爱好者,而这一趋势也必然会给嵌入式编程带来深刻影响。

相较于C/C++编写缓慢、易出错且难以直接阅读的问题,Python则一直以易于编写、低错误率及可读性著称。事实上,Python的复用能力要远高于C/C++,而这一优势将在目前的敏捷开发环境中起到决定性作用。

嵌入式算法本身正变得愈发复杂。利用神经网络及其它高度介入流程,Python取代了简单的控制循环并以此作为立足根基。另外,Python库性能表现更出色且更具人类友好性,因而能够显著提升程序员的生产效率。

C/C++阐述

C/C++的特性非常明确:旨在构建紧凑且运行速度更快的代码。然而,运行速度只是开发工作中需要考虑的因素之一。虽然Python的执行效率不及C/C++,但其开发效率却更高,因此二者只能说是各擅胜场。

改进Python速度表现

我们目前可以选择多种方法提升Python代码运行速度。除了Theano库,另有Cython等Python优化扩展可供使用,其基本上相当于利用Python的静态类型与关键字以提高数学运算速度。由于Cython本身为静态类型,因此大家可以将其编译为C/C++并享受与后者一致的速度优势。

准时制(简称JIT)编译器则是另一种提升Python运行时速度的好方案。这些编译器能够与Python解释器并行运作以生成汇编指令代码,进而达到更快的执行速度。虽然对于软件而言,针对数据结构与算法的优化才是提升性能的核心法宝,但其设计与实现难度太高,因此上述工具相信能够帮助大家更为轻松地完成提速。

利用Python与嵌入式系统通信

Python可能是目前最为出色的用户与嵌入式系统间通信中间件选项。通过Python进行消息收发能够帮助用户轻松完成自动化测试。Python脚本亦可让系统处于不同状态、设置配置并测试全部实际用例。Python还可用于接收嵌入式系统数据以备日后分析。再有,程序员亦可利用Python开发参数及其它方法,用于执行此类数据的分析任务。

当下在考量Python与C/C++间的优劣时,大家实际上面对的是这样一个选择: 开发速度还是运行时速度 。不过未来,这一难题恐怕并不需要由Python开发者来担心,而是将由嵌入式系统设计师负责——毕竟Python的普及趋势早已不可阻挡。

51CTO译稿