一、什么是编译性语言
(1) 编译性语言就是对源代码直接进行一次的编译成为机器语言的文件,比如exe文件。因此后面的执行无须重新编译,直接使用之前的编译结果就可以。编译性语言在执行效率上会普遍较高。
(2) 虽然执行效率较高,但是更依赖编译器。所以跨平台性差一些。
(3)编译性语言代表:C/C++/Delphi。
二、什么是解释性语言
(1) 程序不需要编译,程序在运行时才翻译成机器语言(先翻译成中间代码再翻译成机器语言),每执行一次都要翻译一次。因此效率比较低。
(2) 虽然运行效率较低,但是跨平台性好。
(3) 解释性语言代表:Python/JavaScript / Perl /Shell。
三、比较
编译性语言与解释性语言,前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统/大型应用程序/数据库系统等时都采用它,像C/C++/Delphi等都是编译语言,而一些网页脚本/服务器脚本及辅助开发接口这样的对速度要求不高/对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java/JavaScript/Python/MATLAB等等。
一、动态类型语言
不需要直接定义变量的类型,其变量类型要到程序运行的时候,待变量被赋了某个值才能知道其类型。如:Python/Ruby。
二、静态类型语言
变量需要在编译之前就要定义。即在编译之前就要定义好变量的类型,这样编译才能将源代码转化成目标代码。如:C/C++/Java。
三、比较
静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读/不清晰明了。动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。
一、强类型语言
强类型语言其实就是一种强制类型定义的语言。只要一个变量被定义了一个类型,如果不经过强制性转化,那么它就一直是这个被定义的类型。强类型语言包括:Java/.NET/C/C++。
例如:一个变量的类型为整数,如果你不进行强制转化,那么它是不会变成字符串的。
二、弱类型语言
弱类型语言与强类型语言相反。如某一个变量被定义为一个类型,但是这个变量可以根据环境需要而转变为其他的类型,不需要经过强制性转换。弱类型语言包括:vb/PHP/javascript。
三、比较
强类型语言在速度上会稍微比弱类型语言慢,但是由于强类型语言的强制性,所以可以避免很多不必要的错误。