三组概念的区分|编译型语言与解释型语言|动态类型语言与静态类型语言|强类型语言与弱类型语言
三组概念的区分
小白第一次写博客,如有错误,还请指正!谢谢!
一、编译型语言与解释型语言
其实计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其翻译成机器语言。而翻译的方式有两种,一个是编译,一个是解释。两种方式最大的区别就是翻译的时间不同。
编译型语言: 使用专门的编译器,针对特定的平台,将高级语言源代码一次性编译成机器语言,之后就可以直接运行这个编译后的“可执行文件”。值得注意的是,若以后还需要再运行时,直接使用原编译结果即可。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
解释型语言: 使用一个解释器对于程序的代码按句“翻译”成机器语言来逐句执行。由于解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序,这样则方便源程序移植。不过由于每次都需要进行解释,导致解释型语言执行效率较低。
二、动态类型语言和静态类型语言
静态和动态是针对变量的数据类型而言的,故两者最大的区别是变量类型确定的时间不同。
动态类型语言: 其变量类型要到程序运行的时候,待变量被赋了某个值才能知道其类型。虽然代码运行期间有可能会发生与类型相关的错误,但给实际的编码还是带来了很大的灵活性,使得我们只关注对象的行为,而不关注对象本身。
静态类型语言: 在代码被编译时变量的类型便已确定了。先前明确了变量的类型,编译器可以针对这些信息对程序做出一些优化,从而提高程序执行的速度。
三、强类型语言与弱类型语言
强类型语言: 一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
弱类型语言: 数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
在网上查阅资料时,看到了下面这个图,感觉很不错就也放上来一下。
注:所有资料参照自其他****博主和知乎,侵删。