这是一个可有可无的小目录
编译型语言和解释性语言
编译型语言:编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,也就是生成一个.exe的文件,下次再运行,便不需要再进行编译,直接运行exe文件即可,有着运行速度快,消耗内存少的优点。适合开发数据库,操作系统等对速度有较高要求的东西。
但是编译型语言编写的可执行的代码要比相同的解释型代码大许多,而且编译型语言的代码可以访问你电脑的任何一个地方,所以有很多病毒就是使用编译型语音编写的。而且由于编译型语言松散的安全性和平台依赖性,并不太适合开发因特网或者基于Web的应用。
解释型语言:解释型语言就是在运行的时候再将程序翻译成机器语言,相当于有了图纸,用的时候再去制造,虽然相较于编译型语言在速度与内存占用方面并不占优,但解释型语言提供了极佳的调试支持,你可以很快的发现问题所在,然后对“图纸”进行修改。而且解释器比编译器容易实现,中间语言的代码也比编译型要小。其平台的独立性,以及严密的安全性使得解释型语言在互联网和web方面备受青睐。
动态类型语言与静态类型语言
动态型语言:只在程序运行期间才去进行数据类型检查,也就是说数据类型是代码运行的时候才确定的。比如:JavaScript,php等语言。因为只有运行时才去确定变量类型,所以动态型语言给我们实际的编码带来了很大的灵活性,相对简单,但也可能因此而在代码运行时出现与类型相关的错误。
静态型语言:代码运行之前就做数据类型检查,也就是说在运行前数据类型就已经确定了。比如:C、C++、C#、object-c、JAVA等语言。因为在先前就明确了变量的类型,所以编译器可以针对这些信息对程序做出一些优化,从而提高程序执行的速度,而且可以避免一些变量类型相关的错误,但在写代码时要格外注意变量的类型,而且过多的类型声明会增加更多的代码。
强类型语言与弱类型语言
强类型语言:强制数据类型定义的语言。也就是说当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化),那么它就永远都是这个类型。不同类型相加会引起报错。强类型语言的严谨性能够有效的避免许多错误。强类型定义语言是类型安全的语言。
弱类型语言:数据类型可以被忽略的语言。你想把一个变量当做什么类型就当做什么类型,解析器会自动(隐式)转换,使用起来较为简单,更灵活多变。但进行隐式转换会消耗性能,占用跟多内存,而且可能会出行有违本意的事情,可能会出现一些错误。
参考资料
编译型语言与解释型语言的优缺点
静态类型的语言和动态类型语言的区别
动态类型语言和静态类型语言的区别以及优缺点
静态和动态类型编程语言的区别
强类型语言和弱类型语言
JavaScript是一种弱类型语言,有什么优点和缺点