Python|嵌入式系统中Python与CC++的比较

Python|嵌入式系统中Python与CC++的比较

C/C++编程语言在嵌入式系统编程中占据主导地位 , 尽管它们有许多缺点 。 另一方面 , Python有许多优点 , 使其成为嵌入式开发的优秀语言 。 让我们看看每一个利弊 , 以及为什么你应该考虑Python作为嵌入式编程 。
C/C++是编译语言 , 而Python是解释语言 。 C/C++已经存在了很多年;C是1969首次开发的 , 1983是C++ 。 Python比GuidovanRossum在1989年创建的Python更年轻 。 从那时起 , 它就成为最流行的开源编程语言之一 。 所有Python版本都是开源的 , 可以自由使用和分发 , 即使对于商业项目也是如此 。Python的情况
据相关研究表明 , 超过95%的嵌入式开发中代码是用C/C++编写的 。 对于Python来说 , 嵌入式系统上的这种遗留问题可能很难克服 , 但它的属性和用Python编写代码的人数可能有助于它在未来超越C/C++ 。
虽然C/C++编写速度慢 , 容易出错 , 而且经常不可读 , 但Python以其可写性、减少错误和可读性而闻名 。 可读性的重要性无论怎样强调都不为过:当在团队中工作时 , 可读性对于维护代码至关重要 。 除非你愿意花更多的时间和金钱在调试和质量保证上 , 否则它必须很容易理解 。 Python的设计重用远远超过了C/C++ , 在当今的敏捷环境中 , 设计重用是保持领先还是落后于竞争对手的区别 。
嵌入式算法变得越来越复杂 。 简单的控制循环正被神经网络和其他帮助Python站稳脚跟的复杂过程所取代 。 虽然Theano主要是用C/C++编写的 , 但Python用于以人性化的方式与高性能库进行接口 。 Python库正在蓬勃发展PyPI , Python包索引 , 有超过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开发参数和其他分析数据的方法 。