从两个方面来分析这个问题
1. 编译型语言与解释型语言(C/C++与python的比较)
-
python是一种解释型语言,所谓解释型语言,就是代码并不会一次性将整个程序转换成机器码运行,而是由解释器逐行解释逐行执行,所以,从效率角度上考虑,自然就会比编译型语言差一些。
-
C/C++是编译型语言,先将整个程序编译链接成可执行程序之后才会执行,所以,执行效率就会高效。
2. 托管与非托管(C/C++与C#, Java的比较)
-
C#属于托管语言。所谓托管语言是指代码在运行时是受CLR(Common Language Runtime)管理和控制的。同理,所谓托管代码,就是由CLR来管理和执行的代码。CLR来负责处理内存管理,垃圾回收,安全性等问题。具体而言,C#编写的代码在编译之后会转换为中间语言(IL)代码,也就是托管代码,然后这些代码由CLR来加载和运行。C#语言要想跨平台运行,对应的平台上需要有对应的CLR。
-
同理,Java也是一种托管语言,只不过它是在JVM(Java虚拟机)运行的,要想编写的代码能够跨平台运行,对应的平台需要支持JVM的使用。
-
C/C++属于是非托管语言,它是不受CLR(Common Language Runtime)管理和控制的,可以直接加载到系统内核运行,来操作计算机系统资源和硬件资源,但是对于内存和资源的分配以及释放需要开发人员手动处理,同时也更容易出现内存的泄露和安全问题。