C / C ++编程语言主要是嵌入式系统编程,尽管它们有许多缺点。 另一方面,Python具有许多优点,使其成为嵌入式系统的优秀语言。 我们来看看每个的利弊,为什么你应该考虑Python的嵌入式编程。

C / C ++是编译语言,而Python是一种解释语言。 C / C ++已经存在了, C于1969年首次开发,C ++于1983年推出。Python由Guido van Rossum于1989年创建。 此后,它成为最流行的开源编程语言之一。 所有的Python版本都是开源的,可以免费使用和分发,即使是商业项目。 (如果您正在寻找商业级支持和赔偿,则可以使用ActivePython等发行版。)

Python的情况

Python是美国顶尖计算机科(CS)部门最流行的入门编程语言。 根据巴尔集团的一项研究,十大CS部门中有八位目前使用Python来教授编码。 如果你想要辩论它的优点,但简单的事实是,最近毕业生招聘池中最广泛了解的语言是Python。 最近毕业的学生很可能会理解Python中的代码,而不是C / C ++。

业余爱好者的开发人员可能会对Python有一些经验,而且他们更有可能熟练使用Python,而不是C / C ++。 由于只有约40%的计算机软件工程师和系统分析师拥有计算机科学学位,许多行业雇用来自业余爱好者的背景。 但是当涉及到嵌入式系统时,数字变得相当严重。 Barr Group的研究显示,嵌入式系统的代码中有95%以C / C ++编写。 嵌入式系统上的这种遗产可能难以解决Python,但是它的属性和Python编码的人数众多可能有助于它在将来超越C / C ++。

Python不仅是介绍性CS程序中最流行的语言,它也是嵌入式计算中增长最快的语言。 也许这听起来很愚蠢,当你再次扫描数字,并意识到这是其他5%的嵌入式系统代码中不是C / C ++的增长速度最快的语言,但是Python将开始进入C / C ++的垄断地位 未来几年。 通过编程无人机,机器人或其他项目经验的业余爱好者经常有Arduino或Raspberry Pi背景。 那时候他们可能会在一定程度上处理Python,而且也有可能会碰到一些嵌入式系统编程。

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

嵌入式算法越来越复杂。 简单的控制循环被神经网络和其他涉及重大程序的过程所替代,帮助Python获得了立足之地。 有像Theano这样的Python库将优化这些进程的Python代码。 虽然Theano主要以C / C ++编写,但Python用于以人性化的方式与高性能库进行接口。 Python库是蓬勃发展的,PyPI是Python包索引,拥有超过80,000个模块,而这些大规模的大纲通过给予他们选择跳过几个步骤并在自己的代码中使用已经建立的函数来显着提高程序员的生产力。

C ++的情况

C / C ++的案例是非常明显的:它创建了更加紧凑和更快的运行时代码,它已经是95%的嵌入式系统代码的首选语言,因此它具有Python将必须克服的全部遗产。然而,谈到速度,运行速度不是开发考虑的唯一方面 - 您也必须考虑开发速度。虽然Python在运行时可能效率低于C / C ++,但在开发过程中效率更高。解释器读取每行代码,解析它,执行运行时检查和调用例程,以便执行代码中的操作。这比从运行C / C ++代码获得的更多的活动,其中相同的代码行可能被编译成几个指令。这可能会导致运行速度更慢,并且能耗更高。

提高Python的速度

因此,针对Python与C / C ++的主要案例是它的运行时速度,但是有几种方法可以优化代码,使其运行更有效率。除了像Theano这样的图书馆,还有Python的优化扩展,如Cython,它本质上是Python,具有静态类型和关键字,可以更快地运行数学。因为Cython是静态类型的,您可以轻松地编译成C / C ++并以C / C ++速度运行。

即时(JIT)编译器是改进Python运行速度的另一个好方法。这些编译器与Python的解释器并行工作,为循环内的代码生成编译的机器指令。这允许解释器的后续传递更快地执行。 PyPy JIT编译器能够将Python的执行速度提高近二分之一。只有有足够的空间才能使用JIT编译器,而嵌入式系统通常不会有很多空间。最好的优化是使用更好的数据结构和算法,但这是软件设计和实现中最困难的任务,因此最好根据您的技能水平使用上述工具之一。

使用Python与嵌入式系统通信

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

目前,关于Python和C / C ++的优点的主要辩论归结于对您的团队来说更重要的是:开发速度或运行速度。然而,未来,Python程序员可能无法将其用于嵌入式系统,而是嵌入式系统设计人员,以了解如何适应不断增长的Python普及度。