由Python谈及编程语言的分类

程序员之中有个永恒的争论话题,什么才是最好的编程语言?我觉得答案不是重点,而每个程序员使用的什么语言也没那么值得关注,重要的是每种语言的特点和精华,一种语言的面世和普及必然有它的道理,理解它存在的意义才是我们值得关注的。

我自己用python比较多,我觉得它算是我的老友了,所以想先谈谈这位老朋友值得展开的特点和存在意义。

python在编程语言中的分类

1.谈及语言分类,我们先会想到:动态类型和静态类型语言。
动态类型:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,python就是动态类型语言。运行期进行类型检查还可以继续展开,不指定变量的数据类型还是很方便的。
静态类型:类型检查发生在编译期,也就是说我们需要提前指定变量的数据类型。C/C++/Java就是

2.还有强类型语言和弱类型语言
强类型:不经过强制转换,永远是那个数据类型,如果你double a, 你又int b = a,这个无法编译。Java/python都是强类型语言
弱类型:允许编译器进行隐式的类型转换,如C/C++
看到有博文说,判断是不是强类型,只需要看不同类型的数据相加是否报错,比如整形+字符串报类型错误,就是强类型。
对比一下:
弱类型:a=0 b=a+‘s’ //vbs, 自动转换
强类型:int a = 0; string b=a.tostring()+“s”; //c#

3.还有解释型语言和编译型语言
计算机是无法理解我们编写好的高级语言的,我们需要编译器将它翻译成机器语言,翻译只有两种方式,解释和编译,所以我们把编程语言可以更具翻译的方式来分类。

解释型语言少了编译的步骤,只有在运行的时候才会翻译,每执行一次翻译一次,所以效率会比较低。比如python。可移植性好。

编译型语言是编译的时候直接形成了系统的可执行文件,比如C++和C可直接编译成可执行文件.exe,下次运行时就不需要重新编译了,直接使用编译的结果(.exe),这样只翻译了一次,效率高!

举个例子,你只懂英文,但想看一本俄文书(俄文类比我们编程用的高级语言),于是你请了个翻译(解释器或者编译器)想把这本俄文书翻译成英文(类比于机器能读懂的机器代码),有两种翻译方法如下:
编译型语言:一种是翻译帮你把整本书翻译下来写成一本英文译本(二进制代码),每当你想看这本书你就看英文译本就好了,看的快。
解释型语言:另一种是你想读那块地方时翻译会翻哪儿解释给你听,但你每次想重读的时候都需要重新翻译一遍。这个速度就没有看英文快了。

进一步地说
我们还一种说法是把python叫做脚本语言,为什么叫脚本语言,这源于Unix系统,目的是让其像按照剧本一样做事,英文中脚本就是剧本的意思。
而脚本语言的优势,在于它事先不用编译,我们看编译型语言如C语言,将代码编译成二进制码,执行时读取很快(我只要吃过一次苦,以后我都可以享受我那次编译吃的苦形成的二进制码),但是编译的过程,和硬盘的关系特别大,这就造成了编译型语言可移植性比较差。
脚本语言,事先不需要进行编译,直接读取文本文件,如 .py,一边解释一遍执行。但是每次执行都需要消耗解释的时间,所以执行速度会比编译型语言慢些。

最后总结

1.动态语言:不需要给变量指定数据类型
2.强类型语言:变量被指定了数据类型后,若不经过强制转换(类似.tostring()),你永远都是那个数据类型啦,1+‘a’是不会妥协通过的
3.为什么有翻译的过程,因为计算机只读得懂二进制代码,而我们人类写的是高级语言。解释型语言少了编译的环节,每次执行都吃编译的苦。编译型语言吃一次苦,以后每次执行可以直接拿翻译好的二进制代码来用

阅读更多

没有更多推荐了,返回首页