您好,登录后才能下订单哦!
编程语言主要由以下几种分类方法:
1、编译型和解释型
2、静态语言和动态语言
3、强类型定义语言和弱类型定义语言
第一种划分方法是,编译型和解释型:
之所以这么划分,是因为计算机不能直接理解高级语言,仅仅能直接理解机器语言(相对来说比较低级),所以必需要把高级语言翻译成机器语言,计算机才能运行高级语言编写的程序。翻译的方式有两种,一种叫做编译,另一种叫做解释。
编译型:
编译型语言和汇编语言是一样的,也是一个负责翻译的程序来对我们的源码进行转换,生成相应的可执行代码,这个过程称为编译(compile),负责编译的程序称为编译器(compiler)。如果我们写的程序代码都包含在一个源文件中,那么编译之后就会直接生成一个可执行的文件,我们就可以直接运行了。但是对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时,就会生成目标文件(object files),而不是前面所说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上是可执行代码了,但对于整个项目来说,只是一部分,所以还不能直接运行。只有等待所有的源文件都编译完成,我们就可以把这些半成品的目标文件打包成一个可执行文件,这个工作由另一个程序完成,这个过程是把包含可执行代码的目标文件连接装配起来,所以又称为链接(link),负责这个步骤的程序叫做链接程序(linker)。链接程序除了目标文件之外,可能还有各种资源,如图形文件、声音文件等,还负责去除目标文件之间的冗余重复代码等,所以也很累。链接完成之后,一般就可以得到我们想要的可执行文件了。
简单来说,编译型语言写的程序执行之前,已经把程序编译好了,比方exe文件,以后要执行的话就不用又一次翻译了。直接使用编译的结果即可了(exe文件),由于翻译仅仅做了一次,执行时不须要翻译,所以编译型语言的程序执行效率高。
解释型:
编译型程序,是一次把所有的代码转换成机器语言,然后写成可执行文件;而解释型程序,是每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总而言之,就是不断的解释、执行、解释、执行,所以,解释型代码是离不开解释程序的。解释型程序中,由于程序总是以源代码的形式出现,因此只要有相应的解释器,移植几乎不成问题。编译型程序也可以移植,但是针对不同系统,必须分别重新编译,对于复杂工程来说,非常耗费时间。但解释型程序因为一边解释,一边执行,因此速度比编译型程序要慢上好多,几百倍也不足为奇。
简单来说,解释性语言的程序在执行程序的时候才翻译,边执行边翻译。
总结:
编译型由于速度快,因此对系统要求较低,开发操作系统、数据库和大型应用等都使用它,比如C/C++、Pascal/Delphi、VB等都是编译语言。而一些网页脚本、服务器脚本和辅助开发接口等对速度要求不高,对不同系统平台兼容性有要求的一般使用解释型语言,如Java、JavaScript、VBScript、Perl、Python等。
打个比方,有一本英文书你想看,但是你又不懂英语,于是乎请来一位资深翻译。这位资深翻译可以从头到底给你一口气全部翻译完,然后把中文版的书交给你阅读,这种就是编译型的方式来处理。而这位资深翻译可以翻译一个章节后,你可以阅读翻译完的这个章节,之后这位资深翻译继续翻译下面的章节,翻译完毕后,你才能再读接下去的章节,但是当你想回看之前的章节,那么必须由这名翻译再次翻译一下这个你想再次看的章节,等待翻译完毕后,你才能再次阅读这个章节,这种就是解释型的方式来处理。
第二种划分方法是根据变量是否必须赋值来定义的,分为动态类型语言和静态类型语言:
动态类型语言:
动态类型语言是指在运行期间采取做数据类型检查的语言。也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其它的各种脚本语言如VBScript也多少属于动态类型语言。
静态类型语言:
静态类型语言刚好和动态类型语言相反,它的数据类型是在编译期间去检查的,也就是说在写程序时,是需要声明变量的数据类型的,如C/C++就是典型的例子,其它的还有C#、Java等。
第三种划分方法是依据变量是否需要强制转换来划分的(这关系到程序语言的安全性和运行速度),分为强类型定义语言和弱类型定义语言:
强类型定义语言:
是指强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就是永远这个数据类型了。比如说,如果定义了整型变量a,那么程序就不会把a当做字符串类型处理了。强类型定义语言是类型安全的语言。
弱类型定义语言:
数据类型可以被忽略的语言。一个变量可以被赋予不同数据类型的值。
总结:
强类型语言运行速度慢于弱类型语言,但是强类型定义语言更安全,Python是强类型定义语言。另外,一门语言是不是动态语言和是不是强类型定义语言没有任何关系。
由此得出结论,Python是一门解释型的动态强类型定义语言。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。