1 为什么需要多语言联合编程?
在大型工程项目中,经常会遇到多语言联合编程的情况,举个例子:
在一个远端控制系统中,前端Web使用html+css+js;后端采用python-flask作为服务端,底层控制采用C/C++
这是因为不同编程语言有各自的适用场景和语法特性,联合编程可使得各种语言发挥自己的特长。本文主要比较Python和C++,先列举各自特点如下:
对比项目 | C++ | Python |
---|---|---|
本质 | 编译型语言 | 解释型语言 |
编程难度 | 难以掌握 | 易于上手 |
语法特性 | 静态 | 动态 |
垃圾回收 | 不支持 | 支持 |
安装 | 易 | 难(需要专门打包) |
数据类型 | 在编译时由关键字确定 | 在运行时由数值确定 |
函数 | 输入参数和返回值类型有限制 | 输入参数和返回值类型无限制 |
执行速度 | 快 | 慢 |
性能 | 高 | 低 |
国外有一个测试指出在相同复杂度算法中,C++约比Python快50倍左右。因此Python不适合用于底层算法的开发,应用在上层应用中作粘合剂或进行智能领域的研究比较占优;C/C++则适合用于底层控制算法编程。下面主要介绍Python调用C++,让C++和Python形成优势互补。
2 Python调用C++的主要方式
主要介绍三种C++/Python联合编程的方式:
2.1 SWIG
- 支持Python、Java、Ruby等语言调用C接口
- 文档全面,易于学习
- 绑定性能欠佳, 不支持属性和内部类封装
- C++支持不好