嵌入式开发:嵌入式系统中Python与C/C++的比较

liftword2周前 (12-20)技术文章24

C/C++编程语言在嵌入式系统编程中占据主导地位,尽管它们有许多缺点。另一方面,Python有许多优点,使其成为嵌入式开发的优秀语言。让我们看看每一个利弊,以及为什么你应该考虑Python作为嵌入式编程。

C/C++是编译语言,而Python是解释语言。C/C++已经存在了很多年;C1969首次开发的,1983C++PythonGuido van Rossum1989年创建的Python更年轻。从那时起,它就成为最流行的开源编程语言之一。所有Python版本都是开源的,可以自由使用和分发,即使对于商业项目也是如此。

Python的情况

据相关研究表明,超过95%的嵌入式开发中代码是用C/C++编写的。对于Python来说,嵌入式系统上的这种遗留问题可能很难克服,但它的属性和用Python编写代码的人数可能有助于它在未来超越C/C++

虽然C/C++编写速度慢,容易出错,而且经常不可读,但Python以其可写性、减少错误和可读性而闻名。可读性的重要性无论怎样强调都不为过:当在团队中工作时,可读性对于维护代码至关重要。除非你愿意花更多的时间和金钱在调试和质量保证上,否则它必须很容易理解。Python的设计重用远远超过了C/C++,在当今的敏捷环境中,设计重用是保持领先还是落后于竞争对手的区别。

嵌入式算法变得越来越复杂。简单的控制循环正被神经网络和其他帮助Python站稳脚跟的复杂过程所取代。虽然Theano主要是用C/C++编写的,但Python用于以人性化的方式与高性能库进行接口。Python库正在蓬勃发展PyPIPython包索引,有超过80000个模块,这些庞大的汇编让嵌入式开发人员可以选择跳过几个步骤,在自己的代码中使用已经建立的函数,从而极大地提高了生产率。

C/C++的情况

C/C++的情况非常明显:它创建了更紧凑、更快的运行时代码,并且它已经是95%嵌入式系统代码的首选语言。虽然Python在运行时的效率可能不如C/C++,但在开发过程中它的效率要高得多。解释器读取每一行代码,解析它,执行运行时检查和调用例程,以便执行代码中的操作。这比运行C/C++代码要活跃得多,在C/C++代码中,同一行代码可能只编译成两条指令。这会导致Python运行速度变慢,能耗增加。

提高Python的速度

因此,与C/C++相比,Python的主要缺点是它的运行速度,但是有几种方法可以优化代码,使其运行更高效。除了像Theano这样的库之外,还有像Cython这样的Python优化扩展,具有静态类型和关键字,可以更快地运行数学,轻松地编译为C/C++并以C/C++的速度运行。JIT编译器是提高Python运行速度的另一个好方法,这个编译器与Python的解释器并行工作,为循环中的代码生成已编译的机器指令,使解释器的后续传递执行得更快。pypyjit编译器能够将Python的执行速度提高近两倍。但是,JIT编译器应该只在有足够空间的情况下使用,而嵌入式开发系统通常不会有太多的空闲空间。最好的优化是使用更好的数据结构和算法,但这是软件设计和实现中最困难的任务,因此最好使用上述工具之一,具体取决于你的技能水平。

使用Python与嵌入式系统通信

Python被用作用户和他们正在使用的嵌入式系统之间的通信中间时,它可能是最强大的。通过Python向嵌入式系统发送消息或从嵌入式系统发送消息允许用户自动化测试。Python脚本可以将系统置于不同的状态,设置配置,并测试各种真实世界的用例。Python还可用于接收可存储用于分析的嵌入式系统数据。然后,程序员可以使用Python开发参数和其他分析数据的方法。

目前,关于PythonC/C++优点的主要争论归结为对您的团队更重要的东西:开发速度还是运行时速度。不过,在未来,可能不需要Python程序员来证明它在嵌入式系统中的应用,而需要嵌入式开发人员来考虑如何适应Python不断增长的流行。


了解更多

相关文章

用MicroPython设计嵌入式系统的利弊

长期以来,C/C++编程语言一直主导着嵌入式开发系统行业,很少有其他语言能够站稳脚跟。虽然Java和Ada等语言已经尝试过了,但Python这种语言的普及率不仅在上升,而且在相当长的一段时间内已经进入...

嵌入式开发:使用MicroPython进行实时软件开发

  虽然像Ada和C++这样的语言已经在某些圈子里获得了一些采用,但是在很大程度上,嵌入式软件仍然被过程化的和危险的C编程语言所支配。然而,一个有趣的趋势开始将Python移植到微控制器上。最近,Py...

嵌入式开发用什么语言?为什么用C语言,不用其他语言?

首先什么是嵌入式? 以计算机应用为核心,软硬件可裁剪的专用计算机系统,对功耗,体积,成本,可靠性有要求的系统。 嵌入式为什么用C语言? 嵌入式最核心的技术是用到了移植操作系统。嵌入式开发最核心的是操作...

嵌入式语言都有哪些 嵌入式软件语言

嵌入式系统是一种特定用途的计算机系统,为了适应特定的硬件平台和任务需求,通常需要使用专门的嵌入式语言进行编程和开发。嵌入式语言具有简洁、高效和针对性强的特点,适合于在资源受限的嵌入式环境中使用。我来介...

通俗一点讲什么是嵌入式? 嵌入式 什么意思

嵌入式系统,就是,在其它电子产品或设备中,加入(嵌入)一个小小的"计算机"。目的是为了,人机交互、采集传感器数据、处理数据、控制执行机构和通信。这些是"计算机"擅长的。...