Python和C语言的区别
如果说最近最火的语言和最古老的语言碰撞会产生什么样的火花呢?在刚刚上大学的小伙伴肯定是有这样的疑问,C语言作为比较古老和底层的语言,一般是作为大学生的必修课,也是计算机课程的第一课,而Python作为高级语言,随着这几年的机器学习、人工智能彻底火出圈了,外行的人也知道Python很牛,那么这最古老的语言和最火的语言之间的区别是什么呢?我们应该如何选择最适合自己的语言呢?
一、语言类型不同
C语言是比较古老的语言,并没有太多高级语言的特性,在语言类型上他属于编译型语言,何为编译型语言,编译型语言就是经过了软件的编译后,生成机器码,然后再由计算机操作系统去运行,他的优点就是执行速度很快,因为他是最接近计算机底层的语言,和计算机交互的时候,效率是很高的,他的缺点就是由于依赖底层的操作系统,所以并不能跨平台,无法做到一处代码,处处编译,他一般用于操作系统或者是驱动等底层的开发,是大学计算机的必修课。而Python或者Java这种属于高级语言,Java是属于解释型语言,但是Python好像介于两者之间,界限并不是划分的特别明显,但是他总体来说属于解释型语言,因为他有一个虚拟机,这个虚拟机就导致了Python可以跨平台,无论是哪个操作系统,只要你在有虚拟机的操作系统就可以运行Python代码,所以Python跟适合做软件的开发。
二、数据类型的不同
我们用一张图概括了C语言的数据类类型、构造类型、指针类型、空类型,C语言在定义变量的时候一定要先声明变量的类型,告诉计算机,我是一个什么类型,然后计算机就会在内存中开辟对应的内存空间,我们以整型为例,计算机会在内存中开辟4个字节的空间,这个空间主要用于初始化,由于在一开始我们就制定了长度,所以我们在运算的时候需要格外小心,需要考虑到内存是否够用等溢出问题。
我们再来看看Python的数据类型,可以发现大体上没有太大的区别,,Python封装了一些高级的数据类型,比如元组、字典等,Python对比C语言最大的优势在于定义变量的时候不需要事先声明变量的类型,比如我们定义一个整型变量age=18,首先计算机会是在内存中开辟一块内存来存储18,然后将age指向18,变量age是没有类型之分的,这样做的就比较友好了,我们不需要考虑变量的类型,也就无需考虑在运算过程中是否会溢出的问题。
三、便利性的不同
Python语言之所能够火出圈,最大的原因还是因为他简单,Python语言简便的语法和丰富的类库让很多零基础的小白感受到了开发的魔力,Python有很多很强大的内置函数,我们只需要在需要用到的时候import,这些丰富的类库在Python中称为模块,像OS模块、time模块、random模块等基础模块,我们可以使用一行甚至几行代码就可以实现C语言几百行的效果。而Python这么多模块之间也有弊端,那就是模块之间的引用问题,会出现各种报错,一般管理模块之间的关系我们可以使用pip来便捷管理。
反观C语言,他由于出生的时间比较早,没有强大的类库,导致我们很多的时候很多基础类库需要自己写,我们在学习C语言的时候还记得需要引用很长一串头文件,这些原因都是制约C语言发展的原因。不过C语言的这个特性可以让开发者开发出更适合性能更高的一些内置函数。
四、编程思维的不同
C语言和Python另一个本质的区别就是编程的思维不同,简单来说就是C语言是面向过程的语言,而Python是面向对象的语言。
面向过程强调的是我该怎么去做。即功能的执行过程,即先干啥,后干啥。在面向过程中,我们会写很多的函数,每一个函数负责完成某一个功能,而向过程的设计思想存在以下几个缺陷:系统软件适应性差,可拓展性差,维护性低。
面向对象的一种思维方式是对面向过程的一种改进,作为新式的编程思想,是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是我该让谁来做。想吃饭让阿姨做,想写代码雇佣程序员,不需要自己手动去做。面向对象最小的程序单元是类,必须先存在类的定义,再有对象,而具备某种功能的实体,称为对象。
面向过程和面向对象各有千秋,面向对象更符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性,他有三大特征:继承、封装、多态。
五、其他的不同
Python和C还有其他的不同,主要体现在开发的舒适度,在学习Python的时候,我们可以使用Python自带的图形化界面来编程,有点类似Linux的界面,这种界面交互性良好,使用简单的命令就可以进入和退出,进一步降低了学习成本,而C语言的编译器屈指可数,最开始使用的是Dev-C++这种交互性极差,UI极具年代感的产品,接着是微软的Microsoft Visual studio虽然在功能和交互上进行了升级,但是还是感觉有年代感,不如Python那么智能。说到Python就不得不提PyCharm,这种交互性极好UI美观的产品真的是会让人爱上编程,虽然他很吃内存,但是我们也可以使用VsCode这种轻量级的产品。
此外,Python通过缩进来表示语句,减少了不必要的代码,提高了可读性和舒适度,让代码看起来更加美观,而C语言是使用{},这些小的语法的区别都彰显了Python语言的高级特性。
总结
以上说了那么多Python和C的不同,总结来说就是C语言是很基础的语言,就好比我们在小学的时候学习的加减乘除,是为以后学习解一元二次方程、椭圆方程等高级题目做准备的,学C语言也一样,是基础,是我们入门编程的第一课,让我们体会到什么是变量、什么是方法、函数,所以我认为C语言更适合做入门的语言。
而Python作为高级语言,吸收了C语言的一些好的地方,同时改进了C语言的不足,取其精华去其糟粕,所以让Python变得更加智能,虽然代码量少了,更简单了,但是程序员不是工具人,是魔术师,我们需要去了解底层才能让我们走的更远更高。