python和C++比较 下载本文

内容发布更新时间 : 2024/5/3 11:21:02星期一 下面是文章的全部内容请认真阅读。

The Difference Between Python and C++

摘要:

经过半个学期的程序设计语言原理的学习,根据本人课外所学的python和课程所

学的C++编程语言,本人进行了粗略的对比,分别从二者的运行效率,执行方式,基本语法其中对二者关于面向对象中使用类的方法进行了个人观点的阐述。对于当今几种比较流行的编程语言,比较其中的不同点有助于帮助我们更加深刻的理解语言与语言之中的差异,一切为了更好的学习。

关键字:python,C++,运行效率,执行方式,面向对象,类,差异

语言介绍:

C++融合了3中不同的编程传统:C语言代表的过程性传统、C++在C语言基础上添加的类代表的面向对象语言的传统以及C++模板支持的通用编程传统。在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。为了应付C语言所面临的挑战,OOP提供了一种试图让语言来满足问题要求的一种新方法,其理念是设计与问题的本质特性相对应的数据格式。OOP程序设计方法首先设计类,它准确地描述了程序要处理的信息,这种技术涉及到许多新概念,如对象、类、封装、继承、多态等。C++诞生于贝尔实验室,由Bjarne Stroustrup于20世纪80年代开发出来,“C++主要是为了我的朋友和我不必再使用汇编语言、C语言或其它现代高级语言来编程而设计的。它的主要功能是可以方便地编写出好程序,让每个程序员更加快乐。”

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。 python是一种脚本语言,写好了就可以直接运行,省去了编译链接的麻烦,对于需要多动手实践的初学者而言,也就是少了出错的机会。而且python还有一种交互的方式,如果是一段简单的小程序,连编辑器都可以省了,直接敲进去就能运行。用缩进来表示程序的嵌套关系可谓是一种创举,把过去软性的编程风格升级为硬性的语法规定。再不需要在不同

的风格间选择、再不需要为不同的风格争执。python中没有各种隐晦的缩写,不需要去强记各种奇怪的符号的含义。python写的程序很容易懂,这是不少人的共识。python是一种功能丰富的语言,它拥有一个强大的基本类库和数量众多的第三方扩展。python为程序员提供了丰富的基本功能使得人们写程序时用不着一切最底层做起。

运行效率

1、运行效率:C++远大于python。python代码和C++代码最终都会转化成CPU指令执行,但一般情况下,python最终转换出来的CPU指令的量会比C++ 多好几倍。首先,python的东西比C++多,经过了更多层,python中甚至连数字都是对象。其次,python是解释执行的,和物理机CPU之间多了解释器这一层,而C++是编译执行的,直接就是机器码,编译的时候编译器还可以进行一些适当的优化。所以运行效率上C++远远优于python。

2、开发效率:python 远大于 C++。有时候针对某一要求的实现,python的代码量是几行,而C++可能是超过百行。其中的一个例子就是用C++解析Json,也许对于一个比较资深的程序员猿都要调试个好几天,说不定调好了又造成内存泄漏。但是如果你用python的话,只需要import json然后进行操作,开发效率大大提高。所以从开发效率上,python要优于C++,正如俗话所说:\人生苦短,我用Python\。

执行方式

在我看来python和C++最大的不同在于两者的执行方式:python是解释执行而C++是编译执行的。

一般的认为,程序有两种执行方式:解释执行和编译执行。 解释程序:

解释程序是一种高级语言翻译程序,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。这种特性非常适合于用户通过终端设备与计算机会话,比如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。虽然这样子很方便,但是解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。 编译程序:

编译程序是一种很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)的源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。编译程序工作时,先进行词法分析和语法分析,然后进行代码优化,存储分配和代码生成,最终得到目标程序。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或多项任务或者一项任务分散到几次扫描。就像咱们矿大的编译课程所学:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。

综上所示,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。

PYTHON是一种脚本语言,是解释执行的,不需要经过编译,能够很好地实现跨平台,适用于一些小工具小程序的开发。相比之下,C++则是一种编译后运行的语言,在特定的机

器上编译后在特定的机器上运行,运行效率高,安全稳定,但编译后的C++程序一般是不跨平台的。

在我看来,学习一种编程语言不能根据现在的热度,而是要根据它在某个领域的作用。就像汇编、VB,虽然现在似乎不能顺应时代的发展潮流,但是它在某些行业内还是有出色的一面。就目前而言,随着人工智能的发展,python渐渐成为潮流,在我看来,python确实非常强大,但在三五年内,不会作为一种主流的编程语言。例如在Windows程序开发领域内,还是C#、C++独占鳌头。我们不能盲目的夸赞一门编程语言而去贬低其他的编程语言,正所谓存在即合理,我们应该客观、辨证的看待这些编程语言并学会认真的学好程序设计原理,便于今后的发展顺应社会的潮流。简而言之,在实际应用中,对于需要经常使用的有大量计算的大型题目,采用速度较快的编译型的高级语言较好,如C++,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的高级语言,如python,这样可以大大缩短编程及调试的时间,提高工作效率,节省时间的同时体验编程的乐趣。这里不得不说咱们矿大的课程安排甚是合理,让我们学生一开始就学习了C++,这为我们学习其他语言打下了坚实的基础,感觉分分钟就能上手任意一门其他的编程的语言。

接下来将从类的角度比较python和C++的不同: (1)关于构建类的语法方面:

C++构建类的例子: class XZQ{ public:

int num;

void test() {

std::cout << num << endl; } };

XZQ a;

a.num = 20; a.test();

输出结果为20,简单的分析程序:A类只有一个数据成员num和一个test函数用于输出num的值。

深层次的分析:当我们以实例对象XZQ调用test成员函数的时候,这个函数内部是通过this指针找到num,也就是说当执行test这段函数的代码的时候通过this指针找到这个和a对象绑定的num。

c++的编译器会将上述的代码加工出现以下的半成品: class XZQ{ public:

int num;

void test(this) {

std::cout << this->num << endl; } };

XZQ a;

a.num = 100;