编译型与解释型,动态类型与静态类型,强类型与弱类型语言的区分
编译型语言与解释型语言
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。
编译型语言
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
就像一个不会英语的中国人,只能拿着翻译好的才能看懂,在理解内容时会更加迅速,但需要提前翻译好。
解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
就像一个会英语的中国人,可以直接拿着英文就理解内容,更加灵活,但在理解时速度就会慢一些。
强类型语言因为在编译时灵活度较差,更加死板,所以不会在程序执行时有错误;而弱类型语言在编译时有更多的默认转化,使得编译速度更快,但在检测错误时也更不易被发现,所以在程序执行时可能会有错误。
动态类型语言与静态类型语言的区别可以类比:一个人在完成事情时,如果在计划时就一丝不苟,没有任何错误,那就是“静态类型”;而他在计划时只是想了一个大概,在行动的时候再把细节和错误一一补齐,那就是“动态类型”。