根据网络上的学习,对此作出如下解释:
1.关于“编译型语言”和“解释性语言”
区别1:编译型是要全部写完之后,然后通过某个特定的编译器,去生成一个二进制文件,然后需要认为点击这个文件才看的到效果;解释型语言则不需要这个过程,而是直接发出效果。
区别2:运行的时候是否需要编译器。编译型语言运行的是最终的二进制代码了,所以不在需要编译器,直接点击运行即可。但解释型语言则不然,它是边解释、边运行,所以运行的时候很可能还有部分代码没有解释好,所以需要编译器。
区别3:运行速度有所区别。编译型语言由于运行的已经是完全的二进制内容了,所以运行起来很快。但解释型语言,运行的不一定是完全的二进制内容,因为它是边解释成二进制边运行。
区别4:可移植性对比。编译型语言是运行二进制内容,所以一旦CPU指令系统改变,之前的二进制文件可能运行不了,可移植性差;而解释型语言则不然。它并没有实现弄成什么二进制内容,而是在需要的时候才开始编译、运行。所以可移植性较高。
区别5:升级上对比。编译型语言弄出来的二进制文件如果要升级,自然要重新下载一个新的二进制文件了。所以重新下载,安装,覆盖是最大的特点;而解释型的语言,只要重新写好源代码即可。用户提要到最新效果,只要刷新一下即可。所以体验性好。
2.关于“动态类型语言”和“静态类型语言”
动态语言和静态语言最大的区别,在于可读性、可维护性的不同。
在动态语言中,程序语句中会出现一些特殊的符号或者表示方式,他们指的是同类对象,但是具有广泛性,可以指代任何事物。
而在静态语言中,程序语句所有的名词、符号所指代的对象都是确定的,可以避免歧义,增强可读性。
所以,为了解决这个问题,动态语言就需要靠加注释,来弥补自身可维护性的不足。但可能会照成所需要注释的文字量,超过了代码量本身。
动态语言存在的的第二个问题,就是容易产生BUG,并且很难在第一时间发现。
当静态语句中,存在对象错误时,IDE会第一时间报错,但是对于动态语句,由于所指代对象的广泛性,可能会照成其他结果存在的情况,因此不会报错。但这并不满足题目的要求,如果不排除这些错误,程序就无法继续顺利编写下去。
3.关于“强类型语言”与“弱类型语言”
强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。而弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过现行强制转换。
强类型语言和弱类型原因其判断的根本是是否会隐形进行语言类型转变。强类型原因在速度上可能略逊于弱类型语言,但是强类型定义语带来的严谨性又避免了不必要的错误。
[1]:https://zhuanlan.zhihu.com/p/26302914
[2]:https://www.zhihu.com/question/316509027/answer/627889515
[3]:https://zhuanlan.zhihu.com/p/62570358